커뮤니티
문의드립니다.
2015-07-14 10:28:42
113
글번호 88382
안녕하세요
보조지표를 작성하여 시스템식을 적용하면 다음과 같은 문제점이 발생됩니다.
(해외선물 Crude Oil 5분봉 시뮬레이션차트적용)
1. 보조지표의 dayOpen(0)+var1*len 값에서 시스템신호의 위치가 80%는 맞고
20%는 틀립니다.(보조지표와 시스템식신호와의 차이발생)
2. 시간제어 a)시작시간 :17시보다크고 또는 16시보다작다
b)종료시간 :포지션보유시 장종료 직전에 청산
위(a,b)식을 사용하면 같은방향 진입제어가 안됩니다.
3. 전일변동폭계산에서 일봉의 고저와 분봉의 고저가 차이날수있나요(해선)
감사합니다.
=========================================================================
보조지표
input : P(25);
var1 = DayOpen;
var2 = dayopen+(dayhigh(1)-daylow(1))*(P/100);
var3 = dayopen-(dayhigh(1)-daylow(1))*(P/100);
plot1(var1,"dayopen");
plot2(var2,"25");
plot3(var3,"25");
시스템식
input : len(0.25), len1(2.7),n(20),tcount(2);
var: CurrentEntryNum(0);
var1 = dayHigh(1)-dayLow(1);
if date<>date[1] Then {
var10 = TotalTrades;
}
CurrentEntryNum = TotalTrades;
Condition1 = date==exitdate(1) And MarketPosition(1) == 1;
Condition2 = date==exitdate(1) And MarketPosition(1) == -1;
if stime < 160000 then {
if CurrentEntryNum < var10 + tcount and Condition1 == false and MarketPosition <> 1 Then
buy("매수", atstop, dayOpen(0)+var1*len);
if CurrentEntryNum < var10 + tcount and Condition2 == false and MarketPosition <> -1 Then
sell("매도", atstop, dayOpen(0)-var1*len);
}
//청산
If marketposition == 1 Then {
exitlong("매수청산",Atstop,highest(high,barssinceentry+1)-atr(n)*len1);
}
if MarketPosition == -1 then{
exitshort("매도청산",Atstop,lowest(low,barssinceentry+1)+atr(n)*len1);
}
/*if stime == 160000 or (stime > 160000 and stime[1] < 160000) Then{
exitlong();
ExitShort();
}*/
답변 1
예스스탁 예스스탁 답변
2015-07-14 12:43:12
안녕하세요
예스스탁입니다.
식을 수정했습니다.
dayhigh/daylow/dayclose/dayopen은
일봉데이터에서 값을 가져옵니다.
아래식은 분봉데이터에서 직접 일봉 값을 계산합니다.
해외선물이 경우 저희가 데이터 관리를 하지 않고
각 선물사에서 모든 데이터를 관리하는데
분봉과 일봉데이터가 차이가 있는 경우가 있습니다.
1.
input : P(25);
var : cnt(0);
Array : OO[10](0),HH[10](0),LL[10](0);
if Bdate != Bdate[1] Then{
OO[0] = O;
HH[0] = H;
LL[0] = L;
for cnt = 1 to 9{
OO[0] = OO[cnt-1][1];
HH[0] = HH[cnt-1][1];
LL[0] = LL[cnt-1][1];
}
}
var1 = OO[0];
var2 = OO[0]+(HH[1]-LL[1])*(P/100);
var3 = OO[0]-(HH[1]-LL[1])*(P/100);
plot1(var1,"dayopen");
plot2(var2,"25");
plot3(var3,"25");
2.
input : len(0.25), len1(2.7),n(20),tcount(2);
var: CurrentEntryNum(0);
var : cnt(0);
Array : OO[10](0),HH[10](0),LL[10](0);
if Bdate != Bdate[1] Then{
OO[0] = O;
HH[0] = H;
LL[0] = L;
for cnt = 1 to 9{
OO[0] = OO[cnt-1][1];
HH[0] = HH[cnt-1][1];
LL[0] = LL[cnt-1][1];
}
}
var1 = HH[1]-LL[1];
if bdate <> bdate[1] Then {
var10 = TotalTrades;
}
CurrentEntryNum = TotalTrades;
Condition1 = date==exitdate(1) And MarketPosition(1) == 1;
Condition2 = date==exitdate(1) And MarketPosition(1) == -1;
if stime >= 170000 or stime < 160000 then {
if CurrentEntryNum < var10 + tcount and Condition1 == false and MarketPosition <> 1 Then
buy("매수", atstop, OO[0]+var1*len);
if CurrentEntryNum < var10 + tcount and Condition2 == false and MarketPosition <> -1 Then
sell("매도", atstop, OO[0]-var1*len);
}
//청산
If marketposition == 1 Then {
exitlong("매수청산",Atstop,highest(high,barssinceentry+1)-atr(n)*len1);
}
if MarketPosition == -1 then{
exitshort("매도청산",Atstop,lowest(low,barssinceentry+1)+atr(n)*len1);
}
if stime == 160000 or (stime > 160000 and stime[1] < 160000) Then{
exitlong();
ExitShort();
}
즐거운 하루되세요
> 베드로 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 안녕하세요
보조지표를 작성하여 시스템식을 적용하면 다음과 같은 문제점이 발생됩니다.
(해외선물 Crude Oil 5분봉 시뮬레이션차트적용)
1. 보조지표의 dayOpen(0)+var1*len 값에서 시스템신호의 위치가 80%는 맞고
20%는 틀립니다.(보조지표와 시스템식신호와의 차이발생)
2. 시간제어 a)시작시간 :17시보다크고 또는 16시보다작다
b)종료시간 :포지션보유시 장종료 직전에 청산
위(a,b)식을 사용하면 같은방향 진입제어가 안됩니다.
3. 전일변동폭계산에서 일봉의 고저와 분봉의 고저가 차이날수있나요(해선)
감사합니다.
=========================================================================
보조지표
input : P(25);
var1 = DayOpen;
var2 = dayopen+(dayhigh(1)-daylow(1))*(P/100);
var3 = dayopen-(dayhigh(1)-daylow(1))*(P/100);
plot1(var1,"dayopen");
plot2(var2,"25");
plot3(var3,"25");
시스템식
input : len(0.25), len1(2.7),n(20),tcount(2);
var: CurrentEntryNum(0);
var1 = dayHigh(1)-dayLow(1);
if date<>date[1] Then {
var10 = TotalTrades;
}
CurrentEntryNum = TotalTrades;
Condition1 = date==exitdate(1) And MarketPosition(1) == 1;
Condition2 = date==exitdate(1) And MarketPosition(1) == -1;
if stime < 160000 then {
if CurrentEntryNum < var10 + tcount and Condition1 == false and MarketPosition <> 1 Then
buy("매수", atstop, dayOpen(0)+var1*len);
if CurrentEntryNum < var10 + tcount and Condition2 == false and MarketPosition <> -1 Then
sell("매도", atstop, dayOpen(0)-var1*len);
}
//청산
If marketposition == 1 Then {
exitlong("매수청산",Atstop,highest(high,barssinceentry+1)-atr(n)*len1);
}
if MarketPosition == -1 then{
exitshort("매도청산",Atstop,lowest(low,barssinceentry+1)+atr(n)*len1);
}
/*if stime == 160000 or (stime > 160000 and stime[1] < 160000) Then{
exitlong();
ExitShort();
}*/
다음글
이전글