커뮤니티
해외선물 30분봉 시스템으로 운영하고 있습니다. 시간별로 분할 청산하려고 하는데요~
2018-10-05 08:22:18
197
글번호 122452
해외선물(쿠루드오일) 30분봉 시스템으로 운영하고 있습니다. 초보입니다.
30분봉 기준이며 진입 5계약으로 한번에 진입하고요 ( 시스템 설정에서 동일수량진입 5개 )
청산은 분할로 각각 AM 4시 , 4시30분, 5시 5시30분 6시 (30분마다 1계약식 현재가 매도)
하고 싶습니다.
진입 및 청산 아래식입니다.
오늘 꼭 부탁드리겠습니다. 오늘부터 적용해볼려구요~~~
아래식은 진입만 설정해 놓았구요... 시스템설정에서 당일청산을 활성화하여 특정시간에 일괄매도로 시행했습니다. 하지만 특정시간을 5회 분할로 청산하려고 하는것입니다.
매수/매도 진입 모두 동일하게 청산도 같이 진행합니다. (위에 언급된 시간에 )
input : P1(1),P2(1),P4(1),P5(1),N1(1),N2(2);
var : cnt(0),sum1(0),sum2(0),avg1(0),avg2(0),T(0),mav2(0),mav3(0);
var : sum3(0);
if DayClose(N2) > 0 Then
{
sum1 = 0;
sum2 = 0;
for cnt = 0 to N2-1
{
if cnt < N1 Then
sum1 = sum1 + DayClose(cnt);
if cnt < N2 Then
sum2 = sum2 + DayClose(cnt+1);
}
avg1 = sum1/N1;
avg2 = sum2/N2;
T = 0;
if avg1 >= avg2 Then
T = 1;
if avg1 < avg2 Then
T = -1;
if T == 1 Then
mav2=p2 ;
if T == -1 Then
mav2=p5;
if T == 1 Then
mav3=p1 ;
if T == -1 Then
mav3=p4 ;
sum3 = 0;
for cnt = 1 to 20
{
sum3 = sum3 + (DayHigh(cnt)-DayLow(cnt));
}
value1 = sum3/20 ;
If MarketPosition == 0 and C >= (dayopen+value1*mav3) Then
{
Buy("매수");
}
If MarketPosition == 0 and C <= (dayopen-value1*mav2) Then
{
sell("매도");
}
}
답변 3
예스스탁 예스스탁 답변
2018-10-05 14:19:50
안녕하세요
예스스탁입니다.
input : P1(1),P2(1),P4(1),P5(1),N1(1),N2(2);
var : cnt(0),sum1(0),sum2(0),avg1(0),avg2(0),T(0),mav2(0),mav3(0);
var : sum3(0);
if DayClose(N2) > 0 Then
{
sum1 = 0;
sum2 = 0;
for cnt = 0 to N2-1
{
if cnt < N1 Then
sum1 = sum1 + DayClose(cnt);
if cnt < N2 Then
sum2 = sum2 + DayClose(cnt+1);
}
avg1 = sum1/N1;
avg2 = sum2/N2;
T = 0;
if avg1 >= avg2 Then
T = 1;
if avg1 < avg2 Then
T = -1;
if T == 1 Then
mav2=p2 ;
if T == -1 Then
mav2=p5;
if T == 1 Then
mav3=p1 ;
if T == -1 Then
mav3=p4 ;
sum3 = 0;
for cnt = 1 to 20
{
sum3 = sum3 + (DayHigh(cnt)-DayLow(cnt));
}
value1 = sum3/20 ;
If MarketPosition == 0 and C >= (dayopen+value1*mav3) Then
{
Buy("매수",OnClose,def,5);
}
If MarketPosition == 0 and C <= (dayopen-value1*mav2) Then
{
sell("매도",OnClose,def,5);
}
}
if MarketPosition == 1 Then
{
if stime == 040000 Then
ExitLong("bx1",OnClose,def,"",1,1);
if stime == 043000 Then
ExitLong("bx2",OnClose,def,"",1,1);
if stime == 050000 Then
ExitLong("bx3",OnClose,def,"",1,1);
if stime == 053000 Then
ExitLong("bx4",OnClose,def,"",1,1);
if stime == 060000 Then
ExitLong("bx5",OnClose,def,"",1,1);
}
if MarketPosition == -1 Then
{
if stime == 040000 Then
ExitShort("sx1",OnClose,def,"",1,1);
if stime == 043000 Then
ExitShort("sx2",OnClose,def,"",1,1);
if stime == 050000 Then
ExitShort("sx3",OnClose,def,"",1,1);
if stime == 053000 Then
ExitShort("sx4",OnClose,def,"",1,1);
if stime == 060000 Then
ExitShort("sx5",OnClose,def,"",1,1);
}
즐거운 하루되세요
> 이형지 님이 쓴 글입니다.
> 제목 : 해외선물 30분봉 시스템으로 운영하고 있습니다. 시간별로 분할 청산하려고 하는데요~
> 해외선물(쿠루드오일) 30분봉 시스템으로 운영하고 있습니다. 초보입니다.
30분봉 기준이며 진입 5계약으로 한번에 진입하고요 ( 시스템 설정에서 동일수량진입 5개 )
청산은 분할로 각각 AM 4시 , 4시30분, 5시 5시30분 6시 (30분마다 1계약식 현재가 매도)
하고 싶습니다.
진입 및 청산 아래식입니다.
오늘 꼭 부탁드리겠습니다. 오늘부터 적용해볼려구요~~~
아래식은 진입만 설정해 놓았구요... 시스템설정에서 당일청산을 활성화하여 특정시간에 일괄매도로 시행했습니다. 하지만 특정시간을 5회 분할로 청산하려고 하는것입니다.
매수/매도 진입 모두 동일하게 청산도 같이 진행합니다. (위에 언급된 시간에 )
input : P1(1),P2(1),P4(1),P5(1),N1(1),N2(2);
var : cnt(0),sum1(0),sum2(0),avg1(0),avg2(0),T(0),mav2(0),mav3(0);
var : sum3(0);
if DayClose(N2) > 0 Then
{
sum1 = 0;
sum2 = 0;
for cnt = 0 to N2-1
{
if cnt < N1 Then
sum1 = sum1 + DayClose(cnt);
if cnt < N2 Then
sum2 = sum2 + DayClose(cnt+1);
}
avg1 = sum1/N1;
avg2 = sum2/N2;
T = 0;
if avg1 >= avg2 Then
T = 1;
if avg1 < avg2 Then
T = -1;
if T == 1 Then
mav2=p2 ;
if T == -1 Then
mav2=p5;
if T == 1 Then
mav3=p1 ;
if T == -1 Then
mav3=p4 ;
sum3 = 0;
for cnt = 1 to 20
{
sum3 = sum3 + (DayHigh(cnt)-DayLow(cnt));
}
value1 = sum3/20 ;
If MarketPosition == 0 and C >= (dayopen+value1*mav3) Then
{
Buy("매수");
}
If MarketPosition == 0 and C <= (dayopen-value1*mav2) Then
{
sell("매도");
}
}
이형지
2018-10-07 14:01:21
운영자님 요청사항이 있습니다.
설정창에 "강제청산창"에 손절매를 2PT 및 목표수익을 2PT로 해놓은후 시뮬레이션을 돌리면
차트에서 보면 수익실현하고 바로 진입이 되어버리네요...
손절매 또는 목표수익 달성시 5시간안에 진입(매수/매도)이 되지 않도록 할수 있는 수식 좀 부탁드리겠습니다.
input : P1(1),P2(1),P4(1),P5(1),N1(1),N2(2);
var : cnt(0),sum1(0),sum2(0),avg1(0),avg2(0),T(0),mav2(0),mav3(0);
var : sum3(0);
if DayClose(N2) > 0 Then
{
sum1 = 0;
sum2 = 0;
for cnt = 0 to N2-1
{
if cnt < N1 Then
sum1 = sum1 + DayClose(cnt);
if cnt < N2 Then
sum2 = sum2 + DayClose(cnt+1);
}
avg1 = sum1/N1;
avg2 = sum2/N2;
T = 0;
if avg1 >= avg2 Then
T = 1;
if avg1 < avg2 Then
T = -1;
if T == 1 Then
mav2=p2 ;
if T == -1 Then
mav2=p5;
if T == 1 Then
mav3=p1 ;
if T == -1 Then
mav3=p4 ;
sum3 = 0;
for cnt = 1 to 20
{
sum3 = sum3 + (DayHigh(cnt)-DayLow(cnt));
}
value1 = sum3/20 ;
If MarketPosition == 0 and C >= (dayopen+value1*mav3) Then
{
Buy("매수",OnClose,def,5);
}
If MarketPosition == 0 and C <= (dayopen-value1*mav2) Then
{
sell("매도",OnClose,def,5);
}
}
if MarketPosition == 1 Then
{
if stime == 040000 Then
ExitLong("bx1",OnClose,def,"",1,1);
if stime == 043000 Then
ExitLong("bx2",OnClose,def,"",1,1);
if stime == 050000 Then
ExitLong("bx3",OnClose,def,"",1,1);
if stime == 053000 Then
ExitLong("bx4",OnClose,def,"",1,1);
if stime == 060000 Then
ExitLong("bx5",OnClose,def,"",1,1);
}
if MarketPosition == -1 Then
{
if stime == 040000 Then
ExitShort("sx1",OnClose,def,"",1,1);
if stime == 043000 Then
ExitShort("sx2",OnClose,def,"",1,1);
if stime == 050000 Then
ExitShort("sx3",OnClose,def,"",1,1);
if stime == 053000 Then
ExitShort("sx4",OnClose,def,"",1,1);
if stime == 060000 Then
ExitShort("sx5",OnClose,def,"",1,1);
}
예스스탁 예스스탁 답변
2018-10-08 10:19:58
안녕하세요
예스스탁입니다.
input : P1(1),P2(1),P4(1),P5(1),N1(1),N2(2);
var : cnt(0),sum1(0),sum2(0),avg1(0),avg2(0),T(0),mav2(0),mav3(0);
var : sum3(0);
Condition1 = MarketPosition == 0 and ExitDate(1) == sdate and
(IsExitName("StopLoss",1) or IsExitName("StopProfitTarget",1)) and
TimeToMinutes(stime) <= TimeToMinutes(ExitTime(1))+60;
if DayClose(N2) > 0 Then
{
sum1 = 0;
sum2 = 0;
for cnt = 0 to N2-1
{
if cnt < N1 Then
sum1 = sum1 + DayClose(cnt);
if cnt < N2 Then
sum2 = sum2 + DayClose(cnt+1);
}
avg1 = sum1/N1;
avg2 = sum2/N2;
T = 0;
if avg1 >= avg2 Then
T = 1;
if avg1 < avg2 Then
T = -1;
if T == 1 Then
mav2=p2 ;
if T == -1 Then
mav2=p5;
if T == 1 Then
mav3=p1 ;
if T == -1 Then
mav3=p4 ;
sum3 = 0;
for cnt = 1 to 20
{
sum3 = sum3 + (DayHigh(cnt)-DayLow(cnt));
}
value1 = sum3/20 ;
If MarketPosition == 0 and C >= (dayopen+value1*mav3) and Condition1 == false Then
{
Buy("매수",OnClose,def,5);
}
If MarketPosition == 0 and C <= (dayopen-value1*mav2) and Condition1 == false Then
{
sell("매도",OnClose,def,5);
}
}
if MarketPosition == 1 Then
{
if stime == 040000 Then
ExitLong("bx1",OnClose,def,"",1,1);
if stime == 043000 Then
ExitLong("bx2",OnClose,def,"",1,1);
if stime == 050000 Then
ExitLong("bx3",OnClose,def,"",1,1);
if stime == 053000 Then
ExitLong("bx4",OnClose,def,"",1,1);
if stime == 060000 Then
ExitLong("bx5",OnClose,def,"",1,1);
}
if MarketPosition == -1 Then
{
if stime == 040000 Then
ExitShort("sx1",OnClose,def,"",1,1);
if stime == 043000 Then
ExitShort("sx2",OnClose,def,"",1,1);
if stime == 050000 Then
ExitShort("sx3",OnClose,def,"",1,1);
if stime == 053000 Then
ExitShort("sx4",OnClose,def,"",1,1);
if stime == 060000 Then
ExitShort("sx5",OnClose,def,"",1,1);
}
즐거운 하루되세요
> 이형지 님이 쓴 글입니다.
> 제목 : Re : Re : 해외선물 30분봉 시스템으로 운영하고 있습니다. 시간별로 분할 청산하려고
> 운영자님 요청사항이 있습니다.
설정창에 "강제청산창"에 손절매를 2PT 및 목표수익을 2PT로 해놓은후 시뮬레이션을 돌리면
차트에서 보면 수익실현하고 바로 진입이 되어버리네요...
손절매 또는 목표수익 달성시 5시간안에 진입(매수/매도)이 되지 않도록 할수 있는 수식 좀 부탁드리겠습니다.
input : P1(1),P2(1),P4(1),P5(1),N1(1),N2(2);
var : cnt(0),sum1(0),sum2(0),avg1(0),avg2(0),T(0),mav2(0),mav3(0);
var : sum3(0);
if DayClose(N2) > 0 Then
{
sum1 = 0;
sum2 = 0;
for cnt = 0 to N2-1
{
if cnt < N1 Then
sum1 = sum1 + DayClose(cnt);
if cnt < N2 Then
sum2 = sum2 + DayClose(cnt+1);
}
avg1 = sum1/N1;
avg2 = sum2/N2;
T = 0;
if avg1 >= avg2 Then
T = 1;
if avg1 < avg2 Then
T = -1;
if T == 1 Then
mav2=p2 ;
if T == -1 Then
mav2=p5;
if T == 1 Then
mav3=p1 ;
if T == -1 Then
mav3=p4 ;
sum3 = 0;
for cnt = 1 to 20
{
sum3 = sum3 + (DayHigh(cnt)-DayLow(cnt));
}
value1 = sum3/20 ;
If MarketPosition == 0 and C >= (dayopen+value1*mav3) Then
{
Buy("매수",OnClose,def,5);
}
If MarketPosition == 0 and C <= (dayopen-value1*mav2) Then
{
sell("매도",OnClose,def,5);
}
}
if MarketPosition == 1 Then
{
if stime == 040000 Then
ExitLong("bx1",OnClose,def,"",1,1);
if stime == 043000 Then
ExitLong("bx2",OnClose,def,"",1,1);
if stime == 050000 Then
ExitLong("bx3",OnClose,def,"",1,1);
if stime == 053000 Then
ExitLong("bx4",OnClose,def,"",1,1);
if stime == 060000 Then
ExitLong("bx5",OnClose,def,"",1,1);
}
if MarketPosition == -1 Then
{
if stime == 040000 Then
ExitShort("sx1",OnClose,def,"",1,1);
if stime == 043000 Then
ExitShort("sx2",OnClose,def,"",1,1);
if stime == 050000 Then
ExitShort("sx3",OnClose,def,"",1,1);
if stime == 053000 Then
ExitShort("sx4",OnClose,def,"",1,1);
if stime == 060000 Then
ExitShort("sx5",OnClose,def,"",1,1);
}
이전글