커뮤니티
답변이 없으셔서 끌어올립니다^^
2013-04-25 15:10:02
239
글번호 62495
작성하여주신 아래 코딩으로 3분봉 백테스트하니 진입이 전혀 안되네요.
수식검증은 이상이 없습니다.
그리고 검색에서 신호검색을 하면 종전 수식은 있는데 신규 저장한 수식은
목록에 안보이는데 이건 왜 이런건지요.
확인 부탁 드립니다^^
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 도움 주셔서 감사합니다 일봉기준 진입을 3분봉으로....
> 안녕하세요
예스스탁입니다.
Input : k(0.15), k2(0.1);
input : P1(5),P2(10),P3(20);
var : count(0),sumV1(0),sumV2(0),sumV3(0),sumV11(0),cnt(0);
sumV1 = 0;
sumV11 = 0;
sumV2 = 0;
sumV3 = 0;
for count = 0 to P3{
if count < P1 Then
sumV1 = sumV1+CloseD(count);
if count < P1 Then
sumV11 = sumV11+CloseD(count+1);
if count < P2 Then
sumV2 = sumV2+CloseD(count);
if count < P3 Then
sumV3 = sumV3+CloseD(count);
}
var1 = sumV1 / P1;
var11 = sumV11 / P1;
var2 = sumV2 / P2;
var3 = sumV3 / P3;
var4 = 0;
var5 = 0;
for cnt = 1 to 10{
if DayClose(cnt) > DayClose(cnt+1)*(1 + k) Then
var4 = var4+1;
if DayHigh(cnt) > DayHigh(cnt+1)*(1 + k2) Then
var5 = var5+1;
}
if var1 > var2 and var2 > var3 and
(var4 >= 1 or var5 >= 1) and
DayClose(1) < var11 and
DayOpen < Var1 and
crossup(c,var1) Then
buy();
if MarketPosition == 1 Then{
value1 = highest(H,BarsSinceEntry);
if CurrentContracts == MaxContracts Then
exitlong("bx1",atlimit,EntryPrice*1.05,"",50,1);
if CurrentContracts < MaxContracts Then{
exitlong("bx2",atlimit,EntryPrice*1.08);
}
}
SetStopTrailing(1, 5, PercentStop, 1);
SetStopLoss(2,PercentStop);
즐거운 하루되세요
> 작은하늘 님이 쓴 글입니다.
> 제목 : 도움 주셔서 감사합니다 일봉기준 진입을 3분봉으로....
> 일봉에서 5일선 돌파시 진입하는 조건으로 코딩하니
종가 진입이라 익일 시초가 형성후 매수되어 진입이 늦어지는 단점이
있네요.
그래서 신호 발생은 아래와 같이 일봉 기준으로 동일하게 하고
진입은 3분봉 기준으로 일봉의 5일선 돌파시 매수, 5일선에서 2% 하락하면 스탑로스
되도록 코딩을 수정, 보완 부탁드립니다.
물론 5일선 재돌파시는 재매수 입니다^^
다시한번 말씀 드리지만 그외의 코딩은 변경 없습니다. 감사합니다^^
Input : k(0.15), k2(0.1);
var1 = ma(c,5);
var2 = ma(c,10);
var3 = ma(c,20);
var4 = countif(C>=C[1]*(1 + k),10);
var5 = countif(H>=H[1]*(1 + k2),10);
var6 = countif(L < var1,5);
if var1 > var2 and var2 > var3 and
(var4[1] >= 1 or var5[1] >= 1) and
#var6[2] == 0 and
C[1] < var1[1] and
O < Var1 and
crossup(c,var1) Then
#V >= V[1]*2 Then
buy();
if MarketPosition == 1 Then{
value1 = highest(H,BarsSinceEntry);
if CurrentContracts == MaxContracts Then
exitlong("bx1",atlimit,EntryPrice*1.05,"",50,1);
if CurrentContracts < MaxContracts Then{
exitlong("bx2",atlimit,EntryPrice*1.08);
}
}
SetStopTrailing(1, 5, PercentStop, 1);
SetStopLoss(2,PercentStop);
답변 2
작은하늘
2013-04-25 15:08:15
작은하늘 님에 의해 삭제된 답변입니다.
예스스탁 예스스탁 답변
2013-04-25 16:22:08
안녕하세요
예스스탁입니다.
식을 수정했습니다.
식상 5일이동평균의 돌파가 분봉에서 직전봉과
현재봉을 보게 작성이 되어 있어 수정했습니다.
Input : k(0.15), k2(0.1);
input : P1(5),P2(10),P3(20);
var : count(0),sumV1(0),sumV2(0),sumV3(0),sumV11(0),cnt(0);
sumV1 = 0;
sumV11 = 0;
sumV2 = 0;
sumV3 = 0;
for count = 0 to P3{
if count < P1 Then
sumV1 = sumV1+DayClose(count);
if count < P1 Then
sumV11 = sumV11+DayClose(count+1);
if count < P2 Then
sumV2 = sumV2+DayClose(count);
if count < P3 Then
sumV3 = sumV3+DayClose(count);
}
var1 = sumV1 / P1;
var11 = sumV11 / P1;
var2 = sumV2 / P2;
var3 = sumV3 / P3;
var4 = 0;
var5 = 0;
for cnt = 1 to 10{
if DayClose(cnt) > DayClose(cnt+1)*(1 + k) Then
var4 = var4+1;
if DayHigh(cnt) > DayHigh(cnt+1)*(1 + k2) Then
var5 = var5+1;
}
if date != date[1] Then
Condition1 = false;
if MarketPosition == 0 and
Condition1 == false and
var1 > var2 and var2 > var3 and
(var4 >= 1 or var5 >= 1) and
DayClose(1) < var11 and
DayOpen < Var1 and
C > var1 Then{
Condition1 = true;
buy();
}
if MarketPosition == 1 Then{
value1 = highest(H,BarsSinceEntry);
if CurrentContracts == MaxContracts Then
exitlong("bx1",atlimit,EntryPrice*1.05,"",50,1);
if CurrentContracts < MaxContracts Then{
exitlong("bx2",atlimit,EntryPrice*1.08);
}
}
SetStopTrailing(1, 5, PercentStop, 1);
SetStopLoss(2,PercentStop);
분봉에서 진입되므로 일간의 진입가격과 다르게 됩니다.
그러므로 같은 % 청산식이라도 청산의 위치가 변경될수 있습니다.
2.
해당식을 예스랭귀지 편집기에서 열어서 검증을 해보시기 바랍니다.
랭귀지에는 있고 목록에는 나타나지 않는다면 검증이 되지 않거나
오류가 잇는 경우입니다.
즐거운 하루되세요
> 작은하늘 님이 쓴 글입니다.
> 제목 : 답변이 없으셔서 끌어올립니다^^
> 작성하여주신 아래 코딩으로 3분봉 백테스트하니 진입이 전혀 안되네요.
수식검증은 이상이 없습니다.
그리고 검색에서 신호검색을 하면 종전 수식은 있는데 신규 저장한 수식은
목록에 안보이는데 이건 왜 이런건지요.
확인 부탁 드립니다^^
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 도움 주셔서 감사합니다 일봉기준 진입을 3분봉으로....
> 안녕하세요
예스스탁입니다.
Input : k(0.15), k2(0.1);
input : P1(5),P2(10),P3(20);
var : count(0),sumV1(0),sumV2(0),sumV3(0),sumV11(0),cnt(0);
sumV1 = 0;
sumV11 = 0;
sumV2 = 0;
sumV3 = 0;
for count = 0 to P3{
if count < P1 Then
sumV1 = sumV1+CloseD(count);
if count < P1 Then
sumV11 = sumV11+CloseD(count+1);
if count < P2 Then
sumV2 = sumV2+CloseD(count);
if count < P3 Then
sumV3 = sumV3+CloseD(count);
}
var1 = sumV1 / P1;
var11 = sumV11 / P1;
var2 = sumV2 / P2;
var3 = sumV3 / P3;
var4 = 0;
var5 = 0;
for cnt = 1 to 10{
if DayClose(cnt) > DayClose(cnt+1)*(1 + k) Then
var4 = var4+1;
if DayHigh(cnt) > DayHigh(cnt+1)*(1 + k2) Then
var5 = var5+1;
}
if var1 > var2 and var2 > var3 and
(var4 >= 1 or var5 >= 1) and
DayClose(1) < var11 and
DayOpen < Var1 and
crossup(c,var1) Then
buy();
if MarketPosition == 1 Then{
value1 = highest(H,BarsSinceEntry);
if CurrentContracts == MaxContracts Then
exitlong("bx1",atlimit,EntryPrice*1.05,"",50,1);
if CurrentContracts < MaxContracts Then{
exitlong("bx2",atlimit,EntryPrice*1.08);
}
}
SetStopTrailing(1, 5, PercentStop, 1);
SetStopLoss(2,PercentStop);
즐거운 하루되세요
> 작은하늘 님이 쓴 글입니다.
> 제목 : 도움 주셔서 감사합니다 일봉기준 진입을 3분봉으로....
> 일봉에서 5일선 돌파시 진입하는 조건으로 코딩하니
종가 진입이라 익일 시초가 형성후 매수되어 진입이 늦어지는 단점이
있네요.
그래서 신호 발생은 아래와 같이 일봉 기준으로 동일하게 하고
진입은 3분봉 기준으로 일봉의 5일선 돌파시 매수, 5일선에서 2% 하락하면 스탑로스
되도록 코딩을 수정, 보완 부탁드립니다.
물론 5일선 재돌파시는 재매수 입니다^^
다시한번 말씀 드리지만 그외의 코딩은 변경 없습니다. 감사합니다^^
Input : k(0.15), k2(0.1);
var1 = ma(c,5);
var2 = ma(c,10);
var3 = ma(c,20);
var4 = countif(C>=C[1]*(1 + k),10);
var5 = countif(H>=H[1]*(1 + k2),10);
var6 = countif(L < var1,5);
if var1 > var2 and var2 > var3 and
(var4[1] >= 1 or var5[1] >= 1) and
#var6[2] == 0 and
C[1] < var1[1] and
O < Var1 and
crossup(c,var1) Then
#V >= V[1]*2 Then
buy();
if MarketPosition == 1 Then{
value1 = highest(H,BarsSinceEntry);
if CurrentContracts == MaxContracts Then
exitlong("bx1",atlimit,EntryPrice*1.05,"",50,1);
if CurrentContracts < MaxContracts Then{
exitlong("bx2",atlimit,EntryPrice*1.08);
}
}
SetStopTrailing(1, 5, PercentStop, 1);
SetStopLoss(2,PercentStop);
다음글
이전글