커뮤니티

즉시분할청산 및 즉시손절

프로필 이미지
슼티프
2020-01-09 23:46:35
111
글번호 135029
답변완료
if MarketPosition <= -1 then { Exitshort("sp1",AtLimit,EntryPrice-PriceScale*3,"",1,1); Exitshort("sp2",AtLimit,EntryPrice-PriceScale*5,"",1,1); Exitshort("sp3",AtLimit,EntryPrice-PriceScale*7,"",1,1); } if MarketPosition >= 1 then { ExitLong("bp1",AtLimit,EntryPrice+PriceScale*3,"",1,1); ExitLong("bp2",AtLimit,EntryPrice+PriceScale*5,"",1,1); ExitLong("bp3",AtLimit,EntryPrice+PriceScale*7,"",1,1); } 매수/매도 진입은 할 수 있었습니다만 위에 식으로 3분할 청산식을 세우니 3틱 5틱 7틱으로 바로 청산되게끔 (시스템차트상)데이터가 정리되지않고 봉이 완성되는 가격으로 청산이 되어버리더라구요 예를들어 3틱익절이 나가야하지만 봉이 완성되고보니 9틱 이 올라있어서 한번에 3계약이 모두청산(9틱)이 되어버리는경우처럼요 바로바로 진입가 3,5,7틱 순차적으로 1계약씩 익절하고///// 익절되지못하고 남은모든계약 진입가 대비 3틱손절식은 어떻게 해야 할까요. 추가적으로 N틱차트에서 특정조건을 만족시켜서 종가매수주문(290.15)을 넣었다고 가정했을때 만족시킨 다음봉의 저가가 290.15라면 체결되지 않았을 가능성이 존재하기때문에 만족시킨봉의 종가보다 다음봉의 저가가 낮은경우만 인식할 수는 없을까요
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2020-01-10 11:07:21

안녕하세요 예스스탁입니다. 1 if문은 봉완성(다음봉시가수신)이 기준입니다. 청산의 if MarketPosition <= -1 then 조건은 완성시에 판단하기에 진입이후 초소 1개봉이 완성이 되어야 합니다. onclose이면 다음봉, atmarket,atstop,atlimit은 봉미완성시에 신호가 발생하므로 최소 신호가 발생한봉은 완성되어야 합니다. 그러므로 해당 체계에 대응하는 청산식을 추가해 주셔야 3,5,7틱 익절이 가능합니다. 아래 내용을 참고하시기 바랍니다. 진입신호의 신호타입 별로 함께 셋팅되어 첫 한봉이 완성되기 전에 청산하는 내용을 추가한 식입니다. 손절내용도 같이 추가했습니다. if 매수조건 Then { #매수진입이 onclose타입일경우 buy("b"); ExitLong("bp1.",AtLimit,c+PriceScale*3,"",1,1); ExitLong("bp2.",AtLimit,c+PriceScale*3,"",1,1); ExitLong("bp3.",AtLimit,c+PriceScale*3,"",1,1); ExitLong("bl.",AtStop,c-PriceScale*3); #매수진입이 AtMarket 타입일경우 buy("b",AtMarket); ExitLong("bp1.",AtLimit,NextBarOpen+PriceScale*3,"",1,1); ExitLong("bp2.",AtLimit,NextBarOpen+PriceScale*3,"",1,1); ExitLong("bp3.",AtLimit,NextBarOpen+PriceScale*3,"",1,1); ExitLong("bl.",AtStop,NextBarOpen-PriceScale*3); #매수진입이 AtStop 타입일경우 buy("b",AtStop,감시가격); ExitLong("bp1.",AtLimit,max(NextBarOpen,감시가격)+PriceScale*3,"",1,1); ExitLong("bp2.",AtLimit,max(NextBarOpen,감시가격)+PriceScale*3,"",1,1); ExitLong("bp3.",AtLimit,max(NextBarOpen,감시가격)+PriceScale*3,"",1,1); ExitLong("bl.",AtStop,max(NextBarOpen,감시가격)-PriceScale*3); #매수진입이 Atlimit 타입일경우 buy("b",AtLimit,감시가격); ExitLong("bp1.",AtLimit,min(NextBarOpen,감시가격)+PriceScale*3,"",1,1); ExitLong("bp2.",AtLimit,min(NextBarOpen,감시가격)+PriceScale*3,"",1,1); ExitLong("bp3.",AtLimit,min(NextBarOpen,감시가격)+PriceScale*3,"",1,1); ExitLong("bl.",AtStop,min(NextBarOpen,감시가격)-PriceScale*3); } if 매도조건 Then { #매도진입이 onclose타입일경우 sell("s"); ExitShort("sp1.",AtLimit,c-PriceScale*3,"",1,1); ExitShort("sp2.",AtLimit,c-PriceScale*3,"",1,1); ExitShort("sp3.",AtLimit,c-PriceScale*3,"",1,1); ExitShort("sl.",AtStop,c+PriceScale*3); #매도진입이 AtMarket 타입일경우 sell("s",AtMarket); ExitShort("sp1.",AtLimit,NextBarOpen-PriceScale*3,"",1,1); ExitShort("sp2.",AtLimit,NextBarOpen-PriceScale*3,"",1,1); ExitShort("sp3.",AtLimit,NextBarOpen-PriceScale*3,"",1,1); ExitShort("sl.",AtStop,NextBarOpen+PriceScale*3); #매도진입이 AtStop 타입일경우 sell("s",AtStop,감시가격); ExitShort("sp1.",AtLimit,min(NextBarOpen,감시가격)-PriceScale*3,"",1,1); ExitShort("sp2.",AtLimit,min(NextBarOpen,감시가격)-PriceScale*3,"",1,1); ExitShort("sp3.",AtLimit,min(NextBarOpen,감시가격)-PriceScale*3,"",1,1); ExitShort("sl.",AtStop,min(NextBarOpen,감시가격)+PriceScale*3); #매도진입이 Atlimit 타입일경우 sell("s",AtLimit,감시가격); ExitShort("sp1.",AtLimit,max(NextBarOpen,감시가격)-PriceScale*3,"",1,1); ExitShort("sp2.",AtLimit,max(NextBarOpen,감시가격)-PriceScale*3,"",1,1); ExitShort("sp3.",AtLimit,max(NextBarOpen,감시가격)-PriceScale*3,"",1,1); ExitShort("sl.",AtStop,max(NextBarOpen,감시가격)+PriceScale*3); } if MarketPosition <= -1 then { ExitShort("sl",AtStop,EntryPrice+PriceScale*3); if Lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*3 Then Exitshort("sp1",AtLimit,EntryPrice-PriceScale*3,"",1,1); if Lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*5 Then Exitshort("sp2",AtLimit,EntryPrice-PriceScale*5,"",1,1); if Lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*7 Then Exitshort("sp3",AtLimit,EntryPrice-PriceScale*7,"",1,1); } if MarketPosition >= 1 then { ExitLong("bl",AtStop,EntryPrice-PriceScale*3); if highest(H,BarsSinceEntry) < EntryPrice+PriceScale*3 Then ExitLong("bp1",AtLimit,EntryPrice+PriceScale*3,"",1,1); if highest(H,BarsSinceEntry) < EntryPrice+PriceScale*3 Then ExitLong("bp2",AtLimit,EntryPrice+PriceScale*5,"",1,1); if highest(H,BarsSinceEntry) < EntryPrice+PriceScale*3 Then ExitLong("bp3",AtLimit,EntryPrice+PriceScale*7,"",1,1); } 2 추가문의하신 내용은 수식으로 처리가 되지 않습니다. 수식은 현재시점에서 미래쪽 봉은 알수가 없습니다. 즐거운 하루되세요 > 슼티프 님이 쓴 글입니다. > 제목 : 즉시분할청산 및 즉시손절 > if MarketPosition <= -1 then { Exitshort("sp1",AtLimit,EntryPrice-PriceScale*3,"",1,1); Exitshort("sp2",AtLimit,EntryPrice-PriceScale*5,"",1,1); Exitshort("sp3",AtLimit,EntryPrice-PriceScale*7,"",1,1); } if MarketPosition >= 1 then { ExitLong("bp1",AtLimit,EntryPrice+PriceScale*3,"",1,1); ExitLong("bp2",AtLimit,EntryPrice+PriceScale*5,"",1,1); ExitLong("bp3",AtLimit,EntryPrice+PriceScale*7,"",1,1); } 매수/매도 진입은 할 수 있었습니다만 위에 식으로 3분할 청산식을 세우니 3틱 5틱 7틱으로 바로 청산되게끔 (시스템차트상)데이터가 정리되지않고 봉이 완성되는 가격으로 청산이 되어버리더라구요 예를들어 3틱익절이 나가야하지만 봉이 완성되고보니 9틱 이 올라있어서 한번에 3계약이 모두청산(9틱)이 되어버리는경우처럼요 바로바로 진입가 3,5,7틱 순차적으로 1계약씩 익절하고///// 익절되지못하고 남은모든계약 진입가 대비 3틱손절식은 어떻게 해야 할까요. 추가적으로 N틱차트에서 특정조건을 만족시켜서 종가매수주문(290.15)을 넣었다고 가정했을때 만족시킨 다음봉의 저가가 290.15라면 체결되지 않았을 가능성이 존재하기때문에 만족시킨봉의 종가보다 다음봉의 저가가 낮은경우만 인식할 수는 없을까요