예스스탁
예스스탁 답변
2022-12-21 08:53:59
안녕하세요
예스스탁입니다.
값계산이 누락된 부분이 있었습니다.
수정한 식입니다.
input : StartTime(90000),EndTime(160000);
Input : RSIPeriod(9),Vector(14),n(50);
Input : shortPeriod(12), longPeriod(26), Signal(9);
var : Tcond1(False,Data1),idx1(0,data1),cnt(0,Data1),DownAmt(0,Data1), UpAmt(0,Data1);
var : UpSum(0,Data1), DownSum(0,Data1), UpAvg(0,Data1), DownAvg(0,Data1);
var : sum(0,Data1),rsi_(0,Data1),rsi_signal(0,Data1);
Array : C1[100](0,Data1),RSIV[100](0,Data1);
var : Tcond2(false,Data2),EP1(0,Data2),EP2(0,Data2),EP3(0,Data2);
var : Ema1(0,Data2),Ema2(0,Data2);
var : idx2(0,Data2),MACDV(0,Data2),MACDS(0,Data2),MACDO(0,Data2);
if Data1((sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime)) Then
Tcond1 = False;
if Data1((sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime)) Then
{
Tcond1 = true;
}
if Tcond1 == true Then
{
idx1 = idx1+1;
For cnt = 99 DownTo 1
{
C1[cnt] = C1[cnt-1];
RSIV[cnt] = RSIV[cnt-1];
}
C1[0] = C;
if idx1 >= RSIperiod-1 Then
{
if idx1 == RSIPeriod-1 Then
{
UpSum = 0;
DownSum = 0;
For cnt = 0 To RSIPeriod - 1
{
UpAmt = C1[cnt] - C1[cnt+1];
If UpAmt >= 0 Then
DownAmt = 0;
Else
{
DownAmt = -UpAmt;
UpAmt = 0;
}
UpSum = UpSum + UpAmt;
DownSum = DownSum + DownAmt;
}
UpAvg = UpSum / RSIPeriod;
DownAvg = DownSum / RSIPeriod;
}
Else
{
UpAmt = C1[0] - C1[1];
If UpAmt >= 0 Then
DownAmt = 0;
Else Begin
DownAmt = -UpAmt;
UpAmt = 0;
End;
UpAvg = (UpAvg[1] * (RSIPeriod - 1) + UpAmt) / RSIPeriod;
DownAvg = (DownAvg[1] * (RSIPeriod - 1) + DownAmt) / RSIPeriod;
}
If UpAvg + DownAvg <> 0 Then
RSIv[0] = 100 * UpAvg / (UpAvg + DownAvg);
Else
RSIv[0] = 0;
rsi_ = RSIV[0];
sum = 0;
For cnt = 0 to Vector-1
{
sum = sum + RSIV[cnt];
}
rsi_signal = sum/vector;
}
}
if Data2((sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime)) Then
Tcond2 = False;
if Data2((sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime)) Then
{
Tcond2 = true;
}
Ep1 = 2/(shortPeriod+1);
Ep2 = 2/(longPeriod+1);
Ep3 = 2/(signal+1);
if Tcond2 == true Then
{
idx2 = idx2+1;
if idx2 == 1 Then
{
Ema1 = data2(C);
Ema1 = data2(C);
MACDV = Ema1-Ema2;
MACDS = MACDV;
}
Else
{
Ema1 = data2(C) * EP1 + Ema1 * (1-EP1);
Ema2 = data2(C) * EP2 + Ema2 * (1-EP2);
MACDV = Ema1-Ema2;
MACDS = MACDV * EP3 + MACDS * (1-EP3);
MACDO = MACDV-MACDS;
}
}
if macdo > 0 && rsi_ < n && rsi_ > rsi_signal && rsi_[1] < rsi_signal[1] Then
{
Buy();
}
else if macdo < 0 && rsi_ > n && rsi_ < rsi_signal && rsi_[1] > rsi_signal[1] Then
{
Sell();
}
즐거운 하루되세요
> 부똘이 님이 쓴 글입니다.
> 제목 : 79998 수식 재문의
>
주신 수식으로 돌려 보았으나
아무 것도 뜨지 않습니다.
다시한번 확인 부탁드립니다.