커뮤니티

시스템 설명 부탁드립니다.

프로필 이미지
양치기
2019-08-15 22:01:38
161
글번호 131174
답변완료
항상 도움 주셔서 감사합니다. 제가 초보라서요. 아래 시스템식이 이해가 안됩니다. 시스템식 설명 좀 부탁드립니다. if (sdate != sdate[1] and NextBarStime >= 70000) or (sdate == sdate[1] and stime < 70000 and NextBarStime >= 70000) Then { if MarketPosition == 1 Then ExitLong("bx",AtMarket); if MarketPosition == -1 Then ExitShort("sx",AtMarket); } 특히 sdate != sdate[1] 의미와 sdate == sdate[1]의 의미가 이해가 안됩니다. 또 아래식도 같이 설명 부탁드립니다. if stime == 055000 or (stime > 055000 and stime[1] < 055000) then { # 포지션 청산 exitlong("BDF"); exitshort("SDF"); } 감사합니다.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2019-08-16 14:48:37

안녕하세요 예스스탁입니다. 일반적으로 특정시간봉을 지정할 떄 if stime == 70000 then 으로 특정시간봉을 지정하지만 해당 시간대에 거래가 없으면 stime == 70000이란 조건이 만족하지 않게 됩니다. 그래서 아래와 같이 지정해 if stime == 70000 or (stime > 70000 and stime[1] < 70000) then 7시봉이 없는 상황도 가정해 (stime > 70000 and stime[1] < 70000)조건을 추가하게 됩니다. 현재봉은 7시보다 큰데 전봉은 7시보다 작은봉이라는 내용입니다. 하지만 지정한 시간이 0시 기준으로 날짜가 변경되는 첫봉이면 1봉전 시간이 235900으로 조건(stime[1] < 70000)이 만족하지 않게 됩니다. 따라서 아래와 같은 표현을 사용하게 됩니다. 봉완성시 0시 기준으로 첫봉(sdate != sdate[1])이 지정한 시간을 충족하는 봉일경우와 봉완성시 0시 시준으로 첫봉(sdate == sdate[1])이 아닐때를 구분해서 조건을 지정한 것입니다. if (sdate != sdate[1] and stime>= 70000) or (sdate == sdate[1] and stime >= 70000 and Stime < 70000) Then { if MarketPosition == 1 Then ExitLong("bx"); if MarketPosition == -1 Then ExitShort("sx"); } 위는 봉 종가기준으로 청산할떄 사용하는 내용이고 올려주신 아래식은 봉의 시가시간을 기준으로 시가가 지정한 시간을 충족하면 청산하는 내용입니다. 그래서 봉완성시(다음봉시가수신) 될때 다음봉시가의 시간을 리턴하는 NextBarStime가 사용되었고 청산함수에도 다음봉시가에 신호표시하는 atmarket이 사용되었습니다. if (sdate != sdate[1] and NextBarStime >= 70000) or (sdate == sdate[1] and stime < 70000 and NextBarStime >= 70000) Then { if MarketPosition == 1 Then ExitLong("bx",AtMarket); if MarketPosition == -1 Then ExitShort("sx",AtMarket); } 봉완성시 0시 기준으로 첫봉(sdate != sdate[1])이고 다음봉시가가 지정한 시간을 충족하거나 봉완성시 0시 시준으로 첫봉이 아니고 (sdate == sdate[1]) 지정한 시간을 충족하면 조건충족하고 신호가 발생하게 됩니다. 즐거운 하루되세요 > 양치기 님이 쓴 글입니다. > 제목 : 시스템 설명 부탁드립니다. > 항상 도움 주셔서 감사합니다. 제가 초보라서요. 아래 시스템식이 이해가 안됩니다. 시스템식 설명 좀 부탁드립니다. if (sdate != sdate[1] and NextBarStime >= 70000) or (sdate == sdate[1] and stime < 70000 and NextBarStime >= 70000) Then { if MarketPosition == 1 Then ExitLong("bx",AtMarket); if MarketPosition == -1 Then ExitShort("sx",AtMarket); } 특히 sdate != sdate[1] 의미와 sdate == sdate[1]의 의미가 이해가 안됩니다. 또 아래식도 같이 설명 부탁드립니다. if stime == 055000 or (stime > 055000 and stime[1] < 055000) then { # 포지션 청산 exitlong("BDF"); exitshort("SDF"); } 감사합니다.