예스스탁
예스스탁 답변
2021-05-04 14:22:40
안녕하세요
예스스탁입니다.
1
작성하신 수식에는 10시16분봉이 첫봉입니다.
답변드린 수식에는 if Bdate != Bdate[1] Then가 영업일 변경시간기준 첫봉입니다.
적용하신 종목이 항셍과 같은 종목이면 영업일이 변경되는 봉은 오후 18시15분입니다.
10시16분이 if Bdate != Bdate[1] Then인 봉이 아닙니다.
수식에서 지정하신 101600부터 봉수를 카운트 하셔야 합니다.
2
수식에 매수1과 매도1이라는 명칭의 진입식이 없습니다.
매수와 매도를 매수1과 매도1로 변경하셔야 합니다.
3
input : 완전청산 (260);
input : 손절가 (65);
var : T1(0),T2(0);
#var : tX(0),BH(0),SH(0); #수익 틱수조건
var : T21(0),T26(0),T23(0),T24(0),T25(0); #수익틱수
var : T11(0),T22(0),T33(0),T44(0),T55(0); #수익틱수
var : Tcond(false); # 시간제한
var : mav1(0),mav2(0),Lcnt(0),Hcnt(0),BH(0),SL(0); #손절식 조건
var : T(0),S(0),idx(0),entry2(False); # 딱 한번 매매
var1 = ma(c,0);
var2 = ma(C,0);
var3 = ma(C,0);
var4 = ma(c,0);
//시간타이머식
if (sdate != sdate[1] and stime >= 101600) or
(sdate == sdate[1] and stime >= 101600 and stime[1] < 101600) Then
{
Tcond = true;
idx = 0;
entry2 = true;
}
idx = idx+1;
if (sdate != sdate[1] and stime >= 172000) or
(sdate == sdate[1] and stime >= 172000 and stime[1] < 172000) Then
{
Tcond = false;
if MarketPosition == 1 Then
ExitLong();
if MarketPosition == -1 Then
ExitShort();
}
if idx <= 10 then
{
if MarketPosition != 0 and MarketPosition != MarketPosition[1] and
(IsEntryName("매수1") == true or IsEntryName("매도1") == true) Then
entry2 = False;
}
if var1 > var2 and var1 > var3 and var1 > var4 and var4 > var2 Then
T1 = 1;
if var1 < var2 and var1 < var3 and var1 < var4 and var4 < var2 Then
T1 = -1;
var5 = ma(C,100);
if CrossUp(C,var5) Then
{
T = 1;
S = 0;
}
if CrossDown(C,var5) Then
{
T = -1;
S = 0;
}
if Tcond == true then
{
if T1 == 1 and T1[1] == -1 Then
buy("매수1");
if T1 == -1 and T1[1] == 1 Then
sell("매도1");
if T == 1 Then
{
S = S+1;
if idx >= 10 and S == 10 Then
{
if entry2 == true Then
{
Buy("매수2");
}
Entry2 = False;
}
}
if T == -1 Then
{
S = S+1;
if idx >= 10 and S == 10 then
{
if entry2 == true Then
{
Sell("매도2");
}
entry2 = False;
}
}
}
#매수 손절식
if MarketPosition == 1 Then
{
ExitLong("bx5",AtLimit,EntryPrice+PriceScale*완전청산,"",5,1);
ExitLong("bx6",AtStop,EntryPrice-PriceScale*손절가,"",5,1);
}
Else
Lcnt = 0;
#매도 손절식
if MarketPosition == -1 Then
{
ExitShort("sx5",AtLimit,EntryPrice-PriceScale*완전청산,"",5,1);
ExitShort("sx6",AtStop,EntryPrice+PriceScale*손절가,"",5,1);
}
Else
Hcnt = 0;
즐거운 하루되세요
> kjdkdh 님이 쓴 글입니다.
> 제목 : 검토좀 부탁합니다
> 안녕하세요
게시글 72215 와 기존 식을 추가 했습니다
이렇게 해도 저렇게 작동이 되지 않습니다
검토좀 해주시고요
문제점 1 틱차트 사용합니다
시간제한에 문제가 있습니다
문제점 2 문제점1의 문제를 해결하고자 게시글 72215 를 추가했는데도
역시 문제점이 해결되지 않습니다
참고로 봉갯수도 변경해보아도 같네요
이미지를 보시면 특정 이평선 위에 아래를 기준은 준것입니다
갯수제한 때문인지 작동이 되지 않습니다
수정좀 부탁합니다
input : 완전청산 (260);
input : 손절가 (65);
var : T1(0),T2(0);
#var : tX(0),BH(0),SH(0); #수익 틱수조건
var : T21(0),T26(0),T23(0),T24(0),T25(0); #수익틱수
var : T11(0),T22(0),T33(0),T44(0),T55(0); #수익틱수
var : Tcond(false); # 시간제한
var : mav1(0),mav2(0),Lcnt(0),Hcnt(0),BH(0),SL(0); #손절식 조건
var : T(0),S(0),idx(0),entry2(False); # 딱 한번 매매
var1 = ma(c,0);
var2 = ma(C,0);
var3 = ma(C,0);
var4 = ma(c,0);
//시간타이머식
if (sdate != sdate[1] and stime >= 101600) or
(sdate == sdate[1] and stime >= 101600 and stime[1] < 101600) Then
Tcond = true;
if (sdate != sdate[1] and stime >= 1720000) or
(sdate == sdate[1] and stime >= 1720000 and stime[1] < 1720000) Then
{
Tcond = false;
if MarketPosition == 1 Then
ExitLong();
if MarketPosition == -1 Then
ExitShort();
}
if Tcond == true then
{
if var1 > var2 and var1 > var3 and var1 > var4 and var4 > var2 Then
T1 = 1;
if var1 < var2 and var1 < var3 and var1 < var4 and var4 < var2 Then
T1 = -1;
if T1 == 1 and T1[1] == -1 Then
buy("매수");
if T1 == -1 and T1[1] == 1 Then
sell("매도");
####################################################
#딱 한번 매매
if Bdate != Bdate[1] Then
{
idx = 0;
entry2 = true;
}
idx = idx+1;
if idx <= 10 then
{
if MarketPosition != 0 and MarketPosition != MarketPosition[1] and
(IsEntryName("매수1") == true or IsEntryName("매도1") == true) Then
entry2 = False;
}
var5 = ma(C,100);
if CrossUp(C,var5) Then
{
T = 1;
S = 0;
}
if CrossDown(C,var5) Then
{
T = -1;
S = 0;
}
if T == 1 Then
{
S = S+1;
if idx >= 10 and entry2 == true and S == 10 Then
{
Entry2 = False;
Buy("매수2");
}
}
if T == -1 Then
{
S = S+1;
if idx >= 10 and entry2 == true and S == 10 Then
{
entry2 = False;
Sell("매도2");
}
}
}
#매수 손절식
if MarketPosition == 1 Then
{
ExitLong("bx5",AtLimit,EntryPrice+PriceScale*완전청산,"",5,1);
ExitLong("bx6",AtStop,EntryPrice-PriceScale*손절가,"",5,1);
}
Else
Lcnt = 0;
#매도 손절식
if MarketPosition == -1 Then
{
ExitShort("sx5",AtLimit,EntryPrice-PriceScale*완전청산,"",5,1);
ExitShort("sx6",AtStop,EntryPrice+PriceScale*손절가,"",5,1);
}
Else
Hcnt = 0;