커뮤니티

매수/매도 포지션에서 청산조건을 다르게 하기

프로필 이미지
엠씨용가
2020-05-22 08:41:32
1181
글번호 139074
답변완료
안녕하세요 ^^ 1) 매수포지션 - 맨 마지막에 진입한 가격 - LTR 만큼 하락하면 LX - 위의 조건을 충족하지 않으면 익일 시가청산 2) 매도포지션 - 맨 마지막에 진입한 가격 + STR 만큼 상승하면 SX - 위의 조건을 충족하지 않으면 당일 매도 상기 조건을 입력하고 싶은데요, 전략을 시뮬레이션 한 결과 거래내역을 보면 매수포지션에서 LX 주문은 잘 들어가는데. ES주문은 전혀 되지 않는걸로 나오고 있습니다. 즉, 모든 LX 주문조건을 충족하지 않으면 익일 시가청산으로 주문이 들어가야 하는데 모두 당일 종가청산이 됩니다. 이 문제를 어떻게 해결할 수 있을까요?? IF MarketPosition == 0 THEN { IF H < L1 AND NEXTBARSDATE == SDATE Then BUY("L1",ATSTOP,L1); IF L > S1 AND NEXTBARSDATE == SDATE THEN Sell("S1",ATSTOP,S1); } IF MarketPosition== 1 AND STIME <154000 THEN { if highest(h,BarsSinceEntry) < L1 + LTR*0.5 Then buy("L2",ATSTOP,L1 + LTR * 0.5); if highest(h,BarsSinceEntry) < L1 + LTR Then buy("L3",ATSTOP, L1 + LTR); } IF MarketPosition == 1 then { if NextBarSdate == SDATE Then ExitLong("LX",AtStop,LatestEntryPrice(0)-LTR); IF NextBarSdate != SDATE Then ExitLong("EL",ATMARKET); } IF MarketPosition == -1 AND STIME < 154000 Then { IF Lowest(L,BarsSinceEntry) > S1 - STR * 0.5 Then SELL("S2",ATSTOP, S1 - STR * 0.5); IF Lowest(L,BarsSinceEntry) > S1 - STR Then SELL("S3",ATSTOP, S1- STR); IF NextBarSdate == SDATE Then ExitShort("SX",ATSTOP,LatestEntryPrice(0) + STR); else SetStopEndofday(); }
사용자 함수
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2020-05-22 11:23:00

안녕하세요 예스스탁입니다. 매도청산부분에 당일청산함수가 사용되어 있습니다. 아래와 같이 청산식 수정하시면 됩니다. IF MarketPosition == 0 THEN { IF H < L1 AND NEXTBARSDATE == SDATE Then BUY("L1",ATSTOP,L1); IF L > S1 AND NEXTBARSDATE == SDATE THEN Sell("S1",ATSTOP,S1); } IF MarketPosition== 1 AND STIME <154000 THEN { if highest(h,BarsSinceEntry) < L1 + LTR*0.5 Then buy("L2",ATSTOP,L1 + LTR * 0.5); if highest(h,BarsSinceEntry) < L1 + LTR Then buy("L3",ATSTOP, L1 + LTR); } IF MarketPosition == 1 then { if NextBarSdate == SDATE Then ExitLong("LX",AtStop,LatestEntryPrice(0)-LTR); IF NextBarSdate != SDATE Then ExitLong("EL",ATMARKET); } IF MarketPosition == -1 AND STIME < 154000 Then { IF Lowest(L,BarsSinceEntry) > S1 - STR * 0.5 Then SELL("S2",ATSTOP, S1 - STR * 0.5); IF Lowest(L,BarsSinceEntry) > S1 - STR Then SELL("S3",ATSTOP, S1- STR); } IF MarketPosition == -1 then { if NextBarSdate == SDATE Then ExitLong("SX",AtStop,LatestEntryPrice(0)+STR); IF NextBarSdate != SDATE Then ExitLong("ES",ATMARKET); } 즐거운 하루되세요 > 엠씨용가 님이 쓴 글입니다. > 제목 : 매수/매도 포지션에서 청산조건을 다르게 하기 > 안녕하세요 ^^ 1) 매수포지션 - 맨 마지막에 진입한 가격 - LTR 만큼 하락하면 LX - 위의 조건을 충족하지 않으면 익일 시가청산 2) 매도포지션 - 맨 마지막에 진입한 가격 + STR 만큼 상승하면 SX - 위의 조건을 충족하지 않으면 당일 매도 상기 조건을 입력하고 싶은데요, 전략을 시뮬레이션 한 결과 거래내역을 보면 매수포지션에서 LX 주문은 잘 들어가는데. ES주문은 전혀 되지 않는걸로 나오고 있습니다. 즉, 모든 LX 주문조건을 충족하지 않으면 익일 시가청산으로 주문이 들어가야 하는데 모두 당일 종가청산이 됩니다. 이 문제를 어떻게 해결할 수 있을까요?? IF MarketPosition == 0 THEN { IF H < L1 AND NEXTBARSDATE == SDATE Then BUY("L1",ATSTOP,L1); IF L > S1 AND NEXTBARSDATE == SDATE THEN Sell("S1",ATSTOP,S1); } IF MarketPosition== 1 AND STIME <154000 THEN { if highest(h,BarsSinceEntry) < L1 + LTR*0.5 Then buy("L2",ATSTOP,L1 + LTR * 0.5); if highest(h,BarsSinceEntry) < L1 + LTR Then buy("L3",ATSTOP, L1 + LTR); } IF MarketPosition == 1 then { if NextBarSdate == SDATE Then ExitLong("LX",AtStop,LatestEntryPrice(0)-LTR); IF NextBarSdate != SDATE Then ExitLong("EL",ATMARKET); } IF MarketPosition == -1 AND STIME < 154000 Then { IF Lowest(L,BarsSinceEntry) > S1 - STR * 0.5 Then SELL("S2",ATSTOP, S1 - STR * 0.5); IF Lowest(L,BarsSinceEntry) > S1 - STR Then SELL("S3",ATSTOP, S1- STR); IF NextBarSdate == SDATE Then ExitShort("SX",ATSTOP,LatestEntryPrice(0) + STR); else SetStopEndofday(); }