커뮤니티

답변감사드리며 재차 질문 드립니다.

프로필 이미지
데이비슨
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을 상향돌파하면 청산하는 식을 구현하고 싶습니다. 다시한번 도움 부탁드립니다. 미리 감사드립니다. 수고하세요~