예스스탁
예스스탁 답변
2020-11-23 11:34:49
안녕하세요
예스스탁입니다.
수식의 계산은 봉의 데이타로 계산하므로 수식의 종류별로 다를수 없습니다.
해당 지표를 아래와 같이 시스템식에서 사용하고 messagelong로 검증도 해보았지만 달라지는 현상이 없습니다.
input : ntime(30),P(20);
var : S1(0,Data1),D1(0,Data1),TM(0,Data1),TF(0,Data1),cnt(0,Data1);
var : sum1(0,Data1),mav1(0,Data1);
Array : C1[100](0,Data1);
if data1(Bdate != Bdate[1]) Then
{
S1 = data1(TimeToMinutes(stime));
D1 = data1(sdate);
}
if D1 > 0 then
{
if data1(sdate == D1) Then
TM = data1(TimeToMinutes(stime))-S1;
Else
TM = data1(TimeToMinutes(stime))+1440-S1;
TF = TM%ntime;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and ntime > 1 and TF < TF[1]) or
(Bdate == Bdate[1] and ntime > 1 and TM >= TM[1]+ntime) or
(Bdate == Bdate[1] and ntime == 1 and TM > TM[1]) Then
{
for cnt = 1 to 99
{
C1[cnt] = C1[cnt-1][1];
}
}
C1[0] = data1(C);
if C1[P-1] > 0 then
{
sum1 = 0;
for cnt = 0 to P-1
{
sum1 = sum1+C1[cnt];
}
mav1 = sum1/P;
}
}
if CrossUp(c,mav1) Then
Buy();
if CrossDown(c,mav1) Then
Sell();
MessageLog("%.2f",mav1);
계산식을 다른수식에 사용될 경우
아래 내용을 살펴보시기 바랍니다.
1
기존에 다른 수식에서 사용하는 변수들과 겹치는 부분이 없는지 확인하시기 바랍니다.
겹치는 변수가 있으면 사용자분이 적절히 다른이름으로 변경해 주셔야 합니다.
2
다른수식에 참조데이타(data2~data99)가 사용될 경우
아래와 같이 각 변수가 어떤 데이타를 기준으로 값이 저장되고
이전값을 불러오는지 변수선언등에 데이타번호를 추가하셔야 합니다.
input : ntime(30),P(20);
var : S1(0,Data1),D1(0,Data1),TM(0,Data1),TF(0,Data1),cnt(0,Data1);
var : sum1(0,Data1),mav1(0,Data1);
Array : C1[100](0,Data1);
if data1(Bdate != Bdate[1]) Then
{
S1 = data1(TimeToMinutes(stime));
D1 = data1(sdate);
}
if D1 > 0 then
{
if data1(sdate == D1) Then
TM = data1(TimeToMinutes(stime))-S1;
Else
TM = data1(TimeToMinutes(stime))+1440-S1;
TF = TM%ntime;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and ntime > 1 and TF < TF[1]) or
(Bdate == Bdate[1] and ntime > 1 and TM >= TM[1]+ntime) or
(Bdate == Bdate[1] and ntime == 1 and TM > TM[1]) Then
{
for cnt = 1 to 99
{
C1[cnt] = C1[cnt-1][1];
}
}
C1[0] = data1(C);
if C1[P-1] > 0 then
{
sum1 = 0;
for cnt = 0 to P-1
{
sum1 = sum1+C1[cnt];
}
mav1 = sum1/P;
Plot1(mav1);
}
}
즐거운 하루되세요
> 맘속의행복 님이 쓴 글입니다.
> 제목 : 질문드립니다
> 안녕하세요
전에 3분봉 챠트에 30분봉의 20이평선을 표시하는 함수식을 질문드린 적이 있었고, 답변에 주신 수식은 아래와 같습니다.
input : ntime(30),P(20);
var : S1(0),D1(0),TM(0),TF(0),cnt(0);
var : sum1(0),mav1(0);
Array : C1[100](0);
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF = TM%ntime;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and ntime > 1 and TF < TF[1]) or
(Bdate == Bdate[1] and ntime > 1 and TM >= TM[1]+ntime) or
(Bdate == Bdate[1] and ntime == 1 and TM > TM[1]) Then
{
for cnt = 1 to 99
{
C1[cnt] = C1[cnt-1][1];
}
}
C1[0] = C;
if C1[P-1] > 0 then
{
sum1 = 0;
for cnt = 0 to P-1
{
sum1 = sum1+C1[cnt];
}
mav1 = sum1/P;
Plot1(mav1);
}
}
그런데, 이 식을 시스템식에 이것을 지표로 사용하려 했으나, 무슨 이유인지 수치가 달라집니다. 챠트상에 띄운 해당 이평선과 시스템내에서 지표로 산출되는 수치가 꽤 많이 달라지는 문제를 겪고 있습니다. 해결할 수 있도록 도움 요청드립니다.
감사합니다
맘속의행복
2020-11-23 22:59:24
감사합니다. 알려주신대로 하니깐 잘 됩니다
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 질문드립니다
>
안녕하세요
예스스탁입니다.
수식의 계산은 봉의 데이타로 계산하므로 수식의 종류별로 다를수 없습니다.
해당 지표를 아래와 같이 시스템식에서 사용하고 messagelong로 검증도 해보았지만 달라지는 현상이 없습니다.
input : ntime(30),P(20);
var : S1(0,Data1),D1(0,Data1),TM(0,Data1),TF(0,Data1),cnt(0,Data1);
var : sum1(0,Data1),mav1(0,Data1);
Array : C1[100](0,Data1);
if data1(Bdate != Bdate[1]) Then
{
S1 = data1(TimeToMinutes(stime));
D1 = data1(sdate);
}
if D1 > 0 then
{
if data1(sdate == D1) Then
TM = data1(TimeToMinutes(stime))-S1;
Else
TM = data1(TimeToMinutes(stime))+1440-S1;
TF = TM%ntime;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and ntime > 1 and TF < TF[1]) or
(Bdate == Bdate[1] and ntime > 1 and TM >= TM[1]+ntime) or
(Bdate == Bdate[1] and ntime == 1 and TM > TM[1]) Then
{
for cnt = 1 to 99
{
C1[cnt] = C1[cnt-1][1];
}
}
C1[0] = data1(C);
if C1[P-1] > 0 then
{
sum1 = 0;
for cnt = 0 to P-1
{
sum1 = sum1+C1[cnt];
}
mav1 = sum1/P;
}
}
if CrossUp(c,mav1) Then
Buy();
if CrossDown(c,mav1) Then
Sell();
MessageLog("%.2f",mav1);
계산식을 다른수식에 사용될 경우
아래 내용을 살펴보시기 바랍니다.
1
기존에 다른 수식에서 사용하는 변수들과 겹치는 부분이 없는지 확인하시기 바랍니다.
겹치는 변수가 있으면 사용자분이 적절히 다른이름으로 변경해 주셔야 합니다.
2
다른수식에 참조데이타(data2~data99)가 사용될 경우
아래와 같이 각 변수가 어떤 데이타를 기준으로 값이 저장되고
이전값을 불러오는지 변수선언등에 데이타번호를 추가하셔야 합니다.
input : ntime(30),P(20);
var : S1(0,Data1),D1(0,Data1),TM(0,Data1),TF(0,Data1),cnt(0,Data1);
var : sum1(0,Data1),mav1(0,Data1);
Array : C1[100](0,Data1);
if data1(Bdate != Bdate[1]) Then
{
S1 = data1(TimeToMinutes(stime));
D1 = data1(sdate);
}
if D1 > 0 then
{
if data1(sdate == D1) Then
TM = data1(TimeToMinutes(stime))-S1;
Else
TM = data1(TimeToMinutes(stime))+1440-S1;
TF = TM%ntime;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and ntime > 1 and TF < TF[1]) or
(Bdate == Bdate[1] and ntime > 1 and TM >= TM[1]+ntime) or
(Bdate == Bdate[1] and ntime == 1 and TM > TM[1]) Then
{
for cnt = 1 to 99
{
C1[cnt] = C1[cnt-1][1];
}
}
C1[0] = data1(C);
if C1[P-1] > 0 then
{
sum1 = 0;
for cnt = 0 to P-1
{
sum1 = sum1+C1[cnt];
}
mav1 = sum1/P;
Plot1(mav1);
}
}
즐거운 하루되세요
> 맘속의행복 님이 쓴 글입니다.
> 제목 : 질문드립니다
> 안녕하세요
전에 3분봉 챠트에 30분봉의 20이평선을 표시하는 함수식을 질문드린 적이 있었고, 답변에 주신 수식은 아래와 같습니다.
input : ntime(30),P(20);
var : S1(0),D1(0),TM(0),TF(0),cnt(0);
var : sum1(0),mav1(0);
Array : C1[100](0);
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF = TM%ntime;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and ntime > 1 and TF < TF[1]) or
(Bdate == Bdate[1] and ntime > 1 and TM >= TM[1]+ntime) or
(Bdate == Bdate[1] and ntime == 1 and TM > TM[1]) Then
{
for cnt = 1 to 99
{
C1[cnt] = C1[cnt-1][1];
}
}
C1[0] = C;
if C1[P-1] > 0 then
{
sum1 = 0;
for cnt = 0 to P-1
{
sum1 = sum1+C1[cnt];
}
mav1 = sum1/P;
Plot1(mav1);
}
}
그런데, 이 식을 시스템식에 이것을 지표로 사용하려 했으나, 무슨 이유인지 수치가 달라집니다. 챠트상에 띄운 해당 이평선과 시스템내에서 지표로 산출되는 수치가 꽤 많이 달라지는 문제를 겪고 있습니다. 해결할 수 있도록 도움 요청드립니다.
감사합니다