커뮤니티
기존 수식에 해외선물 토요일 새벽 5시 30분에 무조건 청산하는 수식을 넣어주시면 감사합니
2019-01-23 08:54:24
155
글번호 125507
아래 제가 사용하는 수식인데요... 주말에는 편하게 지내고 싶어서
30분봉으로 운영하고 있습니다.
토요일 새벽 5시 30분에는 무조건(수익이든 아니든) 청산하는 수식 반영 부탁해요~~
================================================================
input : p1(10),p2(10),af(0.02), maxAF(0.2);
input : 즉시익절1(50),봉완성익절1(10),올랐다본전틱수1(34),본전청산1(-34),즉시손절1(76),봉완성손절1(69);
input : 즉시익절2(2),봉완성익절2(5),올랐다본전틱수2(33),본전청산2(-11),즉시손절2(82),봉완성손절2(69);
input : N1(1),N2(2);
Input :N3(5),N4(3),매수제한(0.1),매도제한(0.14);
input : 즉시익절3(8),봉완성익절3(54),올랐다본전틱수3(25),본전청산3(-35),즉시손절3(76),봉완성손절3(69);
input : 즉시익절4(8),봉완성익절4(50),올랐다본전틱수4(35),본전청산4(-12),즉시손절4(63),봉완성손절4(53);
var : cnt(0),sum1(0),sum2(0),avg1(0),avg2(0),avg3(0),T(0),mav2(0),mav3(0),value(0);
var : sum3(0),Tcond(false);
var1 = CSar(af,maxAF);
Var4 = highest(H,N3);
Var5 = lowest(L,N3);
var1 = CSar(af,maxAF);
Var6 = highest(H,N4);
Var7 = lowest(L,N4);
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
{
#골드가 발생하면
if var1 > C Then
{
#value1에 봉번호 저장
value1 = index;
#value2에 종가 저장
value2 = C;
}
#데드가 발생하면
If var1 < C Then
{
#value3에 봉번호 저장
value3 = index;
#value4에 종가 저장
value4 = C;
}
#무포지션이고
#골드이후 10개봉이상 경과했고
#종가가 직전 10봉의 최고가보다 크고
#종가가 골드봉의 종가보다 크면
#매수
if MarketPosition == 0 and
index >= value1+P1 and
C > highest(H,P1)[1] and
C <= Var4-(Var4-Var5)*매수제한 and
C > value2 then
buy("매수",OnClose,def,1);
#무포지션이고
#데드이후 10개봉이상 경과했고
#종가가 직전 10봉의 최저가보다 작고
#종가가 데드봉의 종가보다 작으면
#매도
if MarketPosition == 0 and
index >= value3+P2 and
C < Lowest(L,P2)[1] and
C >= Var7+(Var6-Var7)*매도제한 and
C < value4 then
Sell("매도",OnClose,def,1);
if MarketPosition == 1 then
{
ExitLong("즉시익절1",AtLimit,EntryPrice+PriceScale*즉시익절1);
if C >= EntryPrice+PriceScale*봉완성익절1 Then
ExitLong("봉완성익절1");
if highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*올랐다본전틱수1 Then
ExitLong("본전청산1",AtStop,EntryPrice+PriceScale*(본전청산1));
ExitLong("즉시손절1",AtStop,EntryPrice-PriceScale*즉시손절1);
if c <= EntryPrice-PriceScale*봉완성손절1 Then
ExitLong("봉완성손절1");
}
if MarketPosition == -1 then
{
ExitShort("즉시익절2",AtLimit,EntryPrice-PriceScale*즉시익절2);
if C <= EntryPrice-PriceScale*봉완성익절2 Then
ExitShort("봉완성익절2");
if lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*올랐다본전틱수2 Then
ExitShort("본전청산2",AtStop,EntryPrice-PriceScale*(본전청산2));
ExitShort("즉시손절2",AtStop,EntryPrice+PriceScale*즉시손절2);
if c >= EntryPrice+PriceScale*봉완성손절2 Then
ExitShort("봉완성손절2");
}
}
}
if T == -1 Then
{
#골드가 발생하면
if var1 > C Then
{
#value1에 봉번호 저장
value1 = index;
#value2에 종가 저장
value2 = C;
}
#데드가 발생하면
If var1 < C Then
{
#value3에 봉번호 저장
value3 = index;
#value4에 종가 저장
value4 = C;
}
#무포지션이고
#골드이후 10개봉이상 경과했고
#종가가 직전 10봉의 최고가보다 크고
#종가가 골드봉의 종가보다 크면
#매수
if MarketPosition == 0 and
index >= value1+P1 and
C > highest(H,P1)[1] and
C <= Var4-(Var4-Var5)*매수제한 and
C > value2 then
buy("매수2",OnClose,def,1);
#무포지션이고
#데드이후 10개봉이상 경과했고
#종가가 직전 10봉의 최저가보다 작고
#종가가 데드봉의 종가보다 작으면
#매도
if MarketPosition == 0 and
index >= value3+P2 and
C < Lowest(L,P2)[1] and
C >= Var7+(Var6-Var7)*매도제한 and
C < value4 then
Sell("매도2",OnClose,def,1);
if MarketPosition == 1 then
{
ExitLong("즉시익절3",AtLimit,EntryPrice+PriceScale*즉시익절3);
if C >= EntryPrice+PriceScale*봉완성익절3 Then
ExitLong("봉완성익절3");
if highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*올랐다본전틱수3 Then
ExitLong("본전청산3",AtStop,EntryPrice+PriceScale*(본전청산3));
ExitLong("즉시손절3",AtStop,EntryPrice-PriceScale*즉시손절3);
if c <= EntryPrice-PriceScale*봉완성손절3 Then
ExitLong("봉완성손절3");
}
if MarketPosition == -1 then
{
ExitShort("즉시익절4",AtLimit,EntryPrice-PriceScale*즉시익절4);
if C <= EntryPrice-PriceScale*봉완성익절4 Then
ExitShort("봉완성익절4");
if lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*올랐다본전틱수4 Then
ExitShort("본전청산4",AtStop,EntryPrice-PriceScale*(본전청산4));
ExitShort("즉시손절4",AtStop,EntryPrice+PriceScale*즉시손절4);
if c >= EntryPrice+PriceScale*봉완성손절4 Then
ExitShort("봉완성손절4");
}
}
===========================================
답변 1
예스스탁 예스스탁 답변
2019-01-24 14:22:17
안녕하세요
예스스탁입니다.
수식 하단에 아래식 추가하시면 됩니다.
if bdate != bdate[1] Then
SetStopEndofday(0);
if sdate != sdate[1] and DayOfWeek(sdate) == 6 Then
SetStopEndofday(053000);
즐거운 하루되세요
> 이형지 님이 쓴 글입니다.
> 제목 : 기존 수식에 해외선물 토요일 새벽 5시 30분에 무조건 청산하는 수식을 넣어주시면 감