답변완료
연장선 좀 요청 드림니다.
ㅇ 아래 수식 상기 그림 처럼 연장선 좀 요청 드림니다.## 아래 수식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_smoothisADX = 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;}매번 고맙습니다.
답변완료
글번호 228232 문의입니다
안녕하세요 .답변 2번 을 시스템(전략)으로 만들어 주시면 감사하겠습니다. 아래 -- shortSignal 의 정의가 있어야 될것 같긴한대데요.....2input : emaFastLen(8);input : emaSlowLen(21);input : atrPeriod(7);input : atrMult(1.8);input : squeezeLen(20);input : showVWAP(true);var : Emafast(0),Emaslow(0),Golden(False),death(False);var : src(0), alpha(0),ATRV(0),upperBand(0),lowerBand(0),direction(0),SuperTrend(C);emaFast = ema(close, emaFastLen);emaSlow = ema(close, emaSlowLen);golden = CrossUp(emaFast, emaSlow);death = CrossDown(emaFast, emaSlow);if CurrentBar > 1 Then { src = (H+L)/2; alpha = 1 / atrperiod ; ATRV = IFf(IsNan(ATRV[1]) == true, ma(TrueRange,atrperiod) , alpha * TrueRange + (1 - alpha) * IFf(isnan(ATRV[1])==true,0,ATRV[1])); upperBand = src + atrMult * AtrV; lowerBand = src - atrMult * AtrV; if lowerBand > lowerBand[1] or close[1] < lowerBand[1] Then lowerBand = lowerBand; Else lowerBand = lowerBand[1]; if upperBand < upperBand[1] or close[1] > upperBand[1] Then upperBand = upperBand; Else upperBand = upperBand[1]; if C > UpperBand Then direction = 1; if C < LowerBand Then direction = -1; if direction == 1 Then SuperTrend = lowerband; Else SuperTrend = upperband;}var : basis_sqz(0),dev_sqz(0),kcUpper(0),kcLower(0);var : squeezeOn(False),squeezeOff(False),mom(0),momCol(0),volSurge(False);basis_sqz = ma(close, squeezeLen);dev_sqz = std(close, squeezeLen);kcUpper = basis_sqz + 1.5 * dev_sqz;kcLower = basis_sqz - 1.5 * dev_sqz;squeezeOn = (kcLower > supertrend) or (kcUpper < supertrend);squeezeOff = squeezeOn == False;mom = close - (basis_sqz + kcUpper + kcLower) / 2;momCol = iff(mom > 0 , IFF(mom > mom[1], lime , green) , IFf(mom < mom[1], red , maroon));volSurge = volume > ma(volume, 20) * 2;var : hlc3(0),sum1(0),sum2(0),aboveVWAP(False),vwapVal(0),longSignal(False);hlc3 = (h+l+c)/3;if Bdate != Bdate[1] Then{ sum1 = 0; sum2 = 0;} sum1 = sum1 + (hlc3*v);sum2 = sum2 + v;vwapVal = sum1/sum2;aboveVWAP = close > vwapVal;longSignal = golden and direction < 0 and squeezeOff and volSurge and aboveVWAP;if longSignal == true Then Find(1);
답변완료
부탁합니다
아래수식에서 상하밴드의 중간선이 나올수있게 부탁합니다.(중간선의 색상을 상승하락으로 구분할수 있게 부탁합니다) 또하나 가상선의 선굵기를 속성에서 변경헐수 있도록 부탁합니다.* 글을 수정하니 칸바뀜없이 이상하게 되어버립니다. input : len(88),mult(2.0);input : cu(cyan),cl(cyan);input : dashed(false);input : transp(true);var : src(0),crr(0),k(0),sum(0),i(0),dev(0);var : nmid(0),nupper(0),nlower(0);var : upper(0),lower(0);Array : dizii[500](0);src = (h+l+c)/3;Function cr Numeric input : x(Numeric),y(Numeric); var : z(0),weight(0),i(0); z = 0.0; weight = 0.0; for i = 0 to y - 1 step 1 { z = z + x[i] * ((y - 1) / 2 + 1 -abs(i - (y - 1) / 2)); } cr = z / ((y + 1) / 2 * (y + 1) / 2);EndFunctioncrr = cr(src, 2 * len - 1);for k = 0 to len - 1 step 1{ sum = 0.0; for i = 0 to 2 * len - 2 - k step 1 { sum = sum + (len - abs(len - 1 - k - i)) * src[i] / (len * len - k * (k + 1) / 2); } dizii[k] = sum;}dev = mult * std(src, len);nmid = wma(src, len);nupper = nmid + wma(dev,len);nlower = nmid - wma(dev,len);upper = crr + cr(dev, 2 * len - 1);lower = crr - cr(dev, 2 * len - 1);plot1(lower,"lowr",cl);plot2(upper,"upper",cu);FixPlotShift(1,1 - len);FixPlotShift(2,1 - len);var : d(0),tra(0);d = iff(dashed , 2 , 1);tra = iff(transp , 1 , 0);Array : diz[500](0),lin[500](0),diz2[500](0),lin2[500](0);var : dv(0);if index > len Then{ For i = 0 to 499 { TL_Delete(lin[i]); TL_Delete(lin2[i]); } for k = 0 to len - 1 step 1 { sum = 0.0; dv = 0.0; for i = 0 to 2 * len - 2 - k step 1 { sum = sum + (len - abs(len - 1 - k - i)) * src[i] / (len * len - k * (k + 1) / 2); dv = dv + (len - abs(len - 1 - k - i)) * dev[i] / (len * len - k * (k + 1) / 2); } diz[k] = sum + dv; diz2[k] = sum - dv; } for i = 0 to len / d - 2 step 1 { var1 = index + i * d + 1 - len; var2 = index + i * d + 2 - len; lin[i] = TL_new(sDate[Index-var1],sTime[Index-var1],diz[i*d],sDate[Index-var2],sTime[Index-var2],diz[i * d + 1]); TL_SetColor(lin[i],cu); var3 = index + i * d + 1 - len; var4 = index + i * d + 2 - len; lin2[i] = TL_new(sDate[Index-var3],sTime[Index-var3],diz2[i*d],sDate[Index-var4],sTime[Index-var4],diz2[i * d + 1]); TL_SetColor(lin2[i],cl); }}