커뮤니티
연장선 좀 요청 드림니다.

ㅇ 아래 수식 상기 그림 처럼 연장선 좀 요청 드림니다.
## 아래 수식
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