커뮤니티
답변감사드리며 재차 질문 드립니다.
2011-11-03 16:51:53
377
글번호 44448
이전 질문에 답변해주신것을 토대로 진입 코딩을 하니
제가 원하던대로 진입을 합니다. 감사합니다. 코딩내용은 아래와 같습니다.
if (data2(iff(OpenD(0)>100,1,0))+
data3(iff(OpenD(0)>100,1,0))+
data4(iff(OpenD(0)>100,1,0))+
data5(iff(OpenD(0)>100,1,0)))>0 Then { #참조종목중 하나의 시가가 100을 넘으면
if data2(iff((CrossDown(close,100),1,0))+
data3(iff((CrossDown(close,100),1,0))+
data4(iff((CrossDown(close,100),1,0))+
data5(iff((CrossDown(close,100),1,0)) Then #참조종목중 하나의 종가가 100을 하향하면
buy("a");
}
그런데 문제는 청산인데요...
if IsEnteryName("a") Then{
if data2(iff((CrossUp(close,100),1,0))+
data3(iff((CrossUp(close,100),1,0))+
data4(iff((CrossUp(close,100),1,0))+
data5(iff((CrossUp(close,100),1,0)) Then
exitlong();
}
예를들어, 참조종목중 Data3의 종가가 100을 하향하여 진입을 하였는데 상기 코딩대로 청산을 한다면 Data3 외의 다른 참조종목의 종가가 100을 상향
해버리더라도 청산하게 됩니다. 곤란한 경우가 되는데요..
참조종목중 data3 가 100을 하향하여 진입을 한경우라면 data3를 기준으로 진입한걸
기억하고, 청산은 다른 참조종목의 종가를 참조하지 않고 data3의 종가가 100을
상향돌파하면 청산하는 식을 구현하고 싶습니다. 다시한번 도움 부탁드립니다.
미리 감사드립니다. 수고하세요~
답변 1
예스스탁 예스스탁 답변
2011-11-03 17:25:47
안녕하세요
예스스탁입니다.
조건별로 매수진입을 나누어 그 진입명을 사용해
컨트롤 하시면 됩니다.
if (data2(iff(OpenD(0)>100,1,0))+
data3(iff(OpenD(0)>100,1,0))+
data4(iff(OpenD(0)>100,1,0))+
data5(iff(OpenD(0)>100,1,0)))>0 Then { #참조종목중 하나의 시가가 100을 넘으면
if data2(CrossDown(close,100)) Then
buy("a2");
if data3(CrossDown(close,100)) Then
buy("a3");
if data4(CrossDown(close,100)) Then
buy("a4");
if data5(CrossDown(close,100)) Then
buy("a5");
}
if MarketPosition == 1 Then{
if IsEntryName("a2") and data2(CrossUp(close,100)) Then
exitlong("b2x");
if IsEntryName("a3") and data3(CrossUp(close,100)) Then
exitlong("b3x");
if IsEntryName("a4") and data4(CrossUp(close,100)) Then
exitlong("b4x");
if IsEntryName("a5") and data5(CrossUp(close,100)) Then
exitlong("b5x");
}
즐거운 하루되세요
> 데이비슨 님이 쓴 글입니다.
> 제목 : 답변감사드리며 재차 질문 드립니다.
> 이전 질문에 답변해주신것을 토대로 진입 코딩을 하니
제가 원하던대로 진입을 합니다. 감사합니다. 코딩내용은 아래와 같습니다.
if (data2(iff(OpenD(0)>100,1,0))+
data3(iff(OpenD(0)>100,1,0))+
data4(iff(OpenD(0)>100,1,0))+
data5(iff(OpenD(0)>100,1,0)))>0 Then { #참조종목중 하나의 시가가 100을 넘으면
if data2(iff((CrossDown(close,100),1,0))+
data3(iff((CrossDown(close,100),1,0))+
data4(iff((CrossDown(close,100),1,0))+
data5(iff((CrossDown(close,100),1,0)) Then #참조종목중 하나의 종가가 100을 하향하면
buy("a");
}
그런데 문제는 청산인데요...
if IsEnteryName("a") Then{
if data2(iff((CrossUp(close,100),1,0))+
data3(iff((CrossUp(close,100),1,0))+
data4(iff((CrossUp(close,100),1,0))+
data5(iff((CrossUp(close,100),1,0)) Then
exitlong();
}
예를들어, 참조종목중 Data3의 종가가 100을 하향하여 진입을 하였는데 상기 코딩대로 청산을 한다면 Data3 외의 다른 참조종목의 종가가 100을 상향
해버리더라도 청산하게 됩니다. 곤란한 경우가 되는데요..
참조종목중 data3 가 100을 하향하여 진입을 한경우라면 data3를 기준으로 진입한걸
기억하고, 청산은 다른 참조종목의 종가를 참조하지 않고 data3의 종가가 100을
상향돌파하면 청산하는 식을 구현하고 싶습니다. 다시한번 도움 부탁드립니다.
미리 감사드립니다. 수고하세요~