예스스탁
예스스탁 답변
2020-03-17 15:35:04
안녕하세요
예스스탁입니다.
지정한 시간범위 안에 진입후에 손절이나 익절이 안나오면 익일에 발생하게 되므로
지정한 익절과 손절보다 클수 있습니다.
input : StartTime1(120000),EndTime1(180000),진입횟수1(1);
input : StartTime2(220000),EndTime2(040000),진입횟수2(1);
input : xTime(054000);
input : P1(5),P2(20);
input : 익절(0.5),손절(0.5);
var : Tcond1(false),entry1(0),Tcond2(false),entry2(0);
if sdate != sdate[1] Then
SetStopEndofday(xtime);
if bdate != bdate[1] Then
SetStopEndofday(0);
if (sdate != sdate[1] and stime >= StartTime1) or
(sdate == sdate[1] and stime >= StartTime1 and stime[1] < StartTime1) Then
{
Tcond1 = true;
entry1 = 0;
}
if (sdate != sdate[1] and stime >= EndTime1) or
(sdate == sdate[1] and stime >= EndTime1 and stime[1] < EndTime1) Then
Tcond1 = False;
if (sdate != sdate[1] and stime >= StartTime2) or
(sdate == sdate[1] and stime >= StartTime2 and stime[1] < StartTime2) Then
{
Tcond2 = true;
entry2 = 0;
}
if (sdate != sdate[1] and stime >= EndTime2) or
(sdate == sdate[1] and stime >= EndTime2 and stime[1] < EndTime2) Then
Tcond2 = False;
var1 = ma(C,P1);
var2 = ma(C,P2);
if Tcond1 == true then
{
if MarketPosition == 0 and MarketPosition != MarketPosition[1] Then
entry1 = entry1+1;
if entry1 < 진입횟수1 then
{
if MarketPosition == 0 and crossup(var1,var2) Then
buy("b1");
if MarketPosition == 0 and CrossDown(var1,var2) Then
sell("s1");
}
SetStopProfittarget(익절,PointStop);
SetStopLoss(손절,PointStop);
}
else if Tcond2 == true then
{
if MarketPosition == 0 and MarketPosition != MarketPosition[1] Then
entry2 = entry2+1;
if entry2 < 진입횟수2 then
{
if MarketPosition == 0 and crossup(var1,var2) Then
buy("b2");
if MarketPosition == 0 and CrossDown(var1,var2) Then
sell("s2");
}
SetStopProfittarget(익절,PointStop);
SetStopLoss(손절,PointStop);
}
Else
{
SetStopProfittarget(0);#해제
SetStopLoss(0);#해제
}
즐거운 하루되세요
> 머어얼 님이 쓴 글입니다.
> 제목 : 연달아 부탁드려 죄송합니다~ 수정 부탁드립니다^^;;
> 밑에 붙여넣은 내용은 기존 질문했던 내용과 관리자님이 도움주신 내용 복사해서 붙여넣었습니다.
전략을 적용해보니 손절 익절을 0.5p 씩 했음에도 불구하고 최대수익이 2.89p 최대손실이
-2.17 이렇게 나오는대요. 아마도 0시가 넘은경우에 저렇게 되는듯 싶기도하고 익일로
오버되는 경우도 있어서 저런 수익 및 손실이 나오는거같기도 합니다.
수정 부탁드리는 부분은..
특정진입시간대를 2개 box로 나누고 싶은대 변수로도 조정가능하게끔 하고싶습니다.
가령 12시~18시(1box:변수에서 조정가능토록)에 1번,
22시~익일04시에(2box:변수에서 조정가능토록) 1번 진입하도록 하고싶습니다.
진입횟수 변수를 1로 조정하면 1box에서만 나오는것이 맞는것이지요?
그리고 1번째 진입이던 2번째 진입이던 포지션 집입중이면 반대신호 조건이 충족되더라
도 신호가 나오지않고 손절청산 및 익절청산으로 포지션 정리를 하고싶습니다.
(1box시간대에 매수신호가 나와 매수포지션이면 1box시간대에 반대신호 조건이 충족되어도
신호가 무시되어 익절 및 손절 가격 도달할때까지 포지션 유지. 포지션 유지상태로 2box
시간대에 까지 간다하면 2box 시간대에도 조건충족으로 나오는 신호는 나오지않게하고 기
존 포지션 유지. 만약 익절 및 손절폭까지 안온다면 05시40분 당일청산)
감사합니다~ 건강하시고 편한밤 되세요~!!
-------------------------------------------------------------------------------
안녕하세요
예스스탁입니다.
input : StartTime(120000),EndTime(180000);
input : P1(5),P2(20);
input : 진입횟수(2),익절(0.5),손절(0.5);
var : Tcond(false),entry(0);
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
Tcond = true;
entry = 0;
}
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
Tcond = False;
var1 = ma(C,P1);
var2 = ma(C,P2);
if Tcond == true then
{
if MarketPosition == 0 and MarketPosition != MarketPosition[1] Then
entry = entry+1;
if entry < 진입횟수 then
{
if MarketPosition == 0 and crossup(var1,var2) Then
buy("b");
if MarketPosition == 0 and CrossDown(var1,var2) Then
sell("s");
}
SetStopProfittarget(익절,PointStop);
SetStopLoss(손절,PointStop);
}
Else
{
SetStopProfittarget(0);#해제
SetStopLoss(0);#해제
}
즐거운 하루되세요
> 머어얼 님이 쓴 글입니다.
> 제목 : 수고 많으십니다 매번 번거롭게 해드려 죄송합니다~ 수식 부탁좀 드립니다~
> 해외선물에 적용할 전략이고, 주가이동평균5일선이 주가이동평균20일선을 상향 돌파하면
매수 / 하향 돌파하면 매도하는 수식인대요~ 손절 0.5p / 익절 0.5p
단, 변수로 조정 가능하게끔 하려고 하는것은 1일 1회 혹은 2회 진입 / 특정시간대에만
진입하게끔 조정하고 싶습니다 (예: 오후12시부터 오후 6시사이에 주가이동평균선이 상향
및 하향 돌파하면 매수 및 매도 1회 진입, 오후 11시부터 익일 오전3시사이에 주가이동평
균선이 상향 돌파하면 매수 및 하향돌파하면 매도 1회진입.
단, 진입신호에 따라 매수던 매도던 포지션 진입상황에서는 반대조건이 충족하더라도
신호가 나오는게 아니라 그 포지션을 유지하고 한번 진입하면
0.5p손절이던 0.5p익절로 마무리하려고 합니다.
매번 도움주셔서 감사합니다~ 수식 부탁 드립니다~ 건강하시고 수고하세요~!!