커뮤니티

연장선 좀 요청 드림니다.

프로필 이미지
요타
2025-11-23 10:33:24
47
글번호 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); #} } 즐거운 하루되세요