커뮤니티
타분봉 참조시 루틴이 이상함
2009-06-01 15:21:09
773
글번호 22491
Input : ztrendline1(2),ztrendline2(11),
trixPeriod(44),trixsignal(36),
trendline1(18),trendline2(145),trendline3(660);
var : ztrendvalue1(0),ztrendvalue2(0),ztrendvalue3(0);
var : gaptrixvalue(0),gaptrixsignalvalue(0),
t1(0),t2(0),t3(0),gc(0),daygap(0),trendvalue1(0),trendvalue2(0),
callvalue0(0),callvalue1(0), callvalue2(0),
sellvalue0(0), sellvalue1(0),sellvalue2(0),sellvalue3(0);
ztrendvalue1 = data2(ma(C, ztrendline1)) ;
trendvalue1 = ma(C, trendline1) ;
trendvalue2 = ma(C, trendline2) ;
if abs(dayopen()-Dayclose(1))/dayopen() > 0 then
{
if date !=date[1] then // 날짜가 변경되는 봉에서(분봉에서 첫번째 봉)
{
daygap = O-C[1]; // 일간갭
}
GC = C-dayGap; // 갭보정 종가
T1 = ema(GC, trixPeriod);
MessageLog("ema= %.6f, GC= %.6f, trixPeriod= %.6f",ema(GC, trixPeriod),GC,trixPeriod);
T2 = ema(T1, trixPeriod);
T3 = ema(T2, trixPeriod);
gaptrixvalue = (T3 - T3[1]) / t3[1] * 100;
gaptrixsignalvalue = ema(gaptrixvalue, trixsignal);
if crossup(gaptrixvalue,gaptrixsignalvalue) then
{ buy("gap");
}
else if crossdown(gaptrixvalue,gaptrixsignalvalue) then
{
sell("gap2");
}
}
if callvalue1[0] > callvalue1[1] then
{
if crossup(callvalue0, callvalue1) then
{
Buy("callbuy01");#
}
else if crossdown(callvalue1, callvalue2) then #
{
sell("callsell12");
}
}
위의 식은 data1 이 5분봉이고 data2는 일봉입니다.
문제는 "ztrendvalue1 = data2(ma(C, ztrendline1))" 식이 들어가서 타분봉을 참조함에 따라 디버창에서 확인할 경우 시작 다음날부터 첫봉이 2개 나타난다는 것입니다.
09:00분에 루틴이 두번 돌아가는 문제가 생기는 데 ema 함수가 정상적인 것과 비교해 다른값이 나옵니다.
time 함수로 ema 함수를 시간당 한번만 지나가게 해서 디버그창에 한번만 나타나더라도 자세히 보면 그 다음 ema 값은 그대로 됩니다.
"ztrendvalue1 = data2(ma(C, ztrendline1))"식이 들어가지 않는 정상적인 ema값과 차이가 나서 시스템 전체 결과가 영 다른 결과가 나타납니다.
제 설명이 이해되지 않는 부분에 대해서는 전화 부탁드립니다.
070-7578-1512,김창락 입니다.
부탁드립니다.
답변 4
예스스탁 예스스탁 답변
2009-06-01 15:59:51
안녕하세요
예스스탁입니다.
아래 식의 변수 선언을 보시면 ztrendvalue1(0,data2),t1(0,data1)와 같이 수정했습니다.
내부변수를 선언시에 다른 주기를 참조하는 수식이라면 해당변수가 참조되야 하는 값이
주종목목인지 참조종목인지를 변수선언시에 명확히 하여 작성하시면
첫봉에서 여러번 돌면서 값이 변경되는 것을 막으실 수 있습니다.
참고하시기 바랍니다.
Input : ztrendline1(2),ztrendline2(11),
trixPeriod(44),trixsignal(36),
trendline1(18),trendline2(145),trendline3(660);
var : ztrendvalue1(0,data2),ztrendvalue2(0),ztrendvalue3(0);
var : gaptrixvalue(0),gaptrixsignalvalue(0),
t1(0,data1),t2(0,data1),t3(0,data1),gc(0,data1),daygap(0,data1),trendvalue1(0),trendvalue2(0),
callvalue0(0),callvalue1(0), callvalue2(0),
sellvalue0(0), sellvalue1(0),sellvalue2(0),sellvalue3(0);
ztrendvalue1 = data2(ma(C, ztrendline1)) ;
trendvalue1 = ma(C, trendline1) ;
trendvalue2 = ma(C, trendline2) ;
if abs(dayopen()-Dayclose(1))/dayopen() > 0 then
{
if date != date[1] then // 날짜가 변경되는 봉에서(분봉에서 첫번째 봉)
{
daygap = O-C[1]; // 일간갭
}
GC = C-dayGap; // 갭보정 종가
T1 = data1(ema(GC, trixPeriod));
MessageLog("ema= %.6f, GC= %.6f, trixPeriod= %.6f",T1,GC,trixPeriod);
T2 = ema(T1, trixPeriod);
T3 = ema(T2, trixPeriod);
gaptrixvalue = (T3 - T3[1]) / t3[1] * 100;
gaptrixsignalvalue = ema(gaptrixvalue, trixsignal);
if crossup(gaptrixvalue,gaptrixsignalvalue) then
{ buy("gap");
}
else if crossdown(gaptrixvalue,gaptrixsignalvalue) then
{
sell("gap2");
}
}
if callvalue1[0] > callvalue1[1] then
{
if crossup(callvalue0, callvalue1) then
{
Buy("callbuy01");#
}
else if crossdown(callvalue1, callvalue2) then #
{
sell("callsell12");
}
}
즐거운 하루되세요
> Polaris 님이 쓴 글입니다.
> 제목 : 타분봉 참조시 루틴이 이상함
> Input : ztrendline1(2),ztrendline2(11),
trixPeriod(44),trixsignal(36),
trendline1(18),trendline2(145),trendline3(660);
var : ztrendvalue1(0),ztrendvalue2(0),ztrendvalue3(0);
var : gaptrixvalue(0),gaptrixsignalvalue(0),
t1(0),t2(0),t3(0),gc(0),daygap(0),trendvalue1(0),trendvalue2(0),
callvalue0(0),callvalue1(0), callvalue2(0),
sellvalue0(0), sellvalue1(0),sellvalue2(0),sellvalue3(0);
ztrendvalue1 = data2(ma(C, ztrendline1)) ;
trendvalue1 = ma(C, trendline1) ;
trendvalue2 = ma(C, trendline2) ;
if abs(dayopen()-Dayclose(1))/dayopen() > 0 then
{
if date !=date[1] then // 날짜가 변경되는 봉에서(분봉에서 첫번째 봉)
{
daygap = O-C[1]; // 일간갭
}
GC = C-dayGap; // 갭보정 종가
T1 = ema(GC, trixPeriod);
MessageLog("ema= %.6f, GC= %.6f, trixPeriod= %.6f",ema(GC, trixPeriod),GC,trixPeriod);
T2 = ema(T1, trixPeriod);
T3 = ema(T2, trixPeriod);
gaptrixvalue = (T3 - T3[1]) / t3[1] * 100;
gaptrixsignalvalue = ema(gaptrixvalue, trixsignal);
if crossup(gaptrixvalue,gaptrixsignalvalue) then
{ buy("gap");
}
else if crossdown(gaptrixvalue,gaptrixsignalvalue) then
{
sell("gap2");
}
}
if callvalue1[0] > callvalue1[1] then
{
if crossup(callvalue0, callvalue1) then
{
Buy("callbuy01");#
}
else if crossdown(callvalue1, callvalue2) then #
{
sell("callsell12");
}
}
위의 식은 data1 이 5분봉이고 data2는 일봉입니다.
문제는 "ztrendvalue1 = data2(ma(C, ztrendline1))" 식이 들어가서 타분봉을 참조함에 따라 디버창에서 확인할 경우 시작 다음날부터 첫봉이 2개 나타난다는 것입니다.
09:00분에 루틴이 두번 돌아가는 문제가 생기는 데 ema 함수가 정상적인 것과 비교해 다른값이 나옵니다.
time 함수로 ema 함수를 시간당 한번만 지나가게 해서 디버그창에 한번만 나타나더라도 자세히 보면 그 다음 ema 값은 그대로 됩니다.
"ztrendvalue1 = data2(ma(C, ztrendline1))"식이 들어가지 않는 정상적인 ema값과 차이가 나서 시스템 전체 결과가 영 다른 결과가 나타납니다.
제 설명이 이해되지 않는 부분에 대해서는 전화 부탁드립니다.
070-7578-1512,김창락 입니다.
부탁드립니다.
Polaris
2009-06-01 18:38:48
디버거 창으로 확인해본 결과 이틑날부터 처음 봉에 계속적으로 두번 돌고 있습니다.
다시 한번 확인해 주십시요.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 타분봉 참조시 루틴이 이상함
> 안녕하세요
예스스탁입니다.
아래 식의 변수 선언을 보시면 ztrendvalue1(0,data2),t1(0,data1)와 같이 수정했습니다.
내부변수를 선언시에 다른 주기를 참조하는 수식이라면 해당변수가 참조되야 하는 값이
주종목목인지 참조종목인지를 변수선언시에 명확히 하여 작성하시면
첫봉에서 여러번 돌면서 값이 변경되는 것을 막으실 수 있습니다.
참고하시기 바랍니다.
Input : ztrendline1(2),ztrendline2(11),
trixPeriod(44),trixsignal(36),
trendline1(18),trendline2(145),trendline3(660);
var : ztrendvalue1(0,data2),ztrendvalue2(0),ztrendvalue3(0);
var : gaptrixvalue(0),gaptrixsignalvalue(0),
t1(0,data1),t2(0,data1),t3(0,data1),gc(0,data1),daygap(0,data1),trendvalue1(0),trendvalue2(0),
callvalue0(0),callvalue1(0), callvalue2(0),
sellvalue0(0), sellvalue1(0),sellvalue2(0),sellvalue3(0);
ztrendvalue1 = data2(ma(C, ztrendline1)) ;
trendvalue1 = ma(C, trendline1) ;
trendvalue2 = ma(C, trendline2) ;
if abs(dayopen()-Dayclose(1))/dayopen() > 0 then
{
if date != date[1] then // 날짜가 변경되는 봉에서(분봉에서 첫번째 봉)
{
daygap = O-C[1]; // 일간갭
}
GC = C-dayGap; // 갭보정 종가
T1 = data1(ema(GC, trixPeriod));
MessageLog("ema= %.6f, GC= %.6f, trixPeriod= %.6f",T1,GC,trixPeriod);
T2 = ema(T1, trixPeriod);
T3 = ema(T2, trixPeriod);
gaptrixvalue = (T3 - T3[1]) / t3[1] * 100;
gaptrixsignalvalue = ema(gaptrixvalue, trixsignal);
if crossup(gaptrixvalue,gaptrixsignalvalue) then
{ buy("gap");
}
else if crossdown(gaptrixvalue,gaptrixsignalvalue) then
{
sell("gap2");
}
}
if callvalue1[0] > callvalue1[1] then
{
if crossup(callvalue0, callvalue1) then
{
Buy("callbuy01");#
}
else if crossdown(callvalue1, callvalue2) then #
{
sell("callsell12");
}
}
즐거운 하루되세요
> Polaris 님이 쓴 글입니다.
> 제목 : 타분봉 참조시 루틴이 이상함
> Input : ztrendline1(2),ztrendline2(11),
trixPeriod(44),trixsignal(36),
trendline1(18),trendline2(145),trendline3(660);
var : ztrendvalue1(0),ztrendvalue2(0),ztrendvalue3(0);
var : gaptrixvalue(0),gaptrixsignalvalue(0),
t1(0),t2(0),t3(0),gc(0),daygap(0),trendvalue1(0),trendvalue2(0),
callvalue0(0),callvalue1(0), callvalue2(0),
sellvalue0(0), sellvalue1(0),sellvalue2(0),sellvalue3(0);
ztrendvalue1 = data2(ma(C, ztrendline1)) ;
trendvalue1 = ma(C, trendline1) ;
trendvalue2 = ma(C, trendline2) ;
if abs(dayopen()-Dayclose(1))/dayopen() > 0 then
{
if date !=date[1] then // 날짜가 변경되는 봉에서(분봉에서 첫번째 봉)
{
daygap = O-C[1]; // 일간갭
}
GC = C-dayGap; // 갭보정 종가
T1 = ema(GC, trixPeriod);
MessageLog("ema= %.6f, GC= %.6f, trixPeriod= %.6f",ema(GC, trixPeriod),GC,trixPeriod);
T2 = ema(T1, trixPeriod);
T3 = ema(T2, trixPeriod);
gaptrixvalue = (T3 - T3[1]) / t3[1] * 100;
gaptrixsignalvalue = ema(gaptrixvalue, trixsignal);
if crossup(gaptrixvalue,gaptrixsignalvalue) then
{ buy("gap");
}
else if crossdown(gaptrixvalue,gaptrixsignalvalue) then
{
sell("gap2");
}
}
if callvalue1[0] > callvalue1[1] then
{
if crossup(callvalue0, callvalue1) then
{
Buy("callbuy01");#
}
else if crossdown(callvalue1, callvalue2) then #
{
sell("callsell12");
}
}
위의 식은 data1 이 5분봉이고 data2는 일봉입니다.
문제는 "ztrendvalue1 = data2(ma(C, ztrendline1))" 식이 들어가서 타분봉을 참조함에 따라 디버창에서 확인할 경우 시작 다음날부터 첫봉이 2개 나타난다는 것입니다.
09:00분에 루틴이 두번 돌아가는 문제가 생기는 데 ema 함수가 정상적인 것과 비교해 다른값이 나옵니다.
time 함수로 ema 함수를 시간당 한번만 지나가게 해서 디버그창에 한번만 나타나더라도 자세히 보면 그 다음 ema 값은 그대로 됩니다.
"ztrendvalue1 = data2(ma(C, ztrendline1))"식이 들어가지 않는 정상적인 ema값과 차이가 나서 시스템 전체 결과가 영 다른 결과가 나타납니다.
제 설명이 이해되지 않는 부분에 대해서는 전화 부탁드립니다.
070-7578-1512,김창락 입니다.
부탁드립니다.
예스스탁 예스스탁 답변
2009-06-01 20:08:31
안녕하세요
예스스탁입니다.
첫봉에서 두번값이 찍히는 부분은 막을 수가 없습니다.
다만 기존의 식이 첫봉에서 두번돌면서 이평과 같은경우에 동일한 값이 두번호출되어
평균되어 지는 내용을 수정해 드린 내용과 같이 변수를 선언할 때
변수가 바라보는 데이터를 명시하여 해당 현상을 막은식입니다.
참고하시기 바랍니다.
자세한 내용을 원하시면 02-3453-1060으로 전화주시기 바랍니다.
즐거운 하루되세요
> Polaris 님이 쓴 글입니다.
> 제목 : Re : Re : 타분봉 참조시 루틴이 이상함
> 디버거 창으로 확인해본 결과 이틑날부터 처음 봉에 계속적으로 두번 돌고 있습니다.
다시 한번 확인해 주십시요.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 타분봉 참조시 루틴이 이상함
> 안녕하세요
예스스탁입니다.
아래 식의 변수 선언을 보시면 ztrendvalue1(0,data2),t1(0,data1)와 같이 수정했습니다.
내부변수를 선언시에 다른 주기를 참조하는 수식이라면 해당변수가 참조되야 하는 값이
주종목목인지 참조종목인지를 변수선언시에 명확히 하여 작성하시면
첫봉에서 여러번 돌면서 값이 변경되는 것을 막으실 수 있습니다.
참고하시기 바랍니다.
Input : ztrendline1(2),ztrendline2(11),
trixPeriod(44),trixsignal(36),
trendline1(18),trendline2(145),trendline3(660);
var : ztrendvalue1(0,data2),ztrendvalue2(0),ztrendvalue3(0);
var : gaptrixvalue(0),gaptrixsignalvalue(0),
t1(0,data1),t2(0,data1),t3(0,data1),gc(0,data1),daygap(0,data1),trendvalue1(0),trendvalue2(0),
callvalue0(0),callvalue1(0), callvalue2(0),
sellvalue0(0), sellvalue1(0),sellvalue2(0),sellvalue3(0);
ztrendvalue1 = data2(ma(C, ztrendline1)) ;
trendvalue1 = ma(C, trendline1) ;
trendvalue2 = ma(C, trendline2) ;
if abs(dayopen()-Dayclose(1))/dayopen() > 0 then
{
if date != date[1] then // 날짜가 변경되는 봉에서(분봉에서 첫번째 봉)
{
daygap = O-C[1]; // 일간갭
}
GC = C-dayGap; // 갭보정 종가
T1 = data1(ema(GC, trixPeriod));
MessageLog("ema= %.6f, GC= %.6f, trixPeriod= %.6f",T1,GC,trixPeriod);
T2 = ema(T1, trixPeriod);
T3 = ema(T2, trixPeriod);
gaptrixvalue = (T3 - T3[1]) / t3[1] * 100;
gaptrixsignalvalue = ema(gaptrixvalue, trixsignal);
if crossup(gaptrixvalue,gaptrixsignalvalue) then
{ buy("gap");
}
else if crossdown(gaptrixvalue,gaptrixsignalvalue) then
{
sell("gap2");
}
}
if callvalue1[0] > callvalue1[1] then
{
if crossup(callvalue0, callvalue1) then
{
Buy("callbuy01");#
}
else if crossdown(callvalue1, callvalue2) then #
{
sell("callsell12");
}
}
즐거운 하루되세요
> Polaris 님이 쓴 글입니다.
> 제목 : 타분봉 참조시 루틴이 이상함
> Input : ztrendline1(2),ztrendline2(11),
trixPeriod(44),trixsignal(36),
trendline1(18),trendline2(145),trendline3(660);
var : ztrendvalue1(0),ztrendvalue2(0),ztrendvalue3(0);
var : gaptrixvalue(0),gaptrixsignalvalue(0),
t1(0),t2(0),t3(0),gc(0),daygap(0),trendvalue1(0),trendvalue2(0),
callvalue0(0),callvalue1(0), callvalue2(0),
sellvalue0(0), sellvalue1(0),sellvalue2(0),sellvalue3(0);
ztrendvalue1 = data2(ma(C, ztrendline1)) ;
trendvalue1 = ma(C, trendline1) ;
trendvalue2 = ma(C, trendline2) ;
if abs(dayopen()-Dayclose(1))/dayopen() > 0 then
{
if date !=date[1] then // 날짜가 변경되는 봉에서(분봉에서 첫번째 봉)
{
daygap = O-C[1]; // 일간갭
}
GC = C-dayGap; // 갭보정 종가
T1 = ema(GC, trixPeriod);
MessageLog("ema= %.6f, GC= %.6f, trixPeriod= %.6f",ema(GC, trixPeriod),GC,trixPeriod);
T2 = ema(T1, trixPeriod);
T3 = ema(T2, trixPeriod);
gaptrixvalue = (T3 - T3[1]) / t3[1] * 100;
gaptrixsignalvalue = ema(gaptrixvalue, trixsignal);
if crossup(gaptrixvalue,gaptrixsignalvalue) then
{ buy("gap");
}
else if crossdown(gaptrixvalue,gaptrixsignalvalue) then
{
sell("gap2");
}
}
if callvalue1[0] > callvalue1[1] then
{
if crossup(callvalue0, callvalue1) then
{
Buy("callbuy01");#
}
else if crossdown(callvalue1, callvalue2) then #
{
sell("callsell12");
}
}
위의 식은 data1 이 5분봉이고 data2는 일봉입니다.
문제는 "ztrendvalue1 = data2(ma(C, ztrendline1))" 식이 들어가서 타분봉을 참조함에 따라 디버창에서 확인할 경우 시작 다음날부터 첫봉이 2개 나타난다는 것입니다.
09:00분에 루틴이 두번 돌아가는 문제가 생기는 데 ema 함수가 정상적인 것과 비교해 다른값이 나옵니다.
time 함수로 ema 함수를 시간당 한번만 지나가게 해서 디버그창에 한번만 나타나더라도 자세히 보면 그 다음 ema 값은 그대로 됩니다.
"ztrendvalue1 = data2(ma(C, ztrendline1))"식이 들어가지 않는 정상적인 ema값과 차이가 나서 시스템 전체 결과가 영 다른 결과가 나타납니다.
제 설명이 이해되지 않는 부분에 대해서는 전화 부탁드립니다.
070-7578-1512,김창락 입니다.
부탁드립니다.
Polaris
2009-06-02 11:03:46
Input : ztrendline1(2),ztrendline2(11),
trixPeriod(44),trixsignal(36),
trendline1(18),trendline2(145),trendline3(660);
var : ztrendvalue1(0,data2),ztrendvalue2(0,data2),ztrendvalue3(0,data2);
var : gaptrixvalue(0),gaptrixsignalvalue(0),
t1(0,data1),t2(0,data1),t3(0,data1),gc(0,data1),daygap(0),trendvalue1(0),trendvalue2(0),
rc(0),
callvalue0(0),callvalue1(0), callvalue2(0),
predayindex(0),sellvalue0(0), sellvalue1(0),sellvalue2(0),sellvalue3(0);
ztrendvalue1 = data2(ma(C, ztrendline1)) ;
trendvalue1 = ma(C, trendline1) ;
trendvalue2 = ma(C, trendline2) ;
if abs(dayopen()-Dayclose(1))/dayopen() > 0 then
{
if date !=date[1] then // 날짜가 변경되는 봉에서(분봉에서 첫번째 봉)
{
daygap = O-C[1]; // 일간갭
}
if dayindex <> predayindex Then
{ rc=c;
predayindex=dayindex;
GC = rC-dayGap; // 갭보정 종가
T1 = ema(GC, trixPeriod);
T2 = ema(T1, trixPeriod);
T3 = ema(T2, trixPeriod);
}
MessageLog("T1= %.6f, predayindex= %.6f, = %.6f",T1,predayindex);
gaptrixvalue = (T3 - T3[1]) / t3[1] * 100;
gaptrixsignalvalue = ema(gaptrixvalue, trixsignal);
if crossup(gaptrixvalue,gaptrixsignalvalue) then
{ buy("gap");
}
else if crossdown(gaptrixvalue,gaptrixsignalvalue) then
{
sell("gap2");
}
}
if callvalue1[0] > callvalue1[1] then
{
if crossup(callvalue0, callvalue1) then
{
Buy("callbuy01");#
}
else if crossdown(callvalue1, callvalue2) then #
{
sell("callsell12");
}
}
ema의 정상적인 출력을 위하여 위와 같이 c대신에 rc에 값을 저장하여 dayindex가 같은 루틴이 반복될 때 ema가 재 계산되지 않도록 하였는 데도 불구하고
디버거 창(첨부 그림판)을 보면 ema값이 같은 시간에 바뀌어져 있습니다.
그 이유가 무엇입니까.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : Re : Re : 타분봉 참조시 루틴이 이상함
> 안녕하세요
예스스탁입니다.
첫봉에서 두번값이 찍히는 부분은 막을 수가 없습니다.
다만 기존의 식이 첫봉에서 두번돌면서 이평과 같은경우에 동일한 값이 두번호출되어
평균되어 지는 내용을 수정해 드린 내용과 같이 변수를 선언할 때
변수가 바라보는 데이터를 명시하여 해당 현상을 막은식입니다.
참고하시기 바랍니다.
자세한 내용을 원하시면 02-3453-1060으로 전화주시기 바랍니다.
즐거운 하루되세요
> Polaris 님이 쓴 글입니다.
> 제목 : Re : Re : 타분봉 참조시 루틴이 이상함
> 디버거 창으로 확인해본 결과 이틑날부터 처음 봉에 계속적으로 두번 돌고 있습니다.
다시 한번 확인해 주십시요.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 타분봉 참조시 루틴이 이상함
> 안녕하세요
예스스탁입니다.
아래 식의 변수 선언을 보시면 ztrendvalue1(0,data2),t1(0,data1)와 같이 수정했습니다.
내부변수를 선언시에 다른 주기를 참조하는 수식이라면 해당변수가 참조되야 하는 값이
주종목목인지 참조종목인지를 변수선언시에 명확히 하여 작성하시면
첫봉에서 여러번 돌면서 값이 변경되는 것을 막으실 수 있습니다.
참고하시기 바랍니다.
Input : ztrendline1(2),ztrendline2(11),
trixPeriod(44),trixsignal(36),
trendline1(18),trendline2(145),trendline3(660);
var : ztrendvalue1(0,data2),ztrendvalue2(0),ztrendvalue3(0);
var : gaptrixvalue(0),gaptrixsignalvalue(0),
t1(0,data1),t2(0,data1),t3(0,data1),gc(0,data1),daygap(0,data1),trendvalue1(0),trendvalue2(0),
callvalue0(0),callvalue1(0), callvalue2(0),
sellvalue0(0), sellvalue1(0),sellvalue2(0),sellvalue3(0);
ztrendvalue1 = data2(ma(C, ztrendline1)) ;
trendvalue1 = ma(C, trendline1) ;
trendvalue2 = ma(C, trendline2) ;
if abs(dayopen()-Dayclose(1))/dayopen() > 0 then
{
if date != date[1] then // 날짜가 변경되는 봉에서(분봉에서 첫번째 봉)
{
daygap = O-C[1]; // 일간갭
}
GC = C-dayGap; // 갭보정 종가
T1 = data1(ema(GC, trixPeriod));
MessageLog("ema= %.6f, GC= %.6f, trixPeriod= %.6f",T1,GC,trixPeriod);
T2 = ema(T1, trixPeriod);
T3 = ema(T2, trixPeriod);
gaptrixvalue = (T3 - T3[1]) / t3[1] * 100;
gaptrixsignalvalue = ema(gaptrixvalue, trixsignal);
if crossup(gaptrixvalue,gaptrixsignalvalue) then
{ buy("gap");
}
else if crossdown(gaptrixvalue,gaptrixsignalvalue) then
{
sell("gap2");
}
}
if callvalue1[0] > callvalue1[1] then
{
if crossup(callvalue0, callvalue1) then
{
Buy("callbuy01");#
}
else if crossdown(callvalue1, callvalue2) then #
{
sell("callsell12");
}
}
즐거운 하루되세요
> Polaris 님이 쓴 글입니다.
> 제목 : 타분봉 참조시 루틴이 이상함
> Input : ztrendline1(2),ztrendline2(11),
trixPeriod(44),trixsignal(36),
trendline1(18),trendline2(145),trendline3(660);
var : ztrendvalue1(0),ztrendvalue2(0),ztrendvalue3(0);
var : gaptrixvalue(0),gaptrixsignalvalue(0),
t1(0),t2(0),t3(0),gc(0),daygap(0),trendvalue1(0),trendvalue2(0),
callvalue0(0),callvalue1(0), callvalue2(0),
sellvalue0(0), sellvalue1(0),sellvalue2(0),sellvalue3(0);
ztrendvalue1 = data2(ma(C, ztrendline1)) ;
trendvalue1 = ma(C, trendline1) ;
trendvalue2 = ma(C, trendline2) ;
if abs(dayopen()-Dayclose(1))/dayopen() > 0 then
{
if date !=date[1] then // 날짜가 변경되는 봉에서(분봉에서 첫번째 봉)
{
daygap = O-C[1]; // 일간갭
}
GC = C-dayGap; // 갭보정 종가
T1 = ema(GC, trixPeriod);
MessageLog("ema= %.6f, GC= %.6f, trixPeriod= %.6f",ema(GC, trixPeriod),GC,trixPeriod);
T2 = ema(T1, trixPeriod);
T3 = ema(T2, trixPeriod);
gaptrixvalue = (T3 - T3[1]) / t3[1] * 100;
gaptrixsignalvalue = ema(gaptrixvalue, trixsignal);
if crossup(gaptrixvalue,gaptrixsignalvalue) then
{ buy("gap");
}
else if crossdown(gaptrixvalue,gaptrixsignalvalue) then
{
sell("gap2");
}
}
if callvalue1[0] > callvalue1[1] then
{
if crossup(callvalue0, callvalue1) then
{
Buy("callbuy01");#
}
else if crossdown(callvalue1, callvalue2) then #
{
sell("callsell12");
}
}
위의 식은 data1 이 5분봉이고 data2는 일봉입니다.
문제는 "ztrendvalue1 = data2(ma(C, ztrendline1))" 식이 들어가서 타분봉을 참조함에 따라 디버창에서 확인할 경우 시작 다음날부터 첫봉이 2개 나타난다는 것입니다.
09:00분에 루틴이 두번 돌아가는 문제가 생기는 데 ema 함수가 정상적인 것과 비교해 다른값이 나옵니다.
time 함수로 ema 함수를 시간당 한번만 지나가게 해서 디버그창에 한번만 나타나더라도 자세히 보면 그 다음 ema 값은 그대로 됩니다.
"ztrendvalue1 = data2(ma(C, ztrendline1))"식이 들어가지 않는 정상적인 ema값과 차이가 나서 시스템 전체 결과가 영 다른 결과가 나타납니다.
제 설명이 이해되지 않는 부분에 대해서는 전화 부탁드립니다.
070-7578-1512,김창락 입니다.
부탁드립니다.
다음글
이전글