커뮤니티
손절전략 수식 확인 요청
2017-01-04 02:28:13
166
글번호 105556
안녕하세요.
예전에 선물매수와 매도인 경우에 손절 방식을 다르게 적용하는 방법을 문의햇엇는데요.
그때 답변은 대략 아래와 같았습니다.
if marketposition == 1 then setstoploss(기준1);
else setstoploss(기준2);
그런데 이 방법이 뭔가 이상한거 같습니다.
1) 위의 식에서 기준1과 기준2를 똑같이 하면, 매수와 매도에 대해서 동일한 손절기준을 적용하는 것입니다. 따라서 위의 식처럼 하지 않고, 그냥 setstoploss(기준) 하나만 적용해도 됩니다. 그런데 이렇게 할 경우와 위의 식처럼 할 경우의 결과 값이 다릅니다.
2) 또한, 위의 식에서 기준1에 해당하는 경우는 매수시의 손절 기준, 기준2에 해당하는 경우는 매도시의 손절 기준이라고 생각을 하였는데, 저렇게 해서 돌린 결과가 매수 매도 각각만 넣어서 적용한 것과 결과가 다릅니다.
3) 만약 "if marketposition == 1 then setstoploss(기준1)" 이렇게만 작성하면 매수에 대한 손절만 적용되는 것이라고 생각했는데, 매도에 대해서도 손절이 됩니다. 그런데 더 이해가 안가는 점은 가장 위에 있는 식처럼 적었을때처럼 손절이 되는 것이 아니라, 알수 없는 이상한 기준에 의해 손절이 됩니다.
4) 반대로 "if marketposition == 0 then setstoploss(기준2)" 을 적용해서 매수에 대한 결과가 바뀝니다.
혹시 이런 현상의 원인을 알려주실 수 있으신지요?
특히, if then만 사용하고, else를 사용하지 않았을때, 스탑로스 기준이 어느 범위까지 영향을 미치는 것인지 궁금합니다.
감사합니다.
답변 1
예스스탁 예스스탁 답변
2017-01-04 18:14:55
안녕하세요
예스스탁입니다.
1
K1그림은 #test1, K2그림은 #test2 식을 선물에 적용한 그림입니다.
기준1과 기준2가 같은 값이면
첨부된 그림과 같이 리포트는 동일나오게 됩니다.
즉 포지션이 변경되어도 동일값으로 셋팅이 되기 때문에
전체 포지션에 동일설정이 적용됩니다.
2
매수식과 매도식를 분리해서 각각 식작성후 적용하시면 리포트는 달라지게 됩니다.
매수와 매도식이 같이 있으면 스위칭이 되는 경우도 있는데
별도로 분리해서 작성하시면 스위칭으로 없이 진입후 청산이 없으면
포지션 변경이 없으므로 전체 리포트는 변경이 됩니다.
3
setstoploss로는 손절을 설정하는 함수입니다.
한번 지정한 값으로 손절이 설정(set)되면 다음조건이 만족하기 전에는 손절조건이 유지가 되어
모든 진입에 적용됩니다.
if marketposition == 1 then
setstoploss(기준1);
else
setstoploss(기준2);
if문은 봉완성시 조건을 체크하므로
봉완성시 매수포지션이면 기준1로 손절을 셋팅해서 다음 변경시 까지 유지
봉완성시 매도포지션이면 기준1로 손절을 셋팅해서 다음 변경시 까지 유지입니다.
만약 진입이 atstop이나 atlimit이면 봉미완성시에 진입이 되고
해당봉 완성시까지는 이전기준이 설정이 적용되고 진이봉 완성후 다음봉 부터
새로 설정이 됩니다.
그러므로 아래내용이면
차트상 첫 매수진입이후로는 기준1로 손절이 셋팅하여 계속 해당 설정이 적용됩니다.
if marketposition == 1 then
setstoploss(기준1);
매수만 적용하실 경우에는 아래와 같이 해제하는 내용을 작성해 주셔야 합니다.
if marketposition == 1 then
setstoploss(기준1);
else
setstoploss(0);
4
아래는 봉완성시 무포지션이면 다음변경까지 기준2로 손절을 셋팅한다라는 내용입니다.
if marketposition == 0 then setstoploss(기준2);
5
강제청산함수로 설정하지 않고
수식으로 아래와 같이 손절식을 작성해 사용하셔도 됩니다.
5-1 손절을 %로 설정(현재 setstoploss로 설정하신 내용인 %입니다)
input : 손절율(1);
if MarketPosition == 1 Then
exitlong("매수손절",AtStop,EntryPrice*(1-손절율/100));
if MarketPosition == -1 Then
ExitShort("매도손절",AtStop,EntryPrice*(1+손절율/100));
5-2 손절을 포인트(원)로 설정
input : 손절(1);
if MarketPosition == 1 Then
exitlong("매수손절",AtStop,EntryPrice-손절);
if MarketPosition == -1 Then
ExitShort("매도손절",AtStop,EntryPrice+손절);
5-2 손절을 틱수로 설정
input : 손절틱수(1);
if MarketPosition == 1 Then
exitlong("매수손절",AtStop,EntryPrice-PriceScale*손절틱수);
if MarketPosition == -1 Then
ExitShort("매도손절",AtStop,EntryPrice+PriceScale*손절틱수);
즐거운 하루되세요
> 중박주식 님이 쓴 글입니다.
> 제목 : 손절전략 수식 확인 요청
> 안녕하세요.
예전에 선물매수와 매도인 경우에 손절 방식을 다르게 적용하는 방법을 문의햇엇는데요.
그때 답변은 대략 아래와 같았습니다.
if marketposition == 1 then setstoploss(기준1);
else setstoploss(기준2);
그런데 이 방법이 뭔가 이상한거 같습니다.
1) 위의 식에서 기준1과 기준2를 똑같이 하면, 매수와 매도에 대해서 동일한 손절기준을 적용하는 것입니다. 따라서 위의 식처럼 하지 않고, 그냥 setstoploss(기준) 하나만 적용해도 됩니다. 그런데 이렇게 할 경우와 위의 식처럼 할 경우의 결과 값이 다릅니다.
2) 또한, 위의 식에서 기준1에 해당하는 경우는 매수시의 손절 기준, 기준2에 해당하는 경우는 매도시의 손절 기준이라고 생각을 하였는데, 저렇게 해서 돌린 결과가 매수 매도 각각만 넣어서 적용한 것과 결과가 다릅니다.
3) 만약 "if marketposition == 1 then setstoploss(기준1)" 이렇게만 작성하면 매수에 대한 손절만 적용되는 것이라고 생각했는데, 매도에 대해서도 손절이 됩니다. 그런데 더 이해가 안가는 점은 가장 위에 있는 식처럼 적었을때처럼 손절이 되는 것이 아니라, 알수 없는 이상한 기준에 의해 손절이 됩니다.
4) 반대로 "if marketposition == 0 then setstoploss(기준2)" 을 적용해서 매수에 대한 결과가 바뀝니다.
혹시 이런 현상의 원인을 알려주실 수 있으신지요?
특히, if then만 사용하고, else를 사용하지 않았을때, 스탑로스 기준이 어느 범위까지 영향을 미치는 것인지 궁금합니다.
감사합니다.