커뮤니티

지표문의

프로필 이미지
성공예견
2026-01-26 16:47:51
73
글번호 230094
답변완료

1.아래는 검색하다 찾은지표인데

plot1(superTrendValue,"ST", iff(trendDirection > 0 , red,green)); 이부분을

위의선 하고 반대선(뒤집힌선) 예컨데  red 선이 생기면  뒤집힌 green선

green선이 생기면 뒤집힌 red선  하나 만들어 주세요.

band처럼 상,하단선


input : atrMult(4.5);

input : atrlen(12);

input : rsmlen(3);

input : tplen(14);

var : i(0),sum(0),source(0);

var : alpha(0),atrValue1(0),upperLevel(0),lowerLevel(0);

var : previousLowerLevel(0),previousUpperLevel(0);

var : trendDirection(Nan),superTrendValue(Nan);

var : previousTrend(0);


if CurrentBar > 1 Then

{

      sum = 0;

      for i = 0 to rsmlen-1

      {

            sum = sum + c[i]*c[i];

      }

      source = sqrt(sum/rsmlen);

      

      alpha = 1 / atrlen ;

      atrValue1 =  IFf(IsNan(atrValue1[1]) == true, ma(TrueRange,atrlen) , alpha * TrueRange + (1 - alpha) * IFf(isnan(atrValue1[1])==true,0,atrValue1[1]));

      

      upperLevel = source + atrMult * atrValue1;

      lowerLevel = source - atrMult * atrValue1;


      previousLowerLevel = iff(isnan(lowerLevel[1])==true,0,lowerLevel[1]);

      previousUpperLevel = iff(isnan(upperLevel[1])==true,0,upperLevel[1]);

      // Ensure continuity of lower and upper bands

      lowerLevel = iff(lowerLevel > previousLowerLevel or source[1] < previousLowerLevel , lowerLevel , previousLowerLevel);

      upperLevel = iff(upperLevel < previousUpperLevel or source[1] > previousUpperLevel , upperLevel , previousUpperLevel);

      // Determine direction and SuperTrend


      previousTrend = superTrendValue[1];

      // Initialize direction

      if IsNan(atrValue1[1]) == true Then

          trendDirection = 1;

      else if previousTrend == previousUpperLevel Then

          trendDirection = iff(source > upperLevel , -1 , 1);

      else

          trendDirection = iff(source < lowerLevel , 1 , -1);


      // Set SuperTrend value based on direction

      superTrendValue = iff(trendDirection == -1 , lowerLevel , upperLevel);


}


plot1(superTrendValue,"ST", iff(trendDirection > 0 , red,green));

Plot2((C+O)/2,"bodyMiddle");


var : dist(0),chg(0),lvlCol(0);

var : tp1(0),tp2(0),tp3(0),tp4(0),tp5(0),tp6(0),tp7(0);

var : printedtp1(0),printedtp2(0),printedtp3(0),printedtp4(0),printedtp5(0),printedtp6(0),printedtp7(0);


dist = abs(close-superTrendValue);

lvlCol = iff(trendDirection > 0 , red , green);




var : key1(0);

var : key2(0);

var : key3(0);

var : key4(0);

var : key5(0);

var : key6(0);

var : key7(0);


if CrossUp(trendDirection, 0) or CrossDown(trendDirection, 0) Then

{

    //TL_Delete(keys);

    printedtp1 = 0;

    printedtp2 = 0;

    printedtp3 = 0;

    printedtp4 = 0;

    printedtp5 = 0;

    printedtp6 = 0;

    printedtp7 = 0;

    chg = abs(superTrendValue-superTrendValue[1]);

    tp1 = superTrendValue[1] + IFF(trendDirection > 0 , -chg , chg);

    tp2 = superTrendValue[1] + IFF(trendDirection > 0 , -chg * 2 , chg * 2);

    tp3 = superTrendValue[1] + IFF(trendDirection > 0 , -chg * 3 , chg * 3);

    tp4 = superTrendValue[1] + IFF(trendDirection > 0 , -chg * 4 , chg * 4);

    tp5 = superTrendValue[1] + IFF(trendDirection > 0 , -chg * 5 , chg * 5);

    tp6 = superTrendValue[1] + IFF(trendDirection > 0 , -chg * 6 , chg * 6);

    tp7 = superTrendValue[1] + IFF(trendDirection > 0 , -chg * 7 , chg * 7);

    key1 = TL_new(sdate[1],stime[1],tp1, sDate,sTime, tp1);

      TL_SetColor(Key1,lvlCol);

      TL_SetSize(Key1,2);

    printedtp1 = 1;

}

Else

      TL_SetEnd(key1,sDate,sTime,TP1);

      


var : u(0),d(0),alp(0),ur(0),dr(0),rs(0),R(0),tp(False);


u = max(dist - dist[1], 0);

d = max(dist[1] - dist, 0);


alp = 1/tplen;

ur = IFf(IsNan(ur[1]) == true, ma(u,tplen) , alp * u + (1 - alp) * IFf(isnan(ur[1])==true,0,ur[1]));

dr = IFf(IsNan(dr[1]) == true, ma(d,tplen) , alp * d + (1 - alp) * IFf(isnan(dr[1])==true,0,dr[1]));

rs = ur / dr;

R = 100 - 100 / (1 + rs);


tp = CrossDown(R, 60);


var : extreme(0);

var : extreme_tp1_dist(0);

var : extreme_tp2_dist(0);

var : extreme_tp3_dist(0);

var : extreme_tp4_dist(0);

var : extreme_tp5_dist(0);

var : extreme_tp6_dist(0);

var : extreme_tp7_dist(0);


extreme = iff(trendDirection > 0 , low , high);


extreme_tp1_dist = abs(extreme - tp1);

extreme_tp2_dist = abs(extreme - tp2);

extreme_tp3_dist = abs(extreme - tp3);

extreme_tp4_dist = abs(extreme - tp4);

extreme_tp5_dist = abs(extreme - tp5);

extreme_tp6_dist = abs(extreme - tp6);

extreme_tp7_dist = abs(extreme - tp7);




var : tx(0);


if tp and trendDirection > 0 Then

{

      tx = Text_New(sDate,sTime,L,"X");

      Text_SetStyle(tx,2,0);

      Text_SetColor(tx,Red);

      Text_SetSize(tx,20);

      Text_SetBold(tx,1);

}


if tp and trendDirection < 0 Then

{

      tx = Text_New(sDate,sTime,H,"X");

      Text_SetStyle(tx,2,1);

      Text_SetColor(tx,Green);

      Text_SetSize(tx,20);

      Text_SetBold(tx,1);

}


if printedtp2 == 0 and extreme_tp2_dist < extreme_tp1_dist Then

{

    key2 = TL_new(sdate[1],stime[1],tp2, sDate,sTime, tp2);

      TL_SetColor(Key2,lvlCol);

      TL_SetSize(Key2,2);

    printedtp2 = 1;

}

Else

{

      if printedtp2 == 1 Then

            TL_SetEnd(key2,sDate,sTime,TP2);

}


if printedtp3 == 0 and extreme_tp3_dist < extreme_tp2_dist Then

{

    key3 = TL_new(sdate[1],stime[1],tp3, sDate,sTime, tp3);

      TL_SetColor(Key3,lvlCol);

      TL_SetSize(Key3,2);

    printedtp3 = 1;

}

Else

{

      if printedtp3 == 1 Then

            TL_SetEnd(key3,sDate,sTime,TP3);

}




if printedtp4 == 0 and extreme_tp4_dist < extreme_tp3_dist Then

{

    key4 = TL_new(sdate[1],stime[1],tp4, sDate,sTime, tp4);

      TL_SetColor(Key4,lvlCol);

      TL_SetSize(Key4,2);

    printedtp4 = 1;

}

Else

{

      if printedtp4 == 1 Then

            TL_SetEnd(key4,sDate,sTime,TP4);

}




if printedtp5 == 0 and extreme_tp5_dist < extreme_tp4_dist Then

{

    key5 = TL_new(sdate[1],stime[1],tp5, sDate,sTime, tp5);

      TL_SetColor(Key5,lvlCol);

      TL_SetSize(Key5,2);

    printedtp5 = 1;

}

Else

{

      if printedtp5 == 1 Then

            TL_SetEnd(key5,sDate,sTime,TP5);

}



if printedtp6 == 0 and extreme_tp6_dist < extreme_tp5_dist Then

{

    key6 = TL_new(sdate[1],stime[1],tp6, sDate,sTime, tp6);

      TL_SetColor(Key6,lvlCol);

      TL_SetSize(Key6,2);

    printedtp6 = 1;

}

Else

{

      if printedtp6 == 1 Then

            TL_SetEnd(key6,sDate,sTime,TP6);

}




if printedtp7 == 0 and extreme_tp7_dist < extreme_tp6_dist Then

{

    key7 = TL_new(sdate[1],stime[1],tp7, sDate,sTime, tp7);

      TL_SetColor(Key7,lvlCol);

      TL_SetSize(Key7,2);

    printedtp7 = 1;

}

Else

{

      if printedtp7 == 1 Then

            TL_SetEnd(key7,sDate,sTime,TP7);

}

2.그럼 수고하세요


지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2026-01-27 16:42:42

안녕하세요 예스스탁입니다. 문의하신 내용은 식으로 작성이 어렵습니다. 도움을 드리지 못해 죄송합니다. 즐거운 하루되세요