예스스탁
예스스탁 답변
2025-07-17 10:45:46
안녕하세요
예스스탁입니다.
1봉전에 "26기준선돌파+rsi(20)이 50돌파+1봉전 ~ 5봉전 rsi(20)은 49.9"이하
위 조건으로 변경해 드립니다.
다만 일봉의 조건을 30분봉에서 검색하는 내용이면
해당 부분은 가능하지 않습니다.
종목검색은 최대 제공봉수가 500봉으로 일봉값을 분봉에서
게산하기에는 제공봉수가 많이 부족합니다.
input : P(20);
var : xClose(0),xOpen(0),xHigh(0),xLow(0);
var : 기준선(0),R(0);
Var : Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0);
#Heiken Ashi 시고저종
if index == 0 then
{
xClose = (O+H+L+C)/4;
xOpen = open;
xHigh = MaxList( high, xOpen, xClose);
xLow = MinList( low, xOpen,xClose);
}
else
{
xClose = (O+H+L+C)/4;
xOpen = (xOpen [1] + xClose [1])/2 ;
xHigh = MaxList(High, xOpen, xClose) ;
xLow = MinList(Low, xOpen, xClose) ;
}
기준선 = (Highest(xHigh, 26) + Lowest(xLow, 26)) / 2;
If CurrentBar == 1 AND P > 0 Then Begin
UpSum = 0;
DownSum = 0;
For Counter = 0 To P - 1 Begin
UpAmt = xClose[Counter] - xClose[Counter+1];
If UpAmt >= 0 Then
DownAmt = 0;
Else Begin
DownAmt = -UpAmt;
UpAmt = 0;
End;
UpSum = UpSum + UpAmt;
DownSum = DownSum + DownAmt;
End;
UpAvg = UpSum / P;
DownAvg = DownSum / P;
End
Else
If CurrentBar > 1 AND P > 0 Then Begin
UpAmt = xClose[0] - xClose[1];
If UpAmt >= 0 Then
DownAmt = 0;
Else Begin
DownAmt = -UpAmt;
UpAmt = 0;
End;
UpAvg = (UpAvg[1] * (P - 1) + UpAmt) / P;
DownAvg = (DownAvg[1] * (P - 1) + DownAmt) / P;
End;
If UpAvg + DownAvg <> 0 Then
R = 100 * UpAvg / (UpAvg + DownAvg);
Else
R = 0;
Condition1 = CrossUp(xClose,기준선) and CrossUp(R,50) and CountIf(R <= 49.9,5)[1] == 5;
if Condition1[1] == true Then
Find(1);
즐거운 하루되세요
> ksks 님이 쓴 글입니다.
> 제목 : 93476관련입니다
> 93476번에서 드린 질문이
(하이킨아시 일봉이 일목균형표 26일기준선을 돌파하면서 RSI(20)이 50선을 돌파하는
종목 검색식을 만들려는데 도움부탁드립니다)
이고, 그 답은 아래 첨부와 같읍니다. 일봉에서 잘 만족스럽게 검색이 됩니다.
이것은 0봉전으로 되어 있는데, 이것을 30분 분봉에서 검색하기 위해
1봉전에 "26기준선돌파+rsi(20)이 50돌파+1봉전 ~ 5봉전 rsi(20)은 49.9"이하
로 수정하고 싶습니다.
================ 첨 부 ==================================================
input : P(20);
var : xClose(0),xOpen(0),xHigh(0),xLow(0);
var : 기준선(0),R(0);
Var : Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0);
#Heiken Ashi 시고저종
if index == 0 then
{
xClose = (O+H+L+C)/4;
xOpen = open;
xHigh = MaxList( high, xOpen, xClose);
xLow = MinList( low, xOpen,xClose);
}
else
{
xClose = (O+H+L+C)/4;
xOpen = (xOpen [1] + xClose [1])/2 ;
xHigh = MaxList(High, xOpen, xClose) ;
xLow = MinList(Low, xOpen, xClose) ;
}
기준선 = (Highest(xHigh, 26) + Lowest(xLow, 26)) / 2;
If CurrentBar == 1 AND P > 0 Then Begin
UpSum = 0;
DownSum = 0;
For Counter = 0 To P - 1 Begin
UpAmt = xClose[Counter] - xClose[Counter+1];
If UpAmt >= 0 Then
DownAmt = 0;
Else Begin
DownAmt = -UpAmt;
UpAmt = 0;
End;
UpSum = UpSum + UpAmt;
DownSum = DownSum + DownAmt;
End;
UpAvg = UpSum / P;
DownAvg = DownSum / P;
End
Else
If CurrentBar > 1 AND P > 0 Then Begin
UpAmt = xClose[0] - xClose[1];
If UpAmt >= 0 Then
DownAmt = 0;
Else Begin
DownAmt = -UpAmt;
UpAmt = 0;
End;
UpAvg = (UpAvg[1] * (P - 1) + UpAmt) / P;
DownAvg = (DownAvg[1] * (P - 1) + DownAmt) / P;
End;
If UpAvg + DownAvg <> 0 Then
R = 100 * UpAvg / (UpAvg + DownAvg);
Else
R = 0;
if CrossUp(xClose,기준선) and CrossUp(R,50) Then
Find(1);