수고하십니다.
지표수식은 정상적으로 작동합니다.
종목검색 수식은 3분봉에서 500봉 기준으로 검색하였는데 검색이 안됩니다.
검토해 주시면 감사하겠습니다.
input : P20(20);
var : CL(0),sum(0),ii(0),avgif(0),cnt(0);
var : SumSqrt(0),StdevIf(0),LL(0);
Array : diff[10000](0);
CL = ma(C,p20);
var1 = c-CL;
if IsNan(CL) == False then
if var1 < 0 Then
ii = ii + 1;
diff[ii] = var1;
sum = sum + var1;
avgif = sum/ii;
if ii >= 1 then
SumSqrt = 0;
For cnt = 1 To ii
SumSqrt = SumSqrt + (diff[cnt] - avgif)^2;
StdevIf = SquareRoot(SumSqrt / ii);
LL = var1 + avgif - 2*StdevIf;
if CROSSUP(C,CL) OR CROSSUP(C,LL) && C>C[1] && C>O && V>V[1]*1.0 Then
Find(1);
답변 1
예스스탁
예스스탁 답변
2022-10-06 11:34:08
안녕하세요
예스스탁입니다.
수식에 diff배열변수의 사이즈가 차트의 최대 봉수인 10000개로 지정되어 있습니다.
배열변수의 메모리 할당량이 크므로
종목검색은 최대 500봉 제공되므로 500으로 변경해 드립니다.
만약 해당 사이즈로 검색이 안되시면
검색에 필요한 최소기간을 줄이시고 배열사이즈를 동일한 봉수로 줄여서 검색하셔야 합니다.
input : P20(20);
var : CL(0),sum(0),ii(0),avgif(0),cnt(0);
var : SumSqrt(0),StdevIf(0),LL(0);
Array : diff[500](0);
CL = ma(C,p20);
var1 = C-CL;
if IsNan(CL) == False then
{
if var1 < 0 Then
{
ii = ii + 1;
diff[ii] = var1;
sum = sum + var1;
avgif = sum/ii;
}
if ii >= 1 then
{
SumSqrt = 0;
For cnt = 1 To ii
{
SumSqrt = SumSqrt + (diff[cnt] - avgif)^2;
}
StdevIf = SquareRoot(SumSqrt / ii);
LL = var1 + avgif - 2*StdevIf;
if CROSSUP(C,CL) OR CROSSUP(C,LL) && C>C[1] && C>O && V>V[1]*1.0 Then
Find(1);
}
}
즐거운 하루되세요
> 심홍 님이 쓴 글입니다.
> 제목 : 재문의 드립니다
> 수고하십니다.
지표수식은 정상적으로 작동합니다.
종목검색 수식은 3분봉에서 500봉 기준으로 검색하였는데 검색이 안됩니다.
검토해 주시면 감사하겠습니다.
input : P20(20);
var : CL(0),sum(0),ii(0),avgif(0),cnt(0);
var : SumSqrt(0),StdevIf(0),LL(0);
Array : diff[10000](0);
CL = ma(C,p20);
var1 = c-CL;
if IsNan(CL) == False then
if var1 < 0 Then
ii = ii + 1;
diff[ii] = var1;
sum = sum + var1;
avgif = sum/ii;
if ii >= 1 then
SumSqrt = 0;
For cnt = 1 To ii
SumSqrt = SumSqrt + (diff[cnt] - avgif)^2;
StdevIf = SquareRoot(SumSqrt / ii);
LL = var1 + avgif - 2*StdevIf;
if CROSSUP(C,CL) OR CROSSUP(C,LL) && C>C[1] && C>O && V>V[1]*1.0 Then
Find(1);