커뮤니티

청산 관련 수식 요청드립니다.

프로필 이미지
penfold
2024-11-20 15:38:39
852
글번호 185470
답변완료
안녕하세요, 수식 작성에 늘 도움주셔서 감사합니다. 진입과는 별개로 청산 관련된 수식만을 따로 작성 중인데, 수식 검토 및 2번 부분 수식을 요청드립니다. 청산 기준을 상황에 따라 다르게 적용되는 수식이 필요한데, 구현하고자 하는 내용은 다음과 같습니다. 1) 기본 청산 : ATR의 n배수 Trailing stop 2) 1개봉에서 내 포지션에 반대되는 과도하게 큰 움직임(ATR*2)이 나왔을 때, 청산 3) 일정 수익 이상 발생한 뒤에는, 청산 라인을 더 가깝게 변경한다. (ATR*k배수) 위 내용을 토대로 구현한 수식은 아래와 같습니다. input : AtrP(20), AtrMult(3), BigProfit(100), BigAtrMult(1.6); var : AtrV1(0), AtrV2(0), posHigh(0), posLow(0); # 기본청산 AtrV1 = ATR(AtrP) * AtrMult; If BarsSinceEntry() == 0 Then PosHigh = High; If MarketPosition() == 1 Then { If High > PosHigh Then PosHigh = High; ExitLong("EL1", AtStop, PosHigh - AtrV1); } If BarsSinceEntry() == 0 Then PosLow = Low; If MarketPosition() == -1 Then { If Low < PosLow Then PosLow = Low; ExitShort("ES1", AtStop, PosLow + AtrV1); } # 1개봉 사이 내 포지션과 움직임이 나왔을 때 청산 -> 이 부분을 수식으로 구현하기가 어렵게 느껴져서, 도움 부탁드립니다..! # 수익이 커졌을 때 청산 라인 변경(ATR*1.6) AtrV2 = ATR(AtrP) * BigAtrMult; If BarsSinceEntry() == 0 Then PosHigh = High; If Marketposition == 1 Then { If High > PosHigh Then PosHigh = High; if PosHigh > entryPrice(0)+bigProfit Then exitlong("BigEL", atstop, PosHigh - AtrV2); } If BarsSinceEntry() == 0 Then PosLow = Low; If MarketPosition() == -1 Then { If Low < PosLow Then PosLow = Low; if PosLow < entryPrice(0)-bigProfit Then exitshort("BigES", atstop, PosLow + AtrV2); } ---------------------------------------------------------- 현재까지 작성 내용은 위와 같은데, 수식에 겹치는 군더더기 부분들도 있고, 청산조건 2번의 경우 Atstop 주문으로 코딩하려면 어떤식으로 작성이 가능한지 헷갈리는 상황입니다. 전체 내용이 반영된 다중청산 수식(여러 다른 진입전략에 붙여넣기 가능한)을 구현해주시면 정말 감사하겠습니다.
시스템
답변 3
프로필 이미지

예스스탁 예스스탁 답변

2024-11-21 13:19:21

안녕하세요 예스스탁입니다. input : AtrP(20), AtrMult(3), BigProfit(100), BigAtrMult(1.6); var : A(0); A = ATR(AtrP); if MarketPosition == 1 Then { if highest(H,BarsSinceEntry) < EntryPrice+bigProfit Then ExitLong("bx1",AtStop,highest(H,BarsSinceEntry)-A*AtrMult); Else ExitLong("bx2",AtStop,highest(H,BarsSinceEntry)-A*BigAtrMult); } if MarketPosition == -1 Then { if lowest(L,BarsSinceEntry) > EntryPrice-bigProfit Then ExitShort("sx1",AtStop,lowest(L,BarsSinceEntry)+A*AtrMult); Else ExitShort("sx2",AtStop,lowest(L,BarsSinceEntry)+A*BigAtrMult); } 즐거운 하루되세요 > penfold 님이 쓴 글입니다. > 제목 : 청산 관련 수식 요청드립니다. > 안녕하세요, 수식 작성에 늘 도움주셔서 감사합니다. 진입과는 별개로 청산 관련된 수식만을 따로 작성 중인데, 수식 검토 및 2번 부분 수식을 요청드립니다. 청산 기준을 상황에 따라 다르게 적용되는 수식이 필요한데, 구현하고자 하는 내용은 다음과 같습니다. 1) 기본 청산 : ATR의 n배수 Trailing stop 2) 1개봉에서 내 포지션에 반대되는 과도하게 큰 움직임(ATR*2)이 나왔을 때, 청산 3) 일정 수익 이상 발생한 뒤에는, 청산 라인을 더 가깝게 변경한다. (ATR*k배수) 위 내용을 토대로 구현한 수식은 아래와 같습니다. input : AtrP(20), AtrMult(3), BigProfit(100), BigAtrMult(1.6); var : AtrV1(0), AtrV2(0), posHigh(0), posLow(0); # 기본청산 AtrV1 = ATR(AtrP) * AtrMult; If BarsSinceEntry() == 0 Then PosHigh = High; If MarketPosition() == 1 Then { If High > PosHigh Then PosHigh = High; ExitLong("EL1", AtStop, PosHigh - AtrV1); } If BarsSinceEntry() == 0 Then PosLow = Low; If MarketPosition() == -1 Then { If Low < PosLow Then PosLow = Low; ExitShort("ES1", AtStop, PosLow + AtrV1); } # 1개봉 사이 내 포지션과 움직임이 나왔을 때 청산 -> 이 부분을 수식으로 구현하기가 어렵게 느껴져서, 도움 부탁드립니다..! # 수익이 커졌을 때 청산 라인 변경(ATR*1.6) AtrV2 = ATR(AtrP) * BigAtrMult; If BarsSinceEntry() == 0 Then PosHigh = High; If Marketposition == 1 Then { If High > PosHigh Then PosHigh = High; if PosHigh > entryPrice(0)+bigProfit Then exitlong("BigEL", atstop, PosHigh - AtrV2); } If BarsSinceEntry() == 0 Then PosLow = Low; If MarketPosition() == -1 Then { If Low < PosLow Then PosLow = Low; if PosLow < entryPrice(0)-bigProfit Then exitshort("BigES", atstop, PosLow + AtrV2); } ---------------------------------------------------------- 현재까지 작성 내용은 위와 같은데, 수식에 겹치는 군더더기 부분들도 있고, 청산조건 2번의 경우 Atstop 주문으로 코딩하려면 어떤식으로 작성이 가능한지 헷갈리는 상황입니다. 전체 내용이 반영된 다중청산 수식(여러 다른 진입전략에 붙여넣기 가능한)을 구현해주시면 정말 감사하겠습니다.
프로필 이미지

penfold

2024-11-21 13:30:45

안녕하세요, 수식 답변 감사드립니다. 다만 제시해주신 수식에 제가 요청드렸던 청산 2) 의 내용이 반영되지않은듯하여 다시한번 문의드리고자합니다. 1) 기본 청산 : ATR의 n배수 Trailing stop 2) 1개봉에서 내 포지션에 반대되는 과도하게 큰 움직임(ATR*2)이 나왔을 때, 청산 3) 일정 수익 이상 발생한 뒤에는, 청산 라인을 더 가깝게 변경한다. (ATR*k배수) 여기서 2) 의 내용까지 수식에 반영해주시면 감사하겠습니다. > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 청산 관련 수식 요청드립니다. > 안녕하세요 예스스탁입니다. input : AtrP(20), AtrMult(3), BigProfit(100), BigAtrMult(1.6); var : A(0); A = ATR(AtrP); if MarketPosition == 1 Then { if highest(H,BarsSinceEntry) < EntryPrice+bigProfit Then ExitLong("bx1",AtStop,highest(H,BarsSinceEntry)-A*AtrMult); Else ExitLong("bx2",AtStop,highest(H,BarsSinceEntry)-A*BigAtrMult); } if MarketPosition == -1 Then { if lowest(L,BarsSinceEntry) > EntryPrice-bigProfit Then ExitShort("sx1",AtStop,lowest(L,BarsSinceEntry)+A*AtrMult); Else ExitShort("sx2",AtStop,lowest(L,BarsSinceEntry)+A*BigAtrMult); } 즐거운 하루되세요 > penfold 님이 쓴 글입니다. > 제목 : 청산 관련 수식 요청드립니다. > 안녕하세요, 수식 작성에 늘 도움주셔서 감사합니다. 진입과는 별개로 청산 관련된 수식만을 따로 작성 중인데, 수식 검토 및 2번 부분 수식을 요청드립니다. 청산 기준을 상황에 따라 다르게 적용되는 수식이 필요한데, 구현하고자 하는 내용은 다음과 같습니다. 1) 기본 청산 : ATR의 n배수 Trailing stop 2) 1개봉에서 내 포지션에 반대되는 과도하게 큰 움직임(ATR*2)이 나왔을 때, 청산 3) 일정 수익 이상 발생한 뒤에는, 청산 라인을 더 가깝게 변경한다. (ATR*k배수) 위 내용을 토대로 구현한 수식은 아래와 같습니다. input : AtrP(20), AtrMult(3), BigProfit(100), BigAtrMult(1.6); var : AtrV1(0), AtrV2(0), posHigh(0), posLow(0); # 기본청산 AtrV1 = ATR(AtrP) * AtrMult; If BarsSinceEntry() == 0 Then PosHigh = High; If MarketPosition() == 1 Then { If High > PosHigh Then PosHigh = High; ExitLong("EL1", AtStop, PosHigh - AtrV1); } If BarsSinceEntry() == 0 Then PosLow = Low; If MarketPosition() == -1 Then { If Low < PosLow Then PosLow = Low; ExitShort("ES1", AtStop, PosLow + AtrV1); } # 1개봉 사이 내 포지션과 움직임이 나왔을 때 청산 -> 이 부분을 수식으로 구현하기가 어렵게 느껴져서, 도움 부탁드립니다..! # 수익이 커졌을 때 청산 라인 변경(ATR*1.6) AtrV2 = ATR(AtrP) * BigAtrMult; If BarsSinceEntry() == 0 Then PosHigh = High; If Marketposition == 1 Then { If High > PosHigh Then PosHigh = High; if PosHigh > entryPrice(0)+bigProfit Then exitlong("BigEL", atstop, PosHigh - AtrV2); } If BarsSinceEntry() == 0 Then PosLow = Low; If MarketPosition() == -1 Then { If Low < PosLow Then PosLow = Low; if PosLow < entryPrice(0)-bigProfit Then exitshort("BigES", atstop, PosLow + AtrV2); } ---------------------------------------------------------- 현재까지 작성 내용은 위와 같은데, 수식에 겹치는 군더더기 부분들도 있고, 청산조건 2번의 경우 Atstop 주문으로 코딩하려면 어떤식으로 작성이 가능한지 헷갈리는 상황입니다. 전체 내용이 반영된 다중청산 수식(여러 다른 진입전략에 붙여넣기 가능한)을 구현해주시면 정말 감사하겠습니다.
프로필 이미지

예스스탁 예스스탁 답변

2024-11-21 14:04:20

안녕하세요 예스스탁입니다. 기존식 하단에 추가하시면 됩니다. 시가 기준 ATR*2만큼 반대로 움직이면 청산입니다. 올리신 같은 경우에 시가가 아니면 C로 지정하는 경우도 있습니다. C로 지정하면 현재봉 미완성시 직전 완성봉 종가 기준 ATR*2만큼 반대로 움직이면 청산됩니다. if MarketPosition == 1 Then ExitLong("bx",AtStop,NextBarOpen-A*2); if MarketPosition == -1 Then ExitShort("sx",AtStop,NextBarOpen+A*2); 즐거운 하루되세요 > penfold 님이 쓴 글입니다. > 제목 : Re : Re : 청산 관련 수식 요청드립니다. > 안녕하세요, 수식 답변 감사드립니다. 다만 제시해주신 수식에 제가 요청드렸던 청산 2) 의 내용이 반영되지않은듯하여 다시한번 문의드리고자합니다. 1) 기본 청산 : ATR의 n배수 Trailing stop 2) 1개봉에서 내 포지션에 반대되는 과도하게 큰 움직임(ATR*2)이 나왔을 때, 청산 3) 일정 수익 이상 발생한 뒤에는, 청산 라인을 더 가깝게 변경한다. (ATR*k배수) 여기서 2) 의 내용까지 수식에 반영해주시면 감사하겠습니다. > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 청산 관련 수식 요청드립니다. > 안녕하세요 예스스탁입니다. input : AtrP(20), AtrMult(3), BigProfit(100), BigAtrMult(1.6); var : A(0); A = ATR(AtrP); if MarketPosition == 1 Then { if highest(H,BarsSinceEntry) < EntryPrice+bigProfit Then ExitLong("bx1",AtStop,highest(H,BarsSinceEntry)-A*AtrMult); Else ExitLong("bx2",AtStop,highest(H,BarsSinceEntry)-A*BigAtrMult); } if MarketPosition == -1 Then { if lowest(L,BarsSinceEntry) > EntryPrice-bigProfit Then ExitShort("sx1",AtStop,lowest(L,BarsSinceEntry)+A*AtrMult); Else ExitShort("sx2",AtStop,lowest(L,BarsSinceEntry)+A*BigAtrMult); } 즐거운 하루되세요 > penfold 님이 쓴 글입니다. > 제목 : 청산 관련 수식 요청드립니다. > 안녕하세요, 수식 작성에 늘 도움주셔서 감사합니다. 진입과는 별개로 청산 관련된 수식만을 따로 작성 중인데, 수식 검토 및 2번 부분 수식을 요청드립니다. 청산 기준을 상황에 따라 다르게 적용되는 수식이 필요한데, 구현하고자 하는 내용은 다음과 같습니다. 1) 기본 청산 : ATR의 n배수 Trailing stop 2) 1개봉에서 내 포지션에 반대되는 과도하게 큰 움직임(ATR*2)이 나왔을 때, 청산 3) 일정 수익 이상 발생한 뒤에는, 청산 라인을 더 가깝게 변경한다. (ATR*k배수) 위 내용을 토대로 구현한 수식은 아래와 같습니다. input : AtrP(20), AtrMult(3), BigProfit(100), BigAtrMult(1.6); var : AtrV1(0), AtrV2(0), posHigh(0), posLow(0); # 기본청산 AtrV1 = ATR(AtrP) * AtrMult; If BarsSinceEntry() == 0 Then PosHigh = High; If MarketPosition() == 1 Then { If High > PosHigh Then PosHigh = High; ExitLong("EL1", AtStop, PosHigh - AtrV1); } If BarsSinceEntry() == 0 Then PosLow = Low; If MarketPosition() == -1 Then { If Low < PosLow Then PosLow = Low; ExitShort("ES1", AtStop, PosLow + AtrV1); } # 1개봉 사이 내 포지션과 움직임이 나왔을 때 청산 -> 이 부분을 수식으로 구현하기가 어렵게 느껴져서, 도움 부탁드립니다..! # 수익이 커졌을 때 청산 라인 변경(ATR*1.6) AtrV2 = ATR(AtrP) * BigAtrMult; If BarsSinceEntry() == 0 Then PosHigh = High; If Marketposition == 1 Then { If High > PosHigh Then PosHigh = High; if PosHigh > entryPrice(0)+bigProfit Then exitlong("BigEL", atstop, PosHigh - AtrV2); } If BarsSinceEntry() == 0 Then PosLow = Low; If MarketPosition() == -1 Then { If Low < PosLow Then PosLow = Low; if PosLow < entryPrice(0)-bigProfit Then exitshort("BigES", atstop, PosLow + AtrV2); } ---------------------------------------------------------- 현재까지 작성 내용은 위와 같은데, 수식에 겹치는 군더더기 부분들도 있고, 청산조건 2번의 경우 Atstop 주문으로 코딩하려면 어떤식으로 작성이 가능한지 헷갈리는 상황입니다. 전체 내용이 반영된 다중청산 수식(여러 다른 진입전략에 붙여넣기 가능한)을 구현해주시면 정말 감사하겠습니다.