커뮤니티

수식 질문입니다.

프로필 이미지
회원
2013-04-10 13:22:41
138
글번호 61880
답변완료
선물관련 프로그램을 일정조건에 따라 state를 구별하여 작성하고자 합니다. 예를들어 50ma를 상향돌파하면 state 1로 진입하고, 40ma를 하향돌파하면 state 2로 진입을 합니다. 그리고 나서 state 1에 진입한 상태에서 또다시 30ma를 상향돌파하면 추가1계약 매수, ma10을 하양돌파하면 일괄매수청산. state 2에 진입한 상태에서 다시 20ma를 하향돌파하면 추가1계약 매도, ma5를 상향돌파하면 일괄매도청산. 이런 식을 만들려고 합니다. 이런식으로 state별로 다르게 코딩을 하고자 하는데, if문을 써서 해보았는데 잘 안되네요. 이를테면 input : state(0); if crossup(c, ma50) then { buy("b1", atmarket, 1); state == 1;} if state == 1 then { 어쩌고저쩌고 코딩} 이런 방식을 써보았는데 if state 이하가 실제에서는 적용이 안되네요. 어떤 방식을 사용해야지 제가 임의로 나눈 조건별로 코딩이 가능할까요? 두서없는 질문이지만 답변 부탁드립니다.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2013-04-10 18:25:41

안녕하세요 예스스탁입니다. 해당 내용은 변수보다는 진입명을 이용해서 진입을 누적하시는 식으로 작성하셔야 합니다. 아래식 참고하시기 바랍니다. 변수값은 신호의 발생이 아닌 if조건만 만족하면 값이 변경이 되므로 매수가 들어가 있는 상태에서 다른 조건이 만족하거나 하면 신호와는 무관하게 값이 변경이 될 여지가 있습니다. 아래식과 같이 진입명 확인하고 추가진입하는 내용으로 식 작성하시면 됩니다. 추가진입을 하시므로 피라미딩을 설정하셔야 하며 피라미딩은 다른진입신호만허용으로 설정하시면 됩니다. if MarketPosition <= 0 and crossup(c,ma(c,50)) Then buy("b",OnClose,def,1); if MarketPosition >= 0 and CrossDown(c,ma(c,40)) Then sell("s",OnClose,def,1); if MarketPosition == 1 and IsEntryName("b") == true Then{ if crossup(c,ma(c,30)) Then buy("bb",OnClose,def,1); if CrossDown(c,ma(c,10)) Then exitlong("bx"); } if MarketPosition == -1 and IsEntryName("s") == true Then{ if CrossDown(c,ma(c,30)) Then Sell("ss",OnClose,def,1); if CrossUp(c,ma(c,10)) Then ExitShort("sx"); } 즐거운 하루되세요 > HI_yjam49 님이 쓴 글입니다. > 제목 : 수식 질문입니다. > 선물관련 프로그램을 일정조건에 따라 state를 구별하여 작성하고자 합니다. 예를들어 50ma를 상향돌파하면 state 1로 진입하고, 40ma를 하향돌파하면 state 2로 진입을 합니다. 그리고 나서 state 1에 진입한 상태에서 또다시 30ma를 상향돌파하면 추가1계약 매수, ma10을 하양돌파하면 일괄매수청산. state 2에 진입한 상태에서 다시 20ma를 하향돌파하면 추가1계약 매도, ma5를 상향돌파하면 일괄매도청산. 이런 식을 만들려고 합니다. 이런식으로 state별로 다르게 코딩을 하고자 하는데, if문을 써서 해보았는데 잘 안되네요. 이를테면 input : state(0); if crossup(c, ma50) then { buy("b1", atmarket, 1); state == 1;} if state == 1 then { 어쩌고저쩌고 코딩} 이런 방식을 써보았는데 if state 이하가 실제에서는 적용이 안되네요. 어떤 방식을 사용해야지 제가 임의로 나눈 조건별로 코딩이 가능할까요? 두서없는 질문이지만 답변 부탁드립니다.