커뮤니티

청산로직 요청 드립니다.

프로필 이미지
요타
2019-07-23 06:54:10
216
글번호 130527
답변완료
* 많은 도움에 항상 고맙 습니다. * 청산 때문에 머리가 아픕니다^^ * 수백번 해보지만 변수가 너무 많아서 한가지 로직 가지고는 청산이 안됨니다. <요청사항> 아래 수식 가지고 청산 로직이 가능 하도록 변형 수식 좀 하는데 잘 안됨니다. 수정 좀 부탁 드리겠습니다. *기준: 수익,손실 구간을 지정해 놓고 한구간 이상 떨어지면 자동 청산 입니다. → 주석 참고부탁 드립니다. ◈◈◈ 아래 한가지 케이스만 해 주시면 나름 공부 하면서 응용 하겠습니다. ◈◈◈ ## 구간 설정 : 10틱 단위로 상승과 하락 구간 설정 Inputs: HH1(10),HH2(20),HH3(30),HH4(40),HH5(50),HH6(60),HH7(70),HH8(80),HH9(90); Inputs: LL1(10),LL2(20),LL3(30),LL4(40),LL5(50),LL6(60),LL7(70),LL8(80),LL9(90); ## value11 = (진입가격+10틱) - 현재가 ## 수익 구간 value11 = PriceScale*HH1 - C ; ## 진입후 수익 틱수 value12 = PriceScale*HH2 - C ; value13 = PriceScale*HH3 - C ; value14 = PriceScale*HH4 - C ; value15 = PriceScale*HH5 - C ; value16 = PriceScale*HH6 - C ; value17 = PriceScale*HH7 - C ; value18 = PriceScale*HH8 - C ; value19 = PriceScale*HH9 - C ; ## value21 = 현재가 - (진입가격-10틱) ## 손실 구간 value21 = C - PriceScale*LL1 ; ## 진입후 손실 틱수 value22 = C - PriceScale*LL2 ; value23 = C - PriceScale*LL3 ; value24 = C - PriceScale*LL4 ; value25 = C - PriceScale*LL5 ; value26 = C - PriceScale*LL6 ; value27 = C - PriceScale*LL7 ; value28 = C - PriceScale*LL8 ; value29 = C - PriceScale*LL9 ; ## 수익 청산 if MarketPosition == 1 and(c > value11 OR c > value12 OR c > value13) then{ ExitLong("DD1",AtLimit, c < value12); } ## 매수 진입후 최대 수익이 value11(10틱), value12(20틱), value13(30틱) 이상 까지 계속 수익 이었는데 갑자기 하락 하여 value12 보다 작아 지면 수익 청산 (20틱 수익 청산) if MarketPosition == -1 and(c < value21 OR c < value22 OR c < value23) then{ ExitShort("SS1",AtLimit, c > value12);} ## 매도 진입후 최대 수익이 value21(10틱), value22(20틱), value23(30틱) 이상 까지 수익 이었는데 갑자기 상승(손실) 하여 value22 보다 크면 수익 청산 (20틱 수익 청산) ## 손실 청산 if MarketPosition == 1 and(c < value21 OR c < value22 OR c < value23) then{ ExitLong("DD1",AtLimit, c < value24); } ## 매수 진입후 최대 손실이 value21(10틱), value22(20틱), value33(30틱) 이상 까지 손실이고 더 하락 하여 value24 보다 더 작아 지면 손실 청산 (손실 40틱 청산) if MarketPosition == -1 and (c > value11 OR c > value12 OR c > value13) then{ ExitShort("sp",AtLimit, c < value14); } ## 매도 진입후 최대 손실이 value11(10틱), value12(20틱), value13(30틱) 이상 까지 손실이고 더 상승 하여 value14 보다 크면 손실 청산 (손실 40틱 청산) * 매번 고맙습니다. * 청산이 너무 어렵네요.... ...
강조
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2019-07-23 12:27:53

안녕하세요 예스스탁입니다. 익절의 경우에는 10틱단위로 상승시 그 아래 단위로 익절을 하는 내용 같습니다. 하지만 손절의 경우, 올려주신 내용이면 40틱 손실이면 청산과 같습니다. 1틱,20틱,30틱을 구분할 이유가 없습니다. 익절이 수익이 감소할때 청산이므로 손절도 손실이 감소할떄 청산으로 작성해 드립니다. 수식 참고하셔서 수정보완해 사용하시기 바랍니다. var : 익절단위(0),손절단위(0),익절도달갯수(0),손절도달갯수(0); 익절단위 = PriceScale*10; 손절단위 = PriceScale*10; if MarketPosition == 1 Then { 익절도달갯수 = Floor((highest(H,BarsSinceEntry)-EntryPrice)/익절단위); 손절도달갯수 = Floor((EntryPrice-lowest(L,BarsSinceEntry))/손절단위); if 익절도달갯수 >= 1 Then ExitLong("bx1",AtStop,EntryPrice+익절단위*(익절도달갯수-1)); if 손절도달갯수 >= 1 Then ExitLong("bx2",AtLimit,EntryPrice-손절단위*(손절도달갯수-1)); } if MarketPosition == -1 Then { 익절도달갯수 = Floor((EntryPrice-lowest(L,BarsSinceEntry))/(PriceScale*10)); 손절도달갯수 = Floor((Highest(H,BarsSinceEntry)-EntryPrice)/(PriceScale*10)); if 익절도달갯수 >= 1 Then ExitShort("sx1",AtStop,EntryPrice-익절단위*(익절도달갯수-1)); if 손절도달갯수 >= 1 Then ExitShort("sx2",AtStop,EntryPrice+손절단위*(손절도달갯수-1)); } 즐거운 하루되세요 > 요타 님이 쓴 글입니다. > 제목 : 청산로직 요청 드립니다. > * 많은 도움에 항상 고맙 습니다. * 청산 때문에 머리가 아픕니다^^ * 수백번 해보지만 변수가 너무 많아서 한가지 로직 가지고는 청산이 안됨니다. <요청사항> 아래 수식 가지고 청산 로직이 가능 하도록 변형 수식 좀 하는데 잘 안됨니다. 수정 좀 부탁 드리겠습니다. *기준: 수익,손실 구간을 지정해 놓고 한구간 이상 떨어지면 자동 청산 입니다. → 주석 참고부탁 드립니다. ◈◈◈ 아래 한가지 케이스만 해 주시면 나름 공부 하면서 응용 하겠습니다. ◈◈◈ ## 구간 설정 : 10틱 단위로 상승과 하락 구간 설정 Inputs: HH1(10),HH2(20),HH3(30),HH4(40),HH5(50),HH6(60),HH7(70),HH8(80),HH9(90); Inputs: LL1(10),LL2(20),LL3(30),LL4(40),LL5(50),LL6(60),LL7(70),LL8(80),LL9(90); ## value11 = (진입가격+10틱) - 현재가 ## 수익 구간 value11 = PriceScale*HH1 - C ; ## 진입후 수익 틱수 value12 = PriceScale*HH2 - C ; value13 = PriceScale*HH3 - C ; value14 = PriceScale*HH4 - C ; value15 = PriceScale*HH5 - C ; value16 = PriceScale*HH6 - C ; value17 = PriceScale*HH7 - C ; value18 = PriceScale*HH8 - C ; value19 = PriceScale*HH9 - C ; ## value21 = 현재가 - (진입가격-10틱) ## 손실 구간 value21 = C - PriceScale*LL1 ; ## 진입후 손실 틱수 value22 = C - PriceScale*LL2 ; value23 = C - PriceScale*LL3 ; value24 = C - PriceScale*LL4 ; value25 = C - PriceScale*LL5 ; value26 = C - PriceScale*LL6 ; value27 = C - PriceScale*LL7 ; value28 = C - PriceScale*LL8 ; value29 = C - PriceScale*LL9 ; ## 수익 청산 if MarketPosition == 1 and(c > value11 OR c > value12 OR c > value13) then{ ExitLong("DD1",AtLimit, c < value12); } ## 매수 진입후 최대 수익이 value11(10틱), value12(20틱), value13(30틱) 이상 까지 계속 수익 이었는데 갑자기 하락 하여 value12 보다 작아 지면 수익 청산 (20틱 수익 청산) if MarketPosition == -1 and(c < value21 OR c < value22 OR c < value23) then{ ExitShort("SS1",AtLimit, c > value12);} ## 매도 진입후 최대 수익이 value21(10틱), value22(20틱), value23(30틱) 이상 까지 수익 이었는데 갑자기 상승(손실) 하여 value22 보다 크면 수익 청산 (20틱 수익 청산) ## 손실 청산 if MarketPosition == 1 and(c < value21 OR c < value22 OR c < value23) then{ ExitLong("DD1",AtLimit, c < value24); } ## 매수 진입후 최대 손실이 value21(10틱), value22(20틱), value33(30틱) 이상 까지 손실이고 더 하락 하여 value24 보다 더 작아 지면 손실 청산 (손실 40틱 청산) if MarketPosition == -1 and (c > value11 OR c > value12 OR c > value13) then{ ExitShort("sp",AtLimit, c < value14); } ## 매도 진입후 최대 손실이 value11(10틱), value12(20틱), value13(30틱) 이상 까지 손실이고 더 상승 하여 value14 보다 크면 손실 청산 (손실 40틱 청산) * 매번 고맙습니다. * 청산이 너무 어렵네요.... ...