커뮤니티

수정부탁드립니다.

프로필 이미지
dayun01
2019-05-02 15:14:08
191
글번호 128337
답변완료
작성해주신 수식을 약간 수정해서 돌려보고 있는데, 시뮬레이션에서는 작동되지만 실제 운용시에는 청산이 안됩니다. (진입은 작동, 청산2, 청산3은 비작동 확인, 청산1은 작동여부 미확인) 수정부탁드립니다. 진입: 15시부터 10회 분할매수(1분단위로 100주씩 매수) 청산: 진입한 다음날 청산하는데 아래 조건에 따라 청산 청산1) 당일시가가 전일종가보다 크면 시가 청산 청산2) 당일시가가 전일종가보다 작으면 전일종가에 도달할때까지 기다렸다가 청산 청산3) 14시 50분 타임컷 청산 #진입 If sTime == 151000 Then Buy("B1",atmarket,DEF,100); If sTime == 152000 Then Buy("B2",atmarket,DEF,100); //청산 if MarketPosition == 1 Then { #날짜변경시 시가가 전일종가보다 크면 시초가에 즉시청산 if NextBarSdate != sdate and NextBarOpen >= C Then { exitlong("bx11",atmarket,DEF,"B1",100); exitlong("bx12",atmarket,DEF,"B2",100); } #시초가가 전일종가보다 작고 첫봉에서 전일종가이상 시세 발생시 즉시 청산 if NextBarSdate != sdate and NextBarOpen < C Then { exitlong("bx21",AtLimit,C,"B1",100); exitlong("bx22",AtLimit,C,"B2",100); } #시초가가 전일종가보다 작고 첫봉에서 전일종가이상 시세 발생하지 않으면 #그 이후봉에서 전일종가 이상의 시세발생시 즉시 청산 if sdate > EntryDate and dayopen < DayClose(1) and DayHigh < DayClose(1) Then { exitlong("bx31",AtLimit,DayClose(1),"B1",100); exitlong("bx32",AtLimit,DayClose(1),"B2",100); } #1450분 이후의 첫봉에서 청산 if sTime >= 145000 and stime[1] < 145000 and sDate > EntryDate then { ExitLong("청산31",ONCLOSE,DEF,"B1",100); ExitLong("청산32",ONCLOSE,DEF,"B2",100); } }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2019-05-02 16:11:19

안녕하세요 예스스탁입니다. 올려주신 내용이 신호가 발생하지 않는 부분인지 신호는 발생하는데 주문이 거부가 되는 부분인지 알수가 없습니다. 수식 내용은 확인해 보았지만 수식 내용에 이상이 없습니다. 신호 발생도 종류별로 정상적으로 모두 발생하고 있습니다. 1 청산신호는 발생하는데 실제 주문이 발생하지 않는 내용이시면 시스템 트레이딩 설정창의 [주문시작신호] 설정을 확인해야 합니다. 시스템을 적용시에 [주문시작신호]를 [진입신호]로 설정된 상태에서 적용되면 적용한 이후에 첫번째 진입신호가 발생한 이후부터 주문이 집행됩니다. 그러므로 적용이후 첫신호가 청산신호이면 해당 신호는 신호만 표시하고 주문은 건너뛰게 됩니다. 사용하는 수식이 15시10분에 매수진입후에 다음날 청산되는 내용이므로 오늘 매수후 다음날 적용시에 주문시작신호는 모든신호이어야 합니다. 물론 오늘 처음으로 매수하는 날이면 진입신호로 설정하고 적용하시면 됩니다. 2 수식이 다음날 지정한 조건이 만족하면 전량청산이므로 청산에 숫자 100은 삭제하셔야 합니다. 청산함수에 이름만 지정하시면 지정한 조건이 만족하면 지정한 이름으로 진입된 모든 수량을 청산합니다. 즐거운 하루되세요 > dayun01 님이 쓴 글입니다. > 제목 : 수정부탁드립니다. > 작성해주신 수식을 약간 수정해서 돌려보고 있는데, 시뮬레이션에서는 작동되지만 실제 운용시에는 청산이 안됩니다. (진입은 작동, 청산2, 청산3은 비작동 확인, 청산1은 작동여부 미확인) 수정부탁드립니다. 진입: 15시부터 10회 분할매수(1분단위로 100주씩 매수) 청산: 진입한 다음날 청산하는데 아래 조건에 따라 청산 청산1) 당일시가가 전일종가보다 크면 시가 청산 청산2) 당일시가가 전일종가보다 작으면 전일종가에 도달할때까지 기다렸다가 청산 청산3) 14시 50분 타임컷 청산 #진입 If sTime == 151000 Then Buy("B1",atmarket,DEF,100); If sTime == 152000 Then Buy("B2",atmarket,DEF,100); //청산 if MarketPosition == 1 Then { #날짜변경시 시가가 전일종가보다 크면 시초가에 즉시청산 if NextBarSdate != sdate and NextBarOpen >= C Then { exitlong("bx11",atmarket,DEF,"B1",100); exitlong("bx12",atmarket,DEF,"B2",100); } #시초가가 전일종가보다 작고 첫봉에서 전일종가이상 시세 발생시 즉시 청산 if NextBarSdate != sdate and NextBarOpen < C Then { exitlong("bx21",AtLimit,C,"B1",100); exitlong("bx22",AtLimit,C,"B2",100); } #시초가가 전일종가보다 작고 첫봉에서 전일종가이상 시세 발생하지 않으면 #그 이후봉에서 전일종가 이상의 시세발생시 즉시 청산 if sdate > EntryDate and dayopen < DayClose(1) and DayHigh < DayClose(1) Then { exitlong("bx31",AtLimit,DayClose(1),"B1",100); exitlong("bx32",AtLimit,DayClose(1),"B2",100); } #1450분 이후의 첫봉에서 청산 if sTime >= 145000 and stime[1] < 145000 and sDate > EntryDate then { ExitLong("청산31",ONCLOSE,DEF,"B1",100); ExitLong("청산32",ONCLOSE,DEF,"B2",100); } }