커뮤니티

연장선 좀 요청 드림니다.

프로필 이미지
요타
2025-11-23 10:33:24
95
글번호 228327
답변완료



ㅇ 아래 수식 상기 그림 처럼 연장선 좀 요청 드림니다.


## 아래 수식


input:method(1);//1:"ADX",2:"Volatility"

input:len(10);

input:band_mult(1.8);

input:upper_col(Blue);

input:lower_col(Cyan);

input:pos_col(Blue);

input:neg_col(cyan);

input:showTP(true);

input:cooldown(20);

input:sl_mult(0.4);

input:showsl(true);

input:tp1_mult(0.5);

input:showtp1(true);

input:tp2_mult(1.0);

input:showtp2(false);

input:tp3_mult(2.0);

input:showtp3(false);

input:entry_col(blue);

input:sl_col(Red);

input:bullColor(Lime);

input:bearColor(Rgb(0,110,0));

input:adx_thresh(17);

input:adx_smooth(10);

input:vol_mult_std(0.8);

input:vol_mult_var(0.8);

input:vol_mult_atr(0.9);

var : A(0),isADX(False);

A = ADX(len);#adx_smooth

isADX = A < adx_thresh;

var : logret(0),std_now(0),std_avg(0),atr_now(0),atr_avg(0),var_now(0),var_avg(0);

var : isVolatility(False),methodDetected(False);

logret = log(close / close[1]);

std_now = std(logret, len);

std_avg = ma(std_now, len);

atr_now = atr(len);

atr_avg = ma(atr_now, len);

var_now = variance(logret, len,1);

var_avg = ma(var_now, len);

isVolatility = std_now < std_avg * vol_mult_std and var_now < var_avg * vol_mult_var and atr_now < atr_avg * vol_mult_atr;

methodDetected = (method == 1 and isADX) or (method == 2 and isVolatility);

var :rngfilt(close);

var :trendColor(nan);

var :rangeVisible(false);

var :prev_hi(nan);

var :prev_lo(nan);

var :rangeStartBar(Nan);

var :rangeBarsActive(0);

var :lastBreakoutBar(nan);

if methodDetected and rangeStartBar == False Then

rangeStartBar = index;

else if methodDetected == False Then

rangeStartBar = Nan;

if methodDetected Then

rangeVisible = true;

var : diff(0),r(0);

diff = abs(high - low[1]);

r = ma(2.618 * diff, 2000) * band_mult;

var : prev(0),hhj(0),llj(0);

prev = iff(isnan(rngfilt[1])==true,0,rngfilt[1]);

hhJ = prev + abs(close - prev) / r * r;

llJ = prev - abs(close - prev) / r * r;

//rngfilt := rangefilter(hhJ, llJ, prev)

var : hhBreak(False),hhTooClose(False),hhShift(0),llTooClose(False),llShift(0);

var : step1(0),hhAbove(False),llBelow(False),prev_rngfilt(0);

var : rngfilt_step_up(False),rngfilt_step_down(False);

hhBreak = close > prev;

hhTooClose = close - r < prev;

hhShift = close - r;

llTooClose = close + r > prev;

llShift = close + r;

step1 = iff(hhBreak , IFf(hhTooClose , prev , hhShift) , IFf(llTooClose , prev , llShift));

hhAbove = close >= prev + r;

llBelow = close <= prev - r;

rngfilt = iff(hhAbove , hhJ , IFf(llBelow , llJ , step1));

prev_rngfilt = iff(isnan(rngfilt[1])==true,0,rngfilt[1]);

rngfilt_step_up = rngfilt > prev_rngfilt;

rngfilt_step_down = rngfilt < prev_rngfilt;

var : hiband(0),loband(0);

var : up(False),down(False);

var : TrendFast(0),TrendMed(0),TrendLong(0);

#trendcomp(filt) => [filt, ta.sma(filt, 2), ta.sma(filt, 4)]

hiband = rngfilt+r;

loband = rngfilt-r;

up = rngfilt > prev_rngfilt;

down = rngfilt < prev_rngfilt;

TrendFast = rngfilt;

TrendMed = ma(rngfilt,2);

TrendLong = ma(rngfilt,4);

if methodDetected Then

{

prev_hi = hiband;

prev_lo = loband;

}

if methodDetected == False and (close[1] > prev_hi or close[1] < prev_lo) Then

rangeVisible = false;

var : MIDX1(0),MID1(0),MID2(0),MIDX2(0),MID3(0),MID4(0);

MIDX1 = (hiband - rngfilt) / 3;

MID1 = rngfilt + MIDX1;

MID2 = MID1 + MIDX1;

MIDX2 = (rngfilt - loband) / 3;

MID3 = rngfilt - MIDX2;

MID4 = MID3 - MIDX2;

trendColor = iff(up , pos_col ,IFf( down , neg_col , trendColor[1]));

//

//if rangeVisible == true Then

//{

// plot1(TrendFast, "Trend", trendColor);

// plot2(MID1, "MID1", upper_col);

// plot3(MID2, "MID2", upper_col);

// plot4(MID3, "MID3", lower_col);

// plot5(MID4, "MID4", lower_col);

//}

//Else

//{

// NoPlot(1);

// NoPlot(2);

// NoPlot(3);

// NoPlot(4);

// NoPlot(5);

//}

var : canTriggerBreakout(False),enterLong(False),enterShort(False);

rangeBarsActive = iff(rangeStartBar, 0 , index - rangeStartBar);

canTriggerBreakout = lastBreakoutBar or index - lastBreakoutBar >= cooldown;

enterLong = rangeVisible and rngfilt_step_up and canTriggerBreakout;

enterShort = rangeVisible and rngfilt_step_down and canTriggerBreakout;

var : base(0),offset(0),tp1off(0),tp2off(0),tp3off(0);

var : s(0),t1_(0),t2_(0),t3_(0);

base = rngfilt;

offset = r * sl_mult;

tp1off = r * tp1_mult;

tp2off = r * tp2_mult;

tp3off = r * tp3_mult;

var : sl(0),tp1(0),tp2(0),tp3(0),CC(0);

var : TL1(0),TL2(0),TL3(0),TL4(0),TL5(0);

if enterLong and showTP /*and (lastBreakoutBar == False or index - lastBreakoutBar >= cooldown)*/ Then

{

TL_New(sDate,stime,0,sDate,sTime,999999999);

s = base - offset;

t1_ = base + tp1off;

t2_ = base + tp2off;

t3_ = base + tp3off;

CC = close;

SL = s;

TP1 = t1_;

TP2 = t2_;

TP3 = t3_;

TL1 = TL_New(sDate,sTime,CC,NextBarSdate,NextBarStime,CC);

if showsl == true Then

TL2 = TL_New(sDate,sTime,SL,NextBarSdate,NextBarStime,SL);

if showtp1 == true Then

TL3 = TL_New(sDate,sTime,TP1,NextBarSdate,NextBarStime,TP1);

if showtp2 == true Then

TL4 = TL_New(sDate,sTime,TP2,NextBarSdate,NextBarStime,TP2);

if showtp3 == true Then

TL5 = TL_New(sDate,sTime,TP3,NextBarSdate,NextBarStime,TP3);

TL_SetColor(TL1,entry_col);

TL_SetColor(TL2,sl_col);

TL_SetColor(TL3,bullColor);

TL_SetColor(TL4,bullColor);

TL_SetColor(TL5,bullColor);

TL_SetSize(TL1,5);

TL_SetSize(TL2,5);

TL_SetSize(TL3,5);

TL_SetSize(TL4,5);

TL_SetSize(TL5,5);

lastBreakoutBar = index;

}

Else

{

if Index < lastBreakoutBar+20 Then

{

TL_SetEnd(TL1,NextBarSdate,NextBarStime,CC);

TL_SetEnd(TL2,NextBarSdate,NextBarStime,SL);

TL_SetEnd(TL3,NextBarSdate,NextBarStime,TP1);

TL_SetEnd(TL4,NextBarSdate,NextBarStime,TP2);

TL_SetEnd(TL5,NextBarSdate,NextBarStime,TP3);

}

}

if enterShort and showTP and (lastBreakoutBar == False or index - lastBreakoutBar >= cooldown) Then

{

TL_New(sDate,stime,0,sDate,sTime,999999999);

s = base + offset;

t1_ = base - tp1off;

t2_ = base - tp2off;

t3_ = base - tp3off;

CC = close;

SL = s;

TP1 = t1_;

TP2 = t2_;

TP3 = t3_;

TL1 = TL_New(sDate,sTime,CC,NextBarSdate,NextBarStime,CC);

if showsl == true Then

TL2 = TL_New(sDate,sTime,SL,NextBarSdate,NextBarStime,SL);

if showtp1 == true Then

TL3 = TL_New(sDate,sTime,TP1,NextBarSdate,NextBarStime,TP1);

if showtp2 == true Then

TL4 = TL_New(sDate,sTime,TP2,NextBarSdate,NextBarStime,TP2);

if showtp3 == true Then

TL5 = TL_New(sDate,sTime,TP3,NextBarSdate,NextBarStime,TP3);

TL_SetColor(TL1,entry_col);

TL_SetColor(TL2,sl_col);

TL_SetColor(TL3,bearColor);

TL_SetColor(TL4,bearColor);

TL_SetColor(TL5,bearColor);

TL_SetSize(TL1,5);

TL_SetSize(TL2,5);

TL_SetSize(TL3,5);

TL_SetSize(TL4,5);

TL_SetSize(TL5,5);

lastBreakoutBar = index;

}





매번 고맙습니다.

























지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-11-24 13:21:14

안녕하세요 예스스탁입니다. input:method(1);//1:"ADX",2:"Volatility" input:len(10); input:band_mult(1.8); input:upper_col(Blue); input:lower_col(Cyan); input:pos_col(Blue); input:neg_col(cyan); input:showTP(true); input:cooldown(20); input:sl_mult(0.4); input:showsl(true); input:tp1_mult(0.5); input:showtp1(true); input:tp2_mult(1.0); input:showtp2(false); input:tp3_mult(2.0); input:showtp3(false); input:entry_col(blue); input:sl_col(Red); input:bullColor(Lime); input:bearColor(Rgb(0,110,0)); input:adx_thresh(17); input:adx_smooth(10); input:vol_mult_std(0.8); input:vol_mult_var(0.8); input:vol_mult_atr(0.9); var : A(0),isADX(False); A = ADX(len);#adx_smooth isADX = A < adx_thresh; var : logret(0),std_now(0),std_avg(0),atr_now(0),atr_avg(0),var_now(0),var_avg(0); var : isVolatility(False),methodDetected(False); logret = log(close / close[1]); std_now = std(logret, len); std_avg = ma(std_now, len); atr_now = atr(len); atr_avg = ma(atr_now, len); var_now = variance(logret, len,1); var_avg = ma(var_now, len); isVolatility = std_now < std_avg * vol_mult_std and var_now < var_avg * vol_mult_var and atr_now < atr_avg * vol_mult_atr; methodDetected = (method == 1 and isADX) or (method == 2 and isVolatility); var :rngfilt(close); var :trendColor(nan); var :rangeVisible(false); var :prev_hi(nan); var :prev_lo(nan); var :rangeStartBar(Nan); var :rangeBarsActive(0); var :lastBreakoutBar(nan); if methodDetected and rangeStartBar == False Then rangeStartBar = index; else if methodDetected == False Then rangeStartBar = Nan; if methodDetected Then rangeVisible = true; var : diff(0),r(0); diff = abs(high - low[1]); r = ma(2.618 * diff, 2000) * band_mult; var : prev(0),hhj(0),llj(0); prev = iff(isnan(rngfilt[1])==true,0,rngfilt[1]); hhJ = prev + abs(close - prev) / r * r; llJ = prev - abs(close - prev) / r * r; //rngfilt := rangefilter(hhJ, llJ, prev) var : hhBreak(False),hhTooClose(False),hhShift(0),llTooClose(False),llShift(0); var : step1(0),hhAbove(False),llBelow(False),prev_rngfilt(0); var : rngfilt_step_up(False),rngfilt_step_down(False); hhBreak = close > prev; hhTooClose = close - r < prev; hhShift = close - r; llTooClose = close + r > prev; llShift = close + r; step1 = iff(hhBreak , IFf(hhTooClose , prev , hhShift) , IFf(llTooClose , prev , llShift)); hhAbove = close >= prev + r; llBelow = close <= prev - r; rngfilt = iff(hhAbove , hhJ , IFf(llBelow , llJ , step1)); prev_rngfilt = iff(isnan(rngfilt[1])==true,0,rngfilt[1]); rngfilt_step_up = rngfilt > prev_rngfilt; rngfilt_step_down = rngfilt < prev_rngfilt; var : hiband(0),loband(0); var : up(False),down(False); var : TrendFast(0),TrendMed(0),TrendLong(0); #trendcomp(filt) => [filt, ta.sma(filt, 2), ta.sma(filt, 4)] hiband = rngfilt+r; loband = rngfilt-r; up = rngfilt > prev_rngfilt; down = rngfilt < prev_rngfilt; TrendFast = rngfilt; TrendMed = ma(rngfilt,2); TrendLong = ma(rngfilt,4); if methodDetected Then { prev_hi = hiband; prev_lo = loband; } if methodDetected == False and (close[1] > prev_hi or close[1] < prev_lo) Then rangeVisible = false; var : MIDX1(0),MID1(0),MID2(0),MIDX2(0),MID3(0),MID4(0); MIDX1 = (hiband - rngfilt) / 3; MID1 = rngfilt + MIDX1; MID2 = MID1 + MIDX1; MIDX2 = (rngfilt - loband) / 3; MID3 = rngfilt - MIDX2; MID4 = MID3 - MIDX2; trendColor = iff(up , pos_col ,IFf( down , neg_col , trendColor[1])); // //if rangeVisible == true Then //{ // plot1(TrendFast, "Trend", trendColor); // plot2(MID1, "MID1", upper_col); // plot3(MID2, "MID2", upper_col); // plot4(MID3, "MID3", lower_col); // plot5(MID4, "MID4", lower_col); //} //Else //{ // NoPlot(1); // NoPlot(2); // NoPlot(3); // NoPlot(4); // NoPlot(5); //} var : canTriggerBreakout(False),enterLong(False),enterShort(False); rangeBarsActive = iff(rangeStartBar, 0 , index - rangeStartBar); canTriggerBreakout = lastBreakoutBar or index - lastBreakoutBar >= cooldown; enterLong = rangeVisible and rngfilt_step_up and canTriggerBreakout; enterShort = rangeVisible and rngfilt_step_down and canTriggerBreakout; var : base(0),offset(0),tp1off(0),tp2off(0),tp3off(0); var : s(0),t1_(0),t2_(0),t3_(0); base = rngfilt; offset = r * sl_mult; tp1off = r * tp1_mult; tp2off = r * tp2_mult; tp3off = r * tp3_mult; var : sl(0),tp1(0),tp2(0),tp3(0),CC(0); var : TL1(0),TL2(0),TL3(0),TL4(0),TL5(0); if enterLong and showTP /*and (lastBreakoutBar == False or index - lastBreakoutBar >= cooldown)*/ Then { TL_New(sDate,stime,0,sDate,sTime,999999999); s = base - offset; t1_ = base + tp1off; t2_ = base + tp2off; t3_ = base + tp3off; CC = close; SL = s; TP1 = t1_; TP2 = t2_; TP3 = t3_; TL1 = TL_New(sDate,sTime,CC,NextBarSdate,NextBarStime,CC); if showsl == true Then TL2 = TL_New(sDate,sTime,SL,NextBarSdate,NextBarStime,SL); if showtp1 == true Then TL3 = TL_New(sDate,sTime,TP1,NextBarSdate,NextBarStime,TP1); if showtp2 == true Then TL4 = TL_New(sDate,sTime,TP2,NextBarSdate,NextBarStime,TP2); if showtp3 == true Then TL5 = TL_New(sDate,sTime,TP3,NextBarSdate,NextBarStime,TP3); TL_SetColor(TL1,entry_col); TL_SetColor(TL2,sl_col); TL_SetColor(TL3,bullColor); TL_SetColor(TL4,bullColor); TL_SetColor(TL5,bullColor); TL_SetSize(TL1,5); TL_SetSize(TL2,5); TL_SetSize(TL3,5); TL_SetSize(TL4,5); TL_SetSize(TL5,5); lastBreakoutBar = index; } else if enterShort and showTP and (lastBreakoutBar == False or index - lastBreakoutBar >= cooldown) Then { TL_New(sDate,stime,0,sDate,sTime,999999999); s = base + offset; t1_ = base - tp1off; t2_ = base - tp2off; t3_ = base - tp3off; CC = close; SL = s; TP1 = t1_; TP2 = t2_; TP3 = t3_; TL1 = TL_New(sDate,sTime,CC,NextBarSdate,NextBarStime,CC); if showsl == true Then TL2 = TL_New(sDate,sTime,SL,NextBarSdate,NextBarStime,SL); if showtp1 == true Then TL3 = TL_New(sDate,sTime,TP1,NextBarSdate,NextBarStime,TP1); if showtp2 == true Then TL4 = TL_New(sDate,sTime,TP2,NextBarSdate,NextBarStime,TP2); if showtp3 == true Then TL5 = TL_New(sDate,sTime,TP3,NextBarSdate,NextBarStime,TP3); TL_SetColor(TL1,entry_col); TL_SetColor(TL2,sl_col); TL_SetColor(TL3,bearColor); TL_SetColor(TL4,bearColor); TL_SetColor(TL5,bearColor); TL_SetSize(TL1,5); TL_SetSize(TL2,5); TL_SetSize(TL3,5); TL_SetSize(TL4,5); TL_SetSize(TL5,5); lastBreakoutBar = index; } Else { #if Index < lastBreakoutBar+20 Then #{ TL_SetEnd(TL1,NextBarSdate,NextBarStime,CC); TL_SetEnd(TL2,NextBarSdate,NextBarStime,SL); TL_SetEnd(TL3,NextBarSdate,NextBarStime,TP1); TL_SetEnd(TL4,NextBarSdate,NextBarStime,TP2); TL_SetEnd(TL5,NextBarSdate,NextBarStime,TP3); #} } 즐거운 하루되세요