예스스탁
예스스탁 답변
2025-08-27 13:45:26
안녕하세요
예스스탁입니다.
올리신 수식은 슈퍼트렌드 수식의 일부인데
슈퍼트렌드 선을 상단에서 하단으로 변경되는 것은
종가가 슈퍼트렌드선을 돌파하는 것과 같습니다.
위 내용에 일목조건 추가해 드립니다.
input : period(10),multiplier(3);
var : src(0), AtrV(0),upperBand(0),lowerBand(0), prevLowerBand(0), prevUpperBand(0);
var : prevSuperTrend(0), direction(0),alpha(0),source(0),SuperTrend(C);
var : 기준선(0), 전환선(0),후행스팬(0),선행스팬1(0), 선행스팬2(0);
전환선 = (Highest(High, 9) + Lowest(Low, 9)) / 2;
기준선 = (Highest(High, 26) + Lowest(Low, 26)) / 2;
후행스팬 = C;
선행스팬1 = (전환선[25] + 기준선[25]) / 2 ;
선행스팬2 = (Highest(High, 52)[25] + Lowest(Low, 52)[25]) / 2;
if CurrentBar > 1 Then
{
src = (H+L)/2;
alpha = 1 / period ;
ATrV = IFf(IsNan(ATrV[1]) == true, ma(TrueRange,period) , alpha * TrueRange + (1 - alpha) * IFf(isnan(ATrV[1])==true,0,ATrV[1]));
upperBand = src + multiplier * AtrV;
lowerBand = src - multiplier * AtrV;
prevLowerBand = lowerBand[1];
prevUpperBand = upperBand[1];
if lowerBand > prevLowerBand or close[1] < prevLowerBand Then
lowerBand = lowerBand;
Else
lowerBand = prevLowerBand;
if upperBand < prevUpperBand or close[1] > prevUpperBand Then
upperBand = upperBand;
Else
upperBand = prevUpperBand;
if C > UpperBand Then
direction = 1;
if C < LowerBand Then
direction = -1;
if direction == 1 Then
SuperTrend = lowerband;
Else
SuperTrend = upperband;
if CrossUp(C,SuperTrend) and C > max(선행스팬1,선행스팬2) Then
Find(1);
}
즐거운 하루되세요
> 하이모리 님이 쓴 글입니다.
> 제목 : 검색식 부탁드려요 항상 감사합니다.
> 다음 수식은 음에서 양으로 바뀌는 종목을 찾으려고 만들었는데 일부 종목이 원래 양인 종목이 포함되서 나오는데 오류를 못찾겠습니다. 오류 수정 부탁드리겠습니다.
즉 전일까지는 상단선(음) 당일에 하단선(양)으로 변경되는 종목검색입니다.
추가로 당일에 양으로 바뀌는 선의 값이 일목 구름 상단에 있는 조건도 함께 부탁드립니다. 감사합니다.
Input : period(14), multiplier(3);
Var : src(0), alpha(0), source(0), AtrV(0),
upperBand(0), lowerBand(0), prevUpperBand(0), prevLowerBand(0),
prevRed(0);
If CurrentBar > 2 Then
{
// ── 지표식 동일: 지수 ATR
src = (H + L) / 2;
alpha = 1 / period;
source = Max(H - L, Max(Abs(H - C[1]), Abs(L - C[1])));
AtrV = alpha * source + (1 - alpha) * AtrV[1];
upperBand = src + multiplier * AtrV;
lowerBand = src - multiplier * AtrV;
prevUpperBand = upperBand[1];
prevLowerBand = lowerBand[1];
if (lowerBand > prevLowerBand) or (C[1] < prevLowerBand) then
lowerBand = lowerBand;
else
lowerBand = prevLowerBand;
if (upperBand < prevUpperBand) or (C[1] > prevUpperBand) then
upperBand = upperBand;
else
upperBand = prevUpperBand;
upperRaw[t-1] : upperRaw[t-2]
if (upperBand[1] < upperBand[2]) or (C[2] > upperBand[2]) then
prevRed = upperBand[1];
else
prevRed = upperBand[2];
if CrossUp(C, prevRed) Then
Find(1);
}