커뮤니티

수식 문의 드립니다.

프로필 이미지
투자
2018-10-31 23:16:37
192
글번호 123250
답변완료
수고가 많으십니다. <질문1> 구현하려는 식의 조건은 다음과 같습니다. 1. 피라미딩의 모든진입신호 허용한 상태에서 2. 다음봉에서 (시가+1틱) 가격조건이 발생하면 "매수1"진입한다. 3. "매수1"이라는 이름이 이미 진입해 있거나 손절되었으면 같은 이름으로 재진입하지 않는다. if(MarketPosition != 1 and LatestEntryName(0) != "매수1") Then Buy("매수1", AtStop, NextBarOpen+(1*PriceScale)); SetStoploss(20*PriceScale,PointStop); //20틱 손절설정 이렇게 했더니 "진입한 봉이 완성되기 전에 손절이 발생하면" 봉 완성 이후에 LatestEntryName이 null값이 나와서 재진입이 발생합니다. 또, "매수1"이라는 이름이 손절되었는지 검사하는 조건도 if문 안에 추가되어야 합니다. <질문2> 위 질문과 무관하게, 어떤 손절이 발생하여 IsExitName("stoploss", 1)==True 인지 체크해서 모든 변수를 초기화시키고 다시 진입조건을 기다리려고 할 경우 if(IsExitName("stoploss", 1)==True) Then {초기화} 이렇게 했더니 한번 손절이 발생하면 계속 초기화됩니다. 이를 해결하기 위해서 if(var1===0 and IsExitName("stoploss", 1)==True) Then {초기화; var1=1;} 이렇게 했더니 한번만 실행되고 다시 실행되지 않습니다. var1=0;을 어디선가 해줘야 할 것 같은데요, 어떻게 해야하는지 궁금합니다. 또, IsExitName("stoploss", 1)의 리턴값이 언제까지 유지되는지도 궁금합니다. 다음진입 전까지 계속 유지되는지? 다음진입이 손절이 아닐때까지 유지되는지? 등이 궁금합니다. 바쁘시겠지만 부탁 드립니다. 감사합니다.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2018-11-01 14:54:54

안녕하세요 예스스탁입니다. 1 LatestEntryName(0)은 포지션 진입중에만 값이 리턴됩니다. 무포지션일때,반대(매도)포지션일때, 매수포지션일때로 세분화해서 지정해 조건 지정해 주시면 됩니다. if (MarketPosition == 0 and (IsEntryName("매수1",1) == false or IsExitName("StopLoss",1) == false)) or (MarketPosition == -1) or (MarketPosition == 1 and LatestEntryName(0) != "매수1") Then buy("매수1",AtStop,NextBarOpen+PriceScale*1); 2 청산발생봉에서만 동작하게 하셔야 합니다. if TotalTrades > TotalTrades[1] and IsEntryName("StopLoss",1) == true Then { 초기화내용 } 즐거운 하루되세요 > 투자 님이 쓴 글입니다. > 제목 : 수식 문의 드립니다. > 수고가 많으십니다. <질문1> 구현하려는 식의 조건은 다음과 같습니다. 1. 피라미딩의 모든진입신호 허용한 상태에서 2. 다음봉에서 (시가+1틱) 가격조건이 발생하면 "매수1"진입한다. 3. "매수1"이라는 이름이 이미 진입해 있거나 손절되었으면 같은 이름으로 재진입하지 않는다. if(MarketPosition != 1 and LatestEntryName(0) != "매수1") Then Buy("매수1", AtStop, NextBarOpen+(1*PriceScale)); SetStoploss(20*PriceScale,PointStop); //20틱 손절설정 이렇게 했더니 "진입한 봉이 완성되기 전에 손절이 발생하면" 봉 완성 이후에 LatestEntryName이 null값이 나와서 재진입이 발생합니다. 또, "매수1"이라는 이름이 손절되었는지 검사하는 조건도 if문 안에 추가되어야 합니다. <질문2> 위 질문과 무관하게, 어떤 손절이 발생하여 IsExitName("stoploss", 1)==True 인지 체크해서 모든 변수를 초기화시키고 다시 진입조건을 기다리려고 할 경우 if(IsExitName("stoploss", 1)==True) Then {초기화} 이렇게 했더니 한번 손절이 발생하면 계속 초기화됩니다. 이를 해결하기 위해서 if(var1===0 and IsExitName("stoploss", 1)==True) Then {초기화; var1=1;} 이렇게 했더니 한번만 실행되고 다시 실행되지 않습니다. var1=0;을 어디선가 해줘야 할 것 같은데요, 어떻게 해야하는지 궁금합니다. 또, IsExitName("stoploss", 1)의 리턴값이 언제까지 유지되는지도 궁금합니다. 다음진입 전까지 계속 유지되는지? 다음진입이 손절이 아닐때까지 유지되는지? 등이 궁금합니다. 바쁘시겠지만 부탁 드립니다. 감사합니다.