커뮤니티
리버스 익절구간 재질문 드립니다.
2011-08-01 09:45:02
917
글번호 41490
안녕하세요~
즐거운 주말되셨는지요?
지난주 질문드린 내용을 검증해보니 제 의도와 부합되기는 하는데,
약간의 문제점이 있어서 재질문드립니다.
수정을 요하는 부분은 [작성해주신 수식] 아래에 첨부하였습니다.
-----------------------------------------
[ 지난번 질문내용 ]
선물 분봉기준으로 다음과 같은 리버스 수식이 있을 때
If stime>=0905 then {
if 조건1 then Buy("B");
if 조건2 then Sell("S");
}
SetStopEndofday(1440);
** 익절기준 진입가대비 1%수익, 익절전 매수진입을 예로 들겠습니다. **
<< 손실을 포함한 익절이 발생하지 않는 범위에서 현재가가 움직일 때 >>
익절이 발생하지 않은 상태로, 위의 수식에 의하여 리버스 매매 계속
<< 익절 발생후 현재가격이 진입가와 익절가를 범위로 움직일 때 >>
1) 매수 진입후 1% 수익이 나면 익절을 하고
2) 익절후, 익절이전에 진입한 매수가에 도달하면 재진입
3) 매수진입가와 익절가 범위에서 현재가가 움직일 때 조건1,조건2에 의한 매수,매도는 없슴
즉, 익절전 매수진입가에 도달하면 매수 익절가에 도달하면 매수청산 반복만 가능
<< 익절가를 넘어서 현재가가 움직일 때 >>
매수-익절후 무포지션상태에서 조건2에 의한 매도만 가능
이시점부터는 익절이 발생하지 않은 새로운 시작으로 보고 설명된 모든 내용 반복
즉, 이때부터는 다시 리버스로 매매후 익절이 발생하면 설명된 내용 반복
<< 익절전 매수진입가 이하에서 현재가가 움직일 때 >>
상기 2)의 매수진입가에서 발생한 매수포지션 발생상태인데, 조건2 발생시 리버스 매매
이시점 역시 익절이 발생하지 않은 새로운 시작으로 보고 리버스 매매를 다시 하다가
익절이 발생하면 설명된 모든 내용을 반복함.
** 익절전이 매도진입이었다면 반대가 되겠습니다 **
---------------------------------------
[ 작성해주신 수식 ]
var : 조건1(false),조건2(false);
If stime>=090500 then {
if (MarketPosition == -1 or (MarketPosition == 0 and IsExitName("StopProfittarget",1) == false))
and 조건1 then Buy("B");
if (MarketPosition == 1 or (MarketPosition == 0 and IsExitName("StopProfittarget",1) == false))
and 조건2 then Sell("S");
}
if MarketPosition == 0 and IsExitName("StopProfittarget",1) Then{
if MarketPosition(1) == 1 Then{
buy("reB",Atlimit,EntryPrice(1));
if C > ExitPrice(1) and 조건2 Then
sell("SS");
}
if MarketPosition(1) == -1 Then{
Sell("reS",Atlimit,EntryPrice(1));
if C < ExitPrice(1) and 조건1 Then
buy("bb");
}
}
SetStopProfittarget(1,PointStop);
SetStopEndofday(144000);
-----------------------------
[ 수정 요망 사항 ]
위의 수식을 적용하여 검증해 보았는데,
당일 최초진입은 "B" 또는 "S"가 반드시 되어야 하는데,
"reB","reS","BB","SS"로 당일의 첫진입이 발생하는 경우가 발생하고 있습니다.
제 판단으로는 특히 장마감종료가 아닌 익절로 해당일의 매매가 종료된 경우
이런 현상이 발생하는 것으로 보입니다. (다른 경우도 있는지는 잘 모르겠습니다)
entrydate나 exitdate를 sdate와 연결하여 수정을 해봤는데 잘 안되네요.
장마감종료가 되었건 익절로 당일매매를 종료하였건,
다음 영업일은 다시 처음부터 매매를 시작하도록 부탁드립니다.
(즉, "B" 또는 "S"로 시작되고, 이후 지난 내용처럼 매매가 일어날 수 있도록...)
그럼 새롭게 시작하는 8월도 활기찬 시간되시기를 바라겠습니다.
감사합니다 !!!
답변 1
예스스탁 예스스탁 답변
2011-08-01 12:53:42
안녕하세요? 예스스탁입니다.
진입횟수를 제한하는 식을 이용해서 작성하면 될것 같습니다.
아래와 같이 작성해 보았습니다.
var : 조건1(false),조건2(false);
# 진입횟수제한식
Var : Count(0);
Count = 0 ;
For Value1 = 0 To 10 {
If EntryDate(Value1) == date Then
Count = Count + 1;
}
if EntriesToday < 1 then { //당일 진입이 한번도 없으면~
if 조건1 then Buy("B1");
if 조건2 then Sell("S1");
}
else { //당일 한번 이상 진입이 있으면~
If stime>=090500 then {
if (MarketPosition == -1 or (MarketPosition == 0 and IsExitName("StopProfittarget",1) == false))
and 조건1 then Buy("B");
if (MarketPosition == 1 or (MarketPosition == 0 and IsExitName("StopProfittarget",1) == false))
and 조건2 then Sell("S");
}
if MarketPosition == 0 and IsExitName("StopProfittarget",1) Then{
if MarketPosition(1) == 1 Then{
buy("reB",Atlimit,EntryPrice(1));
if C > ExitPrice(1) and 조건2 Then
sell("SS");
}
if MarketPosition(1) == -1 Then{
Sell("reS",Atlimit,EntryPrice(1));
if C < ExitPrice(1) and 조건1 Then
buy("bb");
}
}
}
SetStopProfittarget(1,PointStop);
SetStopEndofday(144000);
감사합니다.
> 새로운세상 님이 쓴 글입니다.
> 제목 : 리버스 익절구간 재질문 드립니다.
> 안녕하세요~
즐거운 주말되셨는지요?
지난주 질문드린 내용을 검증해보니 제 의도와 부합되기는 하는데,
약간의 문제점이 있어서 재질문드립니다.
수정을 요하는 부분은 [작성해주신 수식] 아래에 첨부하였습니다.
-----------------------------------------
[ 지난번 질문내용 ]
선물 분봉기준으로 다음과 같은 리버스 수식이 있을 때
If stime>=0905 then {
if 조건1 then Buy("B");
if 조건2 then Sell("S");
}
SetStopEndofday(1440);
** 익절기준 진입가대비 1%수익, 익절전 매수진입을 예로 들겠습니다. **
<< 손실을 포함한 익절이 발생하지 않는 범위에서 현재가가 움직일 때 >>
익절이 발생하지 않은 상태로, 위의 수식에 의하여 리버스 매매 계속
<< 익절 발생후 현재가격이 진입가와 익절가를 범위로 움직일 때 >>
1) 매수 진입후 1% 수익이 나면 익절을 하고
2) 익절후, 익절이전에 진입한 매수가에 도달하면 재진입
3) 매수진입가와 익절가 범위에서 현재가가 움직일 때 조건1,조건2에 의한 매수,매도는 없슴
즉, 익절전 매수진입가에 도달하면 매수 익절가에 도달하면 매수청산 반복만 가능
<< 익절가를 넘어서 현재가가 움직일 때 >>
매수-익절후 무포지션상태에서 조건2에 의한 매도만 가능
이시점부터는 익절이 발생하지 않은 새로운 시작으로 보고 설명된 모든 내용 반복
즉, 이때부터는 다시 리버스로 매매후 익절이 발생하면 설명된 내용 반복
<< 익절전 매수진입가 이하에서 현재가가 움직일 때 >>
상기 2)의 매수진입가에서 발생한 매수포지션 발생상태인데, 조건2 발생시 리버스 매매
이시점 역시 익절이 발생하지 않은 새로운 시작으로 보고 리버스 매매를 다시 하다가
익절이 발생하면 설명된 모든 내용을 반복함.
** 익절전이 매도진입이었다면 반대가 되겠습니다 **
---------------------------------------
[ 작성해주신 수식 ]
var : 조건1(false),조건2(false);
If stime>=090500 then {
if (MarketPosition == -1 or (MarketPosition == 0 and IsExitName("StopProfittarget",1) == false))
and 조건1 then Buy("B");
if (MarketPosition == 1 or (MarketPosition == 0 and IsExitName("StopProfittarget",1) == false))
and 조건2 then Sell("S");
}
if MarketPosition == 0 and IsExitName("StopProfittarget",1) Then{
if MarketPosition(1) == 1 Then{
buy("reB",Atlimit,EntryPrice(1));
if C > ExitPrice(1) and 조건2 Then
sell("SS");
}
if MarketPosition(1) == -1 Then{
Sell("reS",Atlimit,EntryPrice(1));
if C < ExitPrice(1) and 조건1 Then
buy("bb");
}
}
SetStopProfittarget(1,PointStop);
SetStopEndofday(144000);
-----------------------------
[ 수정 요망 사항 ]
위의 수식을 적용하여 검증해 보았는데,
당일 최초진입은 "B" 또는 "S"가 반드시 되어야 하는데,
"reB","reS","BB","SS"로 당일의 첫진입이 발생하는 경우가 발생하고 있습니다.
제 판단으로는 특히 장마감종료가 아닌 익절로 해당일의 매매가 종료된 경우
이런 현상이 발생하는 것으로 보입니다. (다른 경우도 있는지는 잘 모르겠습니다)
entrydate나 exitdate를 sdate와 연결하여 수정을 해봤는데 잘 안되네요.
장마감종료가 되었건 익절로 당일매매를 종료하였건,
다음 영업일은 다시 처음부터 매매를 시작하도록 부탁드립니다.
(즉, "B" 또는 "S"로 시작되고, 이후 지난 내용처럼 매매가 일어날 수 있도록...)
그럼 새롭게 시작하는 8월도 활기찬 시간되시기를 바라겠습니다.
감사합니다 !!!
다음글
이전글