커뮤니티

수식작성 부탁드립니다

프로필 이미지
뎅이요
2026-03-31 18:12:28
105
글번호 231369
답변완료

아래의 Data1 수식 매수 기준 CrossUP(value1, value2) 에

If lma < data2(C) and lma2 < data2(C) and CrossUP(value1, value2) Then Buy(); 와같이

2가지를 추가 data2( input : n(60),Period(30); input : n(100),Period(90); )

수식을 작성 부탁 드립니다.


# Data1

Input : shortPeriod(5), longPeriod(20);

value1 = ema(C, shortPeriod);

value2 = ema(C, longPeriod);



# Data2

input : n(60),Period(30);

var : stm(0),d1(0),etm(0),ss(0),et(0),ets(0),ts(0),second(0),tf(0);

var : i(0),lma(0);

var : CWSum1(0),WSum1(0),WMAV1(0);

var : CWSum2(0),WSum2(0),WMAV2(0);

var : CWSum(0),WSum(0);

Array : CC[100](0),value[100](0);

if Bdate != Bdate[1] Then

{ stm = TimeToMinutes(stime);

D1 = Bdate;

}if D1 > 0 then

{ if date == D1 Then

eTM = TimeToMinutes(time)-stm;

Else

eTM = TimeToMinutes(time)+1440-stm;

ets = FracPortion(time/100)*100;

Second = (etm*60)+ets;

TF = second%n;

if Bdate != Bdate[1] or

(Bdate == Bdate[1] and TF < TF[1]) Then

{

For i = 99 DownTo 1

{

CC[i] = CC[i-1];

value[i] = value[i-1];

}

}

CC[0] = C;

}if CC[int(Period/2)-1] > 0 Then

{ CWSum1 = 0;

WSum1 = 0;

For i = 0 To int(Period/2) - 1

{

CWSum1 = CWSum1 + CC[i] * (int(Period/2) - i);

WSum1 = WSum1 + (int(Period/2) - i);

}

WMAV1 = CWSum1/WSum1;

}if CC[Period-1] > 0 Then

{ CWSum2 = 0;

WSum2 = 0;

For i = 0 To Period - 1

{

CWSum2 = CWSum2 + CC[i] * (Period - i);

WSum2 = WSum2 + (Period - i);

}

WMAV2 = CWSum2/WSum2;

}if WMAV1 > 0 and WMAV2 > 0 Then

value[0] = 2*WMAV1-WMAV2;

if value[int(sqrt(Period))-1] > 0 Then

{ CWSum = 0;

WSum = 0;

For i = 0 To int(sqrt(Period)) - 1

{

CWSum = CWSum + value[i] * (int(sqrt(Period)) - i);

WSum = WSum + (int(sqrt(Period)) - i);

}

lma = CWSum/WSum;

}


시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2026-04-01 12:41:49

안녕하세요 예스스탁입니다. # Data1 Input : shortPeriod(5), longPeriod(20); value1 = ema(C, shortPeriod); value2 = ema(C, longPeriod); # Data2 input : n1(60),Period1(30); input : n2(100),Period2(90); var : stm(0),d1(0),etm(0),ss(0),et(0),ets(0),ts(0),second(0),tf(0),tf2(0),i(0); var : lma(0); var : CWSum1(0),WSum1(0),WMAV1(0); var : CWSum2(0),WSum2(0),WMAV2(0); var : CWSum(0),WSum(0); Array : CC[200](0),value[200](0); var : lma2(0); var : bCWSum1(0),bWSum1(0),bWMAV1(0); var : bCWSum2(0),bWSum2(0),bWMAV2(0); var : bCWSum(0),bWSum(0); Array : C2[200](0),bvalue[200](0); if Bdate != Bdate[1] Then { stm = TimeToMinutes(stime); D1 = Bdate; } if D1 > 0 then { if date == D1 Then eTM = TimeToMinutes(time)-stm; Else eTM = TimeToMinutes(time)+1440-stm; ets = FracPortion(time/100)*100; Second = (etm*60)+ets; TF = second%n1; if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF < TF[1]) Then { For i = 199 DownTo 1 { CC[i] = CC[i-1]; value[i] = value[i-1]; } } CC[0] = C; TF2 = second%n2; if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF2 < TF2[1]) Then { For i = 199 DownTo 1 { C2[i] = C2[i-1]; bvalue[i] = bvalue[i-1]; } } C2[0] = C; } if CC[int(Period1/2)-1] > 0 Then { CWSum1 = 0; WSum1 = 0; For i = 0 To int(Period1/2) - 1 { CWSum1 = CWSum1 + CC[i] * (int(Period1/2) - i); WSum1 = WSum1 + (int(Period1/2) - i); } WMAV1 = CWSum1/WSum1; } if CC[Period1-1] > 0 Then { CWSum2 = 0; WSum2 = 0; For i = 0 To Period1 - 1 { CWSum2 = CWSum2 + CC[i] * (Period1 - i); WSum2 = WSum2 + (Period1 - i); } WMAV2 = CWSum2/WSum2; } if WMAV1 > 0 and WMAV2 > 0 Then value[0] = 2*WMAV1-WMAV2; if value[int(sqrt(Period1))-1] > 0 Then { CWSum = 0; WSum = 0; For i = 0 To int(sqrt(Period1)) - 1 { CWSum = CWSum + value[i] * (int(sqrt(Period1)) - i); WSum = WSum + (int(sqrt(Period1)) - i); } lma = CWSum/WSum; } //Period2 if C2[int(Period2/2)-1] > 0 Then { bCWSum1 = 0; bWSum1 = 0; For i = 0 To int(Period2/2) - 1 { bCWSum1 = bCWSum1 + C2[i] * (int(Period2/2) - i); bWSum1 = bWSum1 + (int(Period2/2) - i); } bWMAV1 = bCWSum1/bWSum1; } if CC[Period2-1] > 0 Then { bCWSum2 = 0; bWSum2 = 0; For i = 0 To Period2 - 1 { bCWSum2 = bCWSum2 + C2[i] * (Period2 - i); bWSum2 = bWSum2 + (Period2 - i); } bWMAV2 = bCWSum2/bWSum2; } if bWMAV1 > 0 and bWMAV2 > 0 Then bvalue[0] = 2*bWMAV1-bWMAV2; if bvalue[int(sqrt(Period2))-1] > 0 Then { bCWSum = 0; bWSum = 0; For i = 0 To int(sqrt(Period2)) - 1 { bCWSum = bCWSum + bvalue[i] * (int(sqrt(Period2)) - i); bWSum = bWSum + (int(sqrt(Period2)) - i); } lma2 = bCWSum/bWSum; } if lma < C and lma2 < C and CrossUp(value1,Value2) Then Buy(); 즐거운 하루되세요