예스스탁
예스스탁 답변
2025-07-16 11:02:50
안녕하세요
예스스탁입니다.
input : Length(14),타분봉1(5),타분봉2(10);
var : S1(0),D1(0),TM(0),cnt(0);
var : xTF(0),xTL(0),xTH(0),xi(0),xCB(0);
var : xMyRange(Length),xTRange(0),prexTRange(0);
var : xPlusDM(0),xPlusDM14(0),prexPlusDM14(0);
var : xMinusDM(0),xMinusDM14(0),prexMinusDM14(0);
Var : xCummDMI(0),xADX(0),prexADX(0),xDP(0),xDM(0),x1(0),x2(0);
Array : xH[61](0),xL[61](0),xC[61](0),xTR[61](0),xDMI[61](0);
var : yTF(0),yTL(0),yTH(0),yi(0),yCB(0);
var : yMyRange(Length),yTRange(0),preyTRange(0);
var : yPlusDM(0),yPlusDM14(0),preyPlusDM14(0);
var : yMinusDM(0),yMinusDM14(0),preyMinusDM14(0);
Var : yCummDMI(0),yADX(0),preyADX(0),yDP(0),yDM(0),y1(0),y2(0);
Array : yH[61](0),yL[61](0),yC[61](0),yTR[61](0),yDMI[61](0);
var : ADXv(0),DP(0),DM(0);
ADXV = ADX(length);
DP = DiPlus(length);
DM = DiMinus(length);
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;
xTF = TM%타분봉1;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and 타분봉1 > 1 and xTF < xTF[1]) or
(Bdate == Bdate[1] and 타분봉1 > 1 and TM >= TM[1]+타분봉1) or
(Bdate == Bdate[1] and 타분봉1 == 1 and TM > TM[1]) Then
{
xi = xi+1;
if xi >= Length+2 Then
xCB = xCB+1;
xH[0] = H;
xL[0] = L;
xC[0] = C;
prexTRange = xTRange[1];
prexPlusDM14 = xPlusDM14[1];
prexMinusDM14 = xMinusDM14[1];
PrexADX = xADX[1];
for cnt = 1 to 60
{
xH[cnt] = xH[cnt-1][1];
xL[cnt] = xL[cnt-1][1];
xC[cnt] = xC[cnt-1][1];
xTR[cnt] = xTR[cnt-1][1];
xDMI[cnt] = xDMI[cnt-1][1];
}
}
if H > xH[0] Then
xH[0] = H;
if L < xL[0] Then
xL[0] = L;
xC[0] = C;
if xC[1] > 0 Then{
If xC[1] > xH[0] then
xTH = xC[1];
else
xTH = xH[0];
If xC[1] < xL[0] then
xTL = xC[1];
else
xTL = xL[0];
xTR[0] = xTH-xTL;
}
If xCB == 1 Then
{
xMyRange = Length;
xDP = 0;
xPlusDM14 = 0;
xTRange = 0;
xDM = 0;
xMinusDM14 = 0;
For cnt = 0 To xMyRange - 1
{
If xH[cnt] - xH[cnt+1] < 0 Then
xPlusDM = 0 ;
Else
xPlusDM = xH[cnt] - xH[cnt+1];
If xL[cnt+1] - xL[cnt] < 0 Then
xMinusDM = 0;
Else
xMinusDM = xL[cnt+1] - xL[cnt];
x1 = xPlusDM;
x2 = xMinusDM;
If x1 >= x2 Then
xMinusDM = 0;
If x2 >= x1 Then
xPlusDM = 0;
xTRange = xTRange + xTR[cnt];
xPlusDM14 = xPlusDM14 + xPlusDM;
xMinusDM14 = xMinusDM14 + xMinusDM;
}
If xTRange <> 0 Then
xDP = 100 * xPlusDM14 / xTRange;
Else
xDP = 0 ;
If xTRange <> 0 Then
xDM = 100 * xMinusDM14 / xTRange;
Else
xDM = 0;
If xDP + xDM == 0 Then
xDMI[0] = 0;
Else
xDMI[0] = 100 * AbsValue(xDP - xDM) / (xDP + xDM);
}
Else If xCB > 1 Then {
If xH[0] - xH[1] < 0 Then
xPlusDM = 0;
Else
xPlusDM = xH[0] - xH[1];
If xL[1] - xL[0] < 0 Then
xMinusDM = 0;
Else
xMinusDM = xL[1] - xL[0];
x1 = xPlusDM;
x2 = xMinusDM;
If x1 >= x2 Then
xMinusDM = 0;
If x2 >= x1 Then
xPlusDM = 0;
If xMyRange > 0 Then {
xTRange = prexTRange - (prexTRange / xMyRange) + xTR[0];
xPlusDM14 = prexPlusDM14 - (prexPlusDM14 / xMyRange) + xPlusDM;
xMinusDM14 = prexMinusDM14 - (prexMinusDM14 / xMyRange) + xMinusDM;
}
If xTRange <> 0 Then
xDP = 100 * xPlusDM14 / xTRange;
Else
xDP = 0 ;
If xTRange <> 0 Then
xDM = 100 * xMinusDM14 / xTRange;
Else
xDM = 0;
If xDP + xDM == 0 Then
xDMI[0] = 0;
Else
xDMI[0] = 100 * AbsValue(xDP - xDM) / (xDP + xDM);
}
If xCB >= 1 AND Length > 0 Then
{
If xCB < Length Then
{
xCummDMI = 0;
for cnt = 0 To xCB - 1
{
xCummDMI = xCummDMI + xDMI[cnt];
}
xADX = xCummDMI / xCB;
}
Else
xADX = (PrexADX * (Length - 1) + xDMI[0]) / Length;
}
yTF = TM%타분봉1;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and 타분봉1 > 1 and yTF < yTF[1]) or
(Bdate == Bdate[1] and 타분봉1 > 1 and TM >= TM[1]+타분봉1) or
(Bdate == Bdate[1] and 타분봉1 == 1 and TM > TM[1]) Then
{
yi = yi+1;
if yi >= Length+2 Then
yCB = yCB+1;
yH[0] = H;
yL[0] = L;
yC[0] = C;
preyTRange = yTRange[1];
preyPlusDM14 = yPlusDM14[1];
preyMinusDM14 = yMinusDM14[1];
PreyADX = yADX[1];
for cnt = 1 to 60
{
yH[cnt] = yH[cnt-1][1];
yL[cnt] = yL[cnt-1][1];
yC[cnt] = yC[cnt-1][1];
yTR[cnt] = yTR[cnt-1][1];
yDMI[cnt] = yDMI[cnt-1][1];
}
}
if H > yH[0] Then
yH[0] = H;
if L < yL[0] Then
yL[0] = L;
yC[0] = C;
if yC[1] > 0 Then{
If yC[1] > yH[0] then
yTH = yC[1];
else
yTH = yH[0];
If yC[1] < yL[0] then
yTL = yC[1];
else
yTL = yL[0];
yTR[0] = yTH-yTL;
}
If yCB == 1 Then
{
yMyRange = Length;
yDP = 0;
yPlusDM14 = 0;
yTRange = 0;
yDM = 0;
yMinusDM14 = 0;
For cnt = 0 To yMyRange - 1
{
If yH[cnt] - yH[cnt+1] < 0 Then
yPlusDM = 0 ;
Else
yPlusDM = yH[cnt] - yH[cnt+1];
If yL[cnt+1] - yL[cnt] < 0 Then
yMinusDM = 0;
Else
yMinusDM = yL[cnt+1] - yL[cnt];
y1 = yPlusDM;
y2 = yMinusDM;
If y1 >= y2 Then
yMinusDM = 0;
If y2 >= y1 Then
yPlusDM = 0;
yTRange = yTRange + yTR[cnt];
yPlusDM14 = yPlusDM14 + yPlusDM;
yMinusDM14 = yMinusDM14 + yMinusDM;
}
If yTRange <> 0 Then
yDP = 100 * yPlusDM14 / yTRange;
Else
yDP = 0 ;
If yTRange <> 0 Then
yDM = 100 * yMinusDM14 / yTRange;
Else
yDM = 0;
If yDP + yDM == 0 Then
yDMI[0] = 0;
Else
yDMI[0] = 100 * AbsValue(yDP - yDM) / (yDP + yDM);
}
Else If yCB > 1 Then {
If yH[0] - yH[1] < 0 Then
yPlusDM = 0;
Else
yPlusDM = yH[0] - yH[1];
If yL[1] - yL[0] < 0 Then
yMinusDM = 0;
Else
yMinusDM = yL[1] - yL[0];
y1 = yPlusDM;
y2 = yMinusDM;
If y1 >= y2 Then
yMinusDM = 0;
If y2 >= y1 Then
yPlusDM = 0;
If yMyRange > 0 Then {
yTRange = preyTRange - (preyTRange / yMyRange) + yTR[0];
yPlusDM14 = preyPlusDM14 - (preyPlusDM14 / yMyRange) + yPlusDM;
yMinusDM14 = preyMinusDM14 - (preyMinusDM14 / yMyRange) + yMinusDM;
}
If yTRange <> 0 Then
yDP = 100 * yPlusDM14 / yTRange;
Else
yDP = 0 ;
If yTRange <> 0 Then
yDM = 100 * yMinusDM14 / yTRange;
Else
yDM = 0;
If yDP + yDM == 0 Then
yDMI[0] = 0;
Else
yDMI[0] = 100 * AbsValue(yDP - yDM) / (yDP + yDM);
}
If yCB >= 1 AND Length > 0 Then
{
If yCB < Length Then
{
yCummDMI = 0;
for cnt = 0 To yCB - 1
{
yCummDMI = yCummDMI + yDMI[cnt];
}
yADX = yCummDMI / yCB;
}
Else
yADX = (PreyADX * (Length - 1) + yDMI[0]) / Length;
}
Condition1 = ADXV > ADXV[1] and DP > DM and
xADX > PrexADX and xDP > xDM and
yADX > PreyADX and yDP > yDM;
Condition2 = ADXV < ADXV[1] and DP < DM and
xADX < PrexADX and xDP < xDM and
yADX < PreyADX and yDP < yDM;
if Condition1 == true Then
Buy();
if ADXV < ADXV[1] and xADX < PrexADX Then
ExitLong();
if Condition2 == true Then
Sell();
if ADXV > ADXV[1] and xADX > PrexADX Then
ExitShort();
}
즐거운 하루되세요
> 장보고153 님이 쓴 글입니다.
> 제목 : 수식을 부탁드립니다
> 늘 친절히 답해 주셔서 감사를 드립니다. 1분,5분,10분 모두 ADX 상승, +DI>-DI일 때 매수하고, 1분,5분 에서 ADX가 하락하면 매수 청산, 그리고 반대의 경우는 매도와 매도 청산하는 수식을 작성하고자 합니다.넓으신 마음으로 이해해 주시면 감사하겠습니다.
늘 건강하시기를 기원합니다.