이 전략은 비교적 안정적인 추적 시스템을 설계하기 위해 평균 이중 필터링과 다단계 트렌드 방향 확인 메커니즘을 사용합니다.
주요 트렌드 방향을 결정하기 위해 개선된 이중 피크 오시레이터에 기반한 최적화된 트렌드 추적 시스템
여러 주기의 이동 평균의 조합에 기반한 하위 트렌드 필터링 시스템으로 소음을 추가로 필터링합니다.
알파 인덱스는 거래 신호의 신뢰성을 보장하기 위해 최종 확인을 제공합니다.
위에서 설명한 세 가지 보호로 전략은 주요 트렌드를 더 정확하게 판단하고 단기 시장 소음을 매우 효과적으로 필터링 할 수 있습니다.
트렌드 지향을 계산하기 위해 개선된 이중 피크 오시일레이터 TOTT와 클로즈 시리즈 이중 트렌드 필터를 사용합니다. TOTT 자체는 소음에 대한 매우 강력한 필터링 기능을 가지고 있습니다. 클로즈 시리즈는 추가 수준의 확인을 제공합니다. 둘의 조합은 주요 트렌드를 매우 정확하게 결정할 수 있습니다.
주요 트렌드 판단 시스템 외에도 전략은 여러 주기의 EMA 조합에 기반한 하위 트렌드 필터링 시스템을 설정합니다. EMA 라인의 골든 크로스 및 데드 크로스 확인 수준에 따라 주요 트렌드 방향에 대한 판단의 신뢰성이 더욱 향상되고 더 많은 소음이 필터됩니다.
포지션 입출시, 전략은 또한 최종 거래 신호의 신뢰성을 보장하기 위해 알파 인덱스의 값을 검사합니다. 알파는 시장의 구매 및 판매 힘을 반영하고 좋은 확인 지표입니다.
위험을 완화하기 위해 매개 변수를 조정하여 추적기 민감도를 최적화하거나 최종 필터로 더 많은 역전 지표를 추가 할 수 있습니다.
이 전략의 전반적인 설계는 적절한 조치와 여러 보호 장치로 견고하다. 강력한 노이즈 필터링은 안정적인 성능을 제공합니다. 지속적인 매개 변수 최적화 및 메커니즘 향상으로 추가 개선이 가능합니다.
/*backtest start: 2023-02-20 00:00:00 end: 2024-02-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © KivancOzbilgic strategy('TOTT-OCC R5.1 wixca-buy-sell', 'TOTT', overlay=true) src = input(close, title='Source') length = input.int(18, 'OTT Period', minval=1) percent = input.float(1, 'Optimization Constant', step=0.1, minval=0) coeff1 = input.float(0.001, 'Twin OTT Coefficient', step=0.001, minval=0) showsupport = input(title='Show Support Line?', defval=true) showsignalsk1 = input(title='Show Signals?', defval=true) mav = input.string(title='Moving Average Type', defval='EMA', options=['SMA', 'EMA', 'WMA', 'TMA', 'VAR', 'WWMA', 'ZLEMA', 'TSF']) highlighting = input(title='Highlighter On/Off ?', defval=true) Var_Func(src, length) => valpha = 2 / (length + 1) vud1 = src > src[1] ? src - src[1] : 0 vdd1 = src < src[1] ? src[1] - src : 0 vUD = math.sum(vud1, 9) vDD = math.sum(vdd1, 9) vCMO = nz((vUD - vDD) / (vUD + vDD)) VAR = 0.0 VAR := nz(valpha * math.abs(vCMO) * src) + (1 - valpha * math.abs(vCMO)) * nz(VAR[1]) VAR VAR = Var_Func(src, length) Wwma_Func(src, length) => wwalpha = 1 / length WWMA = 0.0 WWMA := wwalpha * src + (1 - wwalpha) * nz(WWMA[1]) WWMA WWMA = Wwma_Func(src, length) Zlema_Func(src, length) => zxLag = length / 2 == math.round(length / 2) ? length / 2 : (length - 1) / 2 zxEMAData = src + src - src[zxLag] ZLEMA = ta.ema(zxEMAData, length) ZLEMA ZLEMA = Zlema_Func(src, length) Tsf_Func(src, length) => lrc = ta.linreg(src, length, 0) lrc1 = ta.linreg(src, length, 1) lrs = lrc - lrc1 TSF = ta.linreg(src, length, 0) + lrs TSF TSF = Tsf_Func(src, length) getMA(src, length) => ma = 0.0 if mav == 'SMA' ma := ta.sma(src, length) ma if mav == 'EMA' ma := ta.ema(src, length) ma if mav == 'WMA' ma := ta.wma(src, length) ma if mav == 'TMA' ma := ta.sma(ta.sma(src, math.ceil(length / 2)), math.floor(length / 2) + 1) ma if mav == 'VAR' ma := VAR ma if mav == 'WWMA' ma := WWMA ma if mav == 'ZLEMA' ma := ZLEMA ma if mav == 'TSF' ma := TSF ma ma MAvg = getMA(src, length) fark = MAvg * percent * 0.01 longStop = MAvg - fark longStopPrev = nz(longStop[1], longStop) longStop := MAvg > longStopPrev ? math.max(longStop, longStopPrev) : longStop shortStop = MAvg + fark shortStopPrev = nz(shortStop[1], shortStop) shortStop := MAvg < shortStopPrev ? math.min(shortStop, shortStopPrev) : shortStop dir = 1 dir := nz(dir[1], dir) dir := dir == -1 and MAvg > shortStopPrev ? 1 : dir == 1 and MAvg < longStopPrev ? -1 : dir MT = dir == 1 ? longStop : shortStop OTT = MAvg > MT ? MT * (200 + percent) / 200 : MT * (200 - percent) / 200 OTTup = OTT * (1 + coeff1) OTTdn = OTT * (1 - coeff1) PPLOT = plot(showsupport ? MAvg : na, color=color.new(#0585E1, 0), linewidth=2, title='Support Line') pALLup = plot(nz(OTTup[2]), color=color.new(color.green, 0), linewidth=2, title='OTTup') pALLdn = plot(nz(OTTdn[2]), color=color.new(color.red, 0), linewidth=2, title='OTTdown') buySignalk1 = ta.crossover(MAvg, OTTup[2]) sellSignalk1 = ta.crossunder(MAvg, OTTdn[2]) K11 = ta.barssince(buySignalk1) K22 = ta.barssince(sellSignalk1) O11 = ta.barssince(buySignalk1[1]) O22 = ta.barssince(sellSignalk1[1]) //plotshape(buySignalk1 and showsignalsk1 and O11 > K22 ? math.min(low, OTTdn) : na, title='Buy', text='Buy', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(color.green, 0), textcolor=color.new(color.white, 0)) //plotshape(sellSignalk1 and showsignalsk1 and O22 > K11 ? math.max(high, OTTup) : na, title='Sell', text='Sell', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.red, 0), textcolor=color.new(color.white, 0)) mPlot = plot(ohlc4, title='', style=plot.style_circles, linewidth=0, display=display.none) //longFillColor = highlighting ? O22 > K11 ? color.green : na : na //shortFillColor = highlighting ? O11 > K22 ? color.red : na : na //fill(mPlot, PPLOT, title='UpTrend Highligter', color=longFillColor, transp=90) //fill(mPlot, PPLOT, title='DownTrend Highligter', color=shortFillColor, transp=90) fill(pALLup, pALLdn, title='Flat Zone Highligter', color=color.new(#e0e2e9, 12)) //plotshape(ta.crossover (AlphaTrend,OTTup), style=shape.labelup, location=location.belowbar, color=color.new(color.blue, 0), size=size.tiny, title='AT>OTT', text='AL1', textcolor=color.white) //plotshape(ta.crossunder(AlphaTrend,OTTdn), style=shape.labeldown, location=location.abovebar, color=color.new(color.red, 0), size=size.tiny, title='OTT<AT', text='SAT1', textcolor=color.white) // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ //© vixca //@version=5 //indicator('L&S', overlay=true) //pyramiding=1, initial_capital=1000,default_qty_type = strategy.cash, calc_on_order_fills=false,default_qty_value = 1000, commission_type=strategy.commission.percent, commission_value=0.2,calc_on_every_tick=true) //strategy('Twin Optimized Trend Tracker', 'TOTT', overlay=true) src2 = input(close, title='Source') length2 = input.int(69, 'OTT Period', minval=1) percent2 = input.float(1, 'Optimization Constant', step=0.1, minval=0) coeff2 = input.float(0.001, 'Twin OTT Coefficient', step=0.001, minval=0) showsupport2 = input(title='Show Support Line?', defval=true) showsignalsk2 = input(title='Show Signals?', defval=true) mav2 = input.string(title='Moving Average Type', defval='VAR2', options=['SMA', 'EMA', 'WMA', 'TMA', 'VAR2', 'WWMA', 'ZLEMA2', 'TSF2']) highlighting2 = input(title='Highlighter On/Off ?', defval=true) Var_Func2(src2, length2) => valpha = 2 / (length2 + 1) vud1 = src2 > src2[1] ? src2 - src2[1] : 0 vdd1 = src2 < src2[1] ? src2[1] - src2 : 0 vUD = math.sum(vud1, 9) vDD = math.sum(vdd1, 9) vCMO = nz((vUD - vDD) / (vUD + vDD)) VAR2 = 0.0 VAR2 := nz(valpha * math.abs(vCMO) * src2) + (1 - valpha * math.abs(vCMO)) * nz(VAR2[1]) VAR2 VAR2 = Var_Func2(src2, length2) Wwma_Func2(src2, length) => wwalpha = 1 / length2 WWMA2 = 0.0 WWMA2 := wwalpha * src2 + (1 - wwalpha) * nz(WWMA2[1]) WWMA2 WWMA2 = Wwma_Func2(src2, length2) Zlema_Func2(src2, length) => zxLag = length2 / 2 == math.round(length2 / 2) ? length2 / 2 : (length2 - 1) / 2 zxEMAData = src2 + src2 - src2[zxLag] ZLEMA2 = ta.ema(zxEMAData, length2) ZLEMA2 ZLEMA2 = Zlema_Func2(src2, length2) Tsf_Func2(src2, length2) => lrc = ta.linreg(src2, length2, 0) lrc1 = ta.linreg(src2, length2, 1) lrs = lrc - lrc1 TSF2 = ta.linreg(src2, length2, 0) + lrs TSF2 TSF2 = Tsf_Func2(src2, length2) getMA2(src2, length2) => ma = 0.0 if mav2 == 'SMA' ma := ta.sma(src2, length2) ma if mav2 == 'EMA' ma := ta.ema(src2, length2) ma if mav2 == 'WMA' ma := ta.wma(src2, length2) ma if mav2 == 'TMA' ma := ta.sma(ta.sma(src2, math.ceil(length2 / 2)), math.floor(length2 / 2) + 1) ma if mav2 == 'VAR2' ma := VAR2 ma if mav2 == 'WWMA2' ma := WWMA2 ma if mav2 == 'ZLEMA2' ma := ZLEMA2 ma if mav2 == 'TSF2' ma := TSF2 ma ma mav2g = getMA2(src2, length2) fark2 = mav2g * percent2 * 0.01 longStop2 = mav2g - fark2 longStop2Prev = nz(longStop2[1], longStop2) longStop2 := mav2g > longStop2Prev ? math.max(longStop2, longStop2Prev) : longStop2 shortStop2 = mav2g + fark2 shortStop2Prev = nz(shortStop2[1], shortStop2) shortStop2 := mav2g < shortStop2Prev ? math.min(shortStop2, shortStop2Prev) : shortStop2 dir2 = 1 dir2 := nz(dir2[1], dir2) dir2 := dir2 == -1 and mav2g > shortStop2Prev ? 1 : dir2 == 1 and mav2g < longStop2Prev ? -1 : dir2 MT2 = dir2 == 1 ? longStop2 : shortStop2 OTT2 = mav2g > MT2 ? MT2 * (200 + percent2) / 200 : MT * (200 - percent) / 200 OTT2up = OTT2 * (1 + coeff2) OTT2dn = OTT2 * (1 - coeff2) PPLOT2 = plot(showsupport2 ? mav2g : na, color=color.new(#0585E1, 0), linewidth=2, title='Support Line') pALLup2 = plot(nz(OTT2up[2]), color=color.new(color.green, 0), linewidth=2, title='OTT2up') pALLdn2 = plot(nz(OTT2dn[2]), color=color.new(color.red, 0), linewidth=2, title='OTT2down') buySignalk2 = ta.crossover(mav2g, OTT2up[2]) sellSignalk2 = ta.crossunder(mav2g, OTT2dn[2]) K111 = ta.barssince(buySignalk2) K222 = ta.barssince(sellSignalk2) O111 = ta.barssince(buySignalk2[1]) O222 = ta.barssince(sellSignalk2[1]) //plotshape(buySignalk2 and showsignalsk2 and O111 > K222 ? math.min(low, OTT2dn) : na, title='Buy2', text='Buy2', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(color.green, 0), textcolor=color.new(color.white, 0)) //plotshape(sellSignalk2 and showsignalsk2 and O222 > K111 ? math.max(high, OTT2up) : na, title='Sell2', text='Sell2', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.red, 0), textcolor=color.new(color.white, 0)) mPlot2 = plot(ohlc4, title='', style=plot.style_circles, linewidth=0, display=display.none) longFillColor2 = highlighting2 ? O222 > K111 ? color.green : na : na shortFillColor2 = highlighting2 ? O111 > K222 ? color.red : na : na //fill(mPlot2, PPLOT2, title='UpTrend Highligter', color=longFillColor2, transp=90) //fill(mPlot2, PPLOT2, title='DownTrend Highligter', color=shortFillColor2, transp=90) fill(pALLup2, pALLdn2, title='Flat Zone Highligter', color=color.new(#9d7fce, 33)) //ema kesişimi yapmak için ekledim //wma34 = ta.wma(close, 34) //ema1 = ta.ema(close, 900) src4 = input(title='Source', defval=close) //length3 = input(34, 'wma') //lenght4 = input(1000, "ema") //plot(ta.wma(src4, length3), color=color.new(#dbbce0, 0), linewidth=3, title='wma34') //plot(ta.ema(src4, lenght4), color=color.new(#080c05, 0), linewidth=3, title='ema1') //plotshape(ta.crossover (close[3],ta.ema(close, 900))and (close > ta.ema(close,900)), style=shape.labelup, location=location.belowbar, color=color.new(#21f356, 0), size=size.tiny, title='Longtrend', text='LT', textcolor=color.white) //plotshape(ta.crossunder (close[3],ta.ema(close, 900)) and (close < ta.ema(close,900)), style=shape.labeldown, location=location.abovebar, color=color.new(#a7510b, 0), size=size.tiny, title='Shorttrend', text='ST', textcolor=color.white) //long_signal = ta.crossover (close,OTT2up) and (close [3] > OTT2up) // and ta.crossover (AlphaTrend,OTTup) //and ta.crossover(ta.ema(close, 5), ta.ema(close, 21)) //short_signal = ta.crossunder (close,OTTdn) and (close[3] < OTTdn) // and ta.crossunder (AlphaTrend,OTTdn) //and ta.crossunder(ta.ema(close,5), ta.ema(close, 21)) //long_signal1 = ta.crossover(mav2g,OTT2up[2]) //short_signal1 = ta.crossunder(mav2g, OTT2dn[2]) //plotshape(long_signal, style=shape.labelup, location=location.belowbar, color=color.new(color.blue, 0), size=size.tiny, title='wixcaAL', text='wixAL', textcolor=color.white) //plotshape(short_signal, style=shape.labeldown, location=location.abovebar, color=color.new(color.red, 0), size=size.tiny, title='wixcaSAT', text='wixSAT', textcolor=color.white) //strategy.entry('Long', strategy.long, when=long_signal) //strategy.entry('Short', strategy.short, when=short_signal) //plotshape(buySignalk1 and showsignalsk1 and O11 > K22 ? math.min(low, OTTdn) : na, title='Buy', text='Buy', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(color.green, 0), textcolor=color.new(color.white, 0)) //@version=5 //indicator("EMA5 Strategy with Sequential Labels", overlay=true) // EMA hesaplama //emaLength = 21 //ema21 = ta.ema(close, emaLength) // Mum kapanışı EMA5'in altında ise short aç //shortCondition = close < ema21 // Mum kapanışı EMA5'in üstündeyse long aç //longCondition = close > ema21 // Sinyal sayacı //var int signalCount = 0 // Ticaret sinyallerini plot et ve ardışık numaralandırma //plotshape(series=shortCondition, title="Short Signal", color=color.red, style=shape.triangledown, location=location.abovebar) //text = string(signalCount + 1)) //plotshape(series=longCondition, title="Long Signal", color=color.green, style=shape.triangleup, location=location.belowbar)//, text = str.tostring(signalCount + 2)) // Sinyal sayacını güncelle //if (shortCondition or longCondition) // signalCount := signalCount + 2 // //@version=5 // //strategy(title='Open Close Cross Strategy R5.1 revised by JustUncleL', shorttitle='OCC Strategy R5.1', overlay=true, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=10, calc_on_every_tick=false) // // Revision: 5 // Original Author: @JayRogers // Revision Author: JustUncleL revisions 3, 4, 5 // // *** USE AT YOUR OWN RISK *** // - There are drawing/painting issues in pinescript when working across resolutions/timeframes that I simply // cannot fix here.. I will not be putting any further effort into developing this until such a time when // workarounds become available. // NOTE: Re-painting has been observed infrequently with default settings and seems OK up to Alternate // multiplier of 5. // Non-repainting mode is available by setting "Delay Open/Close MA" to 1 or more, but the reported // performance will drop dramatically. // // R5.1 Changes by JustUncleL // - Upgraded to Version 3 Pinescript. // - Added option to select Trade type (Long, Short, Both or None) // - Added bar colouring work around patch. // - Small code changes to improve efficiency. // - NOTE: To enable non-Repainting mode set "Delay Open/Close MA" to 1 or more. // 9-Aug-2017 // - Correction on SuperSmooth MA calculation. // // R5 Changes by JustUncleL // - Corrected cross over calculations, sometimes gave false signals. // - Corrected Alternate Time calculation to allow for Daily,Weekly and Monthly charts. // - Open Public release. // R4 Changes By JustUncleL // - Change the way the Alternate resolution in selected, use a Multiplier of the base Time Frame instead, // this makes it easy to switch between base time frames. // - Added TMA and SSMA moving average options. But DEMA is still giving the best results. // - Using "calc_on_every_tick=false" ensures results between backtesting and real time are similar. // - Added Option to Disable the coloring of the bars. // - Updated default settings. // // R3 Changes by JustUncleL: // - Returned a simplified version of the open/close channel, it shows strength of current trend. // - Added Target Profit Option. // - Added option to reduce the number of historical bars, overcomes the too many trades limit error. // - Simplified the strategy code. // - Removed Trailing Stop option, not required and in my opion does not work well in Trading View, // it also gives false and unrealistic performance results in backtesting. // // R2 Changes: // - Simplified and cleaned up plotting, now just shows a Moving Average derived from the average of open/close. // - Tried very hard to alleviate painting issues caused by referencing alternate resolution.. // // Description: // - Strategy based around Open-Close Crossovers. // Setup: // - I have generally found that setting the strategy resolution to 3-4x that of the chart you are viewing // tends to yield the best results, regardless of which MA option you may choose (if any) BUT can cause // a lot of false positives - be aware of this // - Don't aim for perfection. Just aim to get a reasonably snug fit with the O-C band, with good runs of // green and red. // - Option to either use basic open and close series data, or pick your poison with a wide array of MA types. // - Optional trailing stop for damage mitigation if desired (can be toggled on/off) // - Positions get taken automagically following a crossover - which is why it's better to set the resolution // of the script greater than that of your chart, so that the trades get taken sooner rather than later. // - If you make use of the stops, be sure to take your time tweaking the values. Cutting it too fine // will cost you profits but keep you safer, while letting them loose could lead to more drawdown than you // can handle. // - To enable non-Repainting mode set "Delay Open/Close MA" to 1 or more. // // === INPUTS === useRes = input(defval=true, title='Use Alternate Resolution?') intRes = input(defval=3, title='Multiplier for Alernate Resolution') stratRes = timeframe.ismonthly ? str.tostring(timeframe.multiplier * intRes, '###M') : timeframe.isweekly ? str.tostring(timeframe.multiplier * intRes, '###W') : timeframe.isdaily ? str.tostring(timeframe.multiplier * intRes, '###D') : timeframe.isintraday ? str.tostring(timeframe.multiplier * intRes, '####') : '60' basisType = input.string(defval='SMMA', title='MA Type: ', options=['SMA', 'EMA', 'DEMA', 'TEMA', 'WMA', 'VWMA', 'SMMA', 'HullMA', 'LSMA', 'ALMA', 'SSMA', 'TMA']) basisLen = input.int(defval=8, title='MA Period', minval=1) offsetSigma = input.int(defval=6, title='Offset for LSMA / Sigma for ALMA', minval=0) offsetALMA = input.float(defval=0.85, title='Offset for ALMA', minval=0, step=0.01) scolor = input(false, title='Show coloured Bars to indicate Trend?') delayOffset = input.int(defval=0, title='Delay Open/Close MA (Forces Non-Repainting)', minval=0, step=1) tradeType = input.string('BOTH', title='What trades should be taken : ', options=['LONG', 'SHORT', 'BOTH', 'NONE']) // === /INPUTS === // Constants colours that include fully non-transparent option. green100 = #008000FF lime100 = #00FF00FF red100 = #FF0000FF blue100 = #0000FFFF aqua100 = #00FFFFFF darkred100 = #8B0000FF gray100 = #808080FF // === BASE FUNCTIONS === // Returns MA input selection variant, default to SMA if blank or typo. variant(type, src, len, offSig, offALMA) => v1 = ta.sma(src, len) // Simple v2 = ta.ema(src, len) // Exponential v3 = 2 * v2 - ta.ema(v2, len) // Double Exponential v4 = 3 * (v2 - ta.ema(v2, len)) + ta.ema(ta.ema(v2, len), len) // Triple Exponential v5 = ta.wma(src, len) // Weighted v6 = ta.vwma(src, len) // Volume Weighted v7 = 0.0 sma_1 = ta.sma(src, len) // Smoothed v7 := na(v7[1]) ? sma_1 : (v7[1] * (len - 1) + src) / len v8 = ta.wma(2 * ta.wma(src, len / 2) - ta.wma(src, len), math.round(math.sqrt(len))) // Hull v9 = ta.linreg(src, len, offSig) // Least Squares v10 = ta.alma(src, len, offALMA, offSig) // Arnaud Legoux v11 = ta.sma(v1, len) // Triangular (extreme smooth) // SuperSmoother filter // © 2013 John F. Ehlers a1 = math.exp(-1.414 * 3.14159 / len) b1 = 2 * a1 * math.cos(1.414 * 3.14159 / len) c2 = b1 c3 = -a1 * a1 c1 = 1 - c2 - c3 v12 = 0.0 v12 := c1 * (src + nz(src[1])) / 2 + c2 * nz(v12[1]) + c3 * nz(v12[2]) type == 'EMA' ? v2 : type == 'DEMA' ? v3 : type == 'TEMA' ? v4 : type == 'WMA' ? v5 : type == 'VWMA' ? v6 : type == 'SMMA' ? v7 : type == 'HullMA' ? v8 : type == 'LSMA' ? v9 : type == 'ALMA' ? v10 : type == 'TMA' ? v11 : type == 'SSMA' ? v12 : v1 // security wrapper for repeat calls reso(exp, use, res) => security_1 = request.security(syminfo.tickerid, res, exp, gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_on) use ? security_1 : exp // === /BASE FUNCTIONS === // === SERIES SETUP === closeSeries = variant(basisType, close[delayOffset], basisLen, offsetSigma, offsetALMA) openSeries = variant(basisType, open[delayOffset], basisLen, offsetSigma, offsetALMA) // === /SERIES === // === PLOTTING === // Get Alternate resolution Series if selected. closeSeriesAlt = reso(closeSeries, useRes, stratRes) openSeriesAlt = reso(openSeries, useRes, stratRes) // trendColour = closeSeriesAlt > openSeriesAlt ? color.rgb(148, 106, 226) : color.rgb(146, 80, 80, 62) bcolour = closeSeries > openSeriesAlt ? lime100 : red100 barcolor(scolor ? bcolour : na, title='Bar Colours') closeP = plot(closeSeriesAlt, title='Close Series', color=trendColour, linewidth=2, style=plot.style_line, transp=20) openP = plot(openSeriesAlt, title='Open Series', color=trendColour, linewidth=2, style=plot.style_line, transp=20) fill(closeP, openP, color=trendColour, transp=80) // === /PLOTTING === // === ALERT conditions xlong = ta.crossover(closeSeriesAlt, openSeriesAlt) xshort = ta.crossunder(closeSeriesAlt, openSeriesAlt) longCond = xlong // alternative: longCond[1]? false : (xlong or xlong[1]) and close>closeSeriesAlt and close>=open shortCond = xshort // alternative: shortCond[1]? false : (xshort or xshort[1]) and close<closeSeriesAlt and close<=open // === /ALERT conditions. // === STRATEGY === // stop loss slPoints = input.int(defval=0, title='Initial Stop Loss Points (zero to disable)', minval=0) tpPoints = input.int(defval=0, title='Initial Target Profit Points (zero for disable)', minval=0) // Include bar limiting algorithm ebar = input.int(defval=10000, title='Number of Bars for Back Testing', minval=0) dummy = input(false, title='- SET to ZERO for Daily or Longer Timeframes') // // Calculate how many mars since last bar tdays = (timenow - time) / 60000.0 // number of minutes since last bar tdays := timeframe.ismonthly ? tdays / 1440.0 / 5.0 / 4.3 / timeframe.multiplier : timeframe.isweekly ? tdays / 1440.0 / 5.0 / timeframe.multiplier : timeframe.isdaily ? tdays / 1440.0 / timeframe.multiplier : tdays / timeframe.multiplier // number of bars since last bar // //set up exit parameters TP = tpPoints > 0 ? tpPoints : na SL = slPoints > 0 ? slPoints : na // Make sure we are within the bar range, Set up entries and exit conditions //if (ebar == 0 or tdays <= ebar) and tradeType != 'NONE' // strategy.entry('long', strategy.long, when=longCond == true and tradeType != 'SHORT') // strategy.entry('short', strategy.short, when=shortCond == true and tradeType != 'LONG') // strategy.close('long', when=shortCond == true and tradeType == 'LONG') // strategy.close('short', when=longCond == true and tradeType == 'SHORT') // strategy.exit('XL', from_entry='long', profit=TP, loss=SL) // strategy.exit('XS', from_entry='short', profit=TP, loss=SL) // === /STRATEGY === // eof line1=ta.ema (close, 5) line2=ta.ema(close, 20) line3=ta.ema(close, 13) trendColour1= line1 >= line2 ? color.rgb(108, 187, 110) : color.rgb(204, 87, 87) p1 = plot(line1, title="ema5", color=#3179f5, linewidth=3) p2 = plot(line2, title="ema20", color=#18c71d, linewidth=3) fill(p1, p2, title = "5-20 Background", color = trendColour1, transp=80) //length6 = input(50, 'sma1') //plot(ta.sma(src4, length6), color=color.new(color.lime, 0), linewidth=3, title='sma50') //length7 = input(200, 'sma2') //plot(ta.sma(src4, length7), color=color.new(color.olive, 0), linewidth=3, title='sma200') //length8 = input(900, 'ema3') //plot(ta.ema(src4, length8), color=color.new(color.teal, 0), linewidth=3, title='ema900') //longCondition =long //if longCondition // strategy.entry("Long", strategy.long) //shortCondition = short //if shortCondition // strategy.entry("Short", strategy.short) //if (ebar == 0 or tdays <= ebar) and tradeType != 'NONE' // strategy.entry('long', strategy.long, when=longCond == true and tradeType != 'SHORT') // strategy.entry('short', strategy.short, when=shortCond == true and tradeType != 'LONG') //strategy.close('long', when=shortCond == true and tradeType == 'LONG') //strategy.close('short', when=longCond == true and tradeType == 'SHORT') //strategy.exit('XL', from_entry='long', profit=TP, loss=SL) //strategy.exit('XS', from_entry='short', profit=TP, loss=SL) // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // author © KivancOzbilgic // developer © KivancOzbilgic //@version=5 //indicator('AlphaTrend', shorttitle='AT', overlay=true, format=format.price, precision=2, timeframe='') coeff = input.float(1, 'Multiplier', step=0.1) AP = input(14, 'Common Period') ATR = ta.sma(ta.tr, AP) src5 = input(close) showsignalsk = input(title='Show Signals?', defval=true) novolumedata = input(title='Change calculation (no volume data)?', defval=false) upT = low - ATR * coeff downT = high + ATR * coeff AlphaTrend = 0.0 AlphaTrend := (novolumedata ? ta.rsi(src5, AP) >= 50 : ta.mfi(hlc3, AP) >= 50) ? upT < nz(AlphaTrend[1]) ? nz(AlphaTrend[1]) : upT : downT > nz(AlphaTrend[1]) ? nz(AlphaTrend[1]) : downT color1 = AlphaTrend > AlphaTrend[2] ? #00E60F : AlphaTrend < AlphaTrend[2] ? #80000B : AlphaTrend[1] > AlphaTrend[3] ? #00E60F : #80000B k1 = plot(AlphaTrend, color=color.new(#0022FC, 0), linewidth=3) k2 = plot(AlphaTrend[2], color=color.new(#FC0400, 0), linewidth=3) fill(k1, k2, color=color1) buySignalk = ta.crossover(AlphaTrend, AlphaTrend[2]) sellSignalk = ta.crossunder(AlphaTrend, AlphaTrend[2]) K1 = ta.barssince(buySignalk) K2 = ta.barssince(sellSignalk) O1 = ta.barssince(buySignalk[1]) O2 = ta.barssince(sellSignalk[1]) // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © vixca //@version=5 //indicator('EMA Strategy', overlay=true) // EMA values ema5 = ta.ema(close, 5) ema20 = ta.ema(close, 20) ema50 = ta.ema(close, 50) ema200 = ta.ema(close, 200) ema900 = ta.ema(close, 900) // Plot EMA lines //plot(ema5, color=color.new(color.blue, 0), linewidth=2) //plot(ema20, color=color.new(color.orange, 0), linewidth=2) plot(ema50, color=color.new(color.green, 0), linewidth=2) plot(ema200, title="ema200", color=color.new(color.red, 0), linewidth=3) plot(ema900, title="ema900", color=color.new(color.purple, 0), linewidth=4) // Long condition //longCondition = ema5 > ema20 and ema50 > ema200 and close > ema900 // Short condition //shortCondition = ema5 < ema20 and ema50 < ema200 and close < ema900 // Plot signals //plotshape(longCondition, style=shape.triangleup, location=location.belowbar, color=color.new(color.green, 0), size=size.large) //plotshape(shortCondition, style=shape.triangledown, location=location.abovebar, color=color.new(color.red, 0), size=size.large) //plotshape(long, style=shape.labelup, location=location.belowbar, color=color.new(#21f356, 0), size=size.tiny, title='Longtrend', text='Lt', textcolor=color.white) //plotshape(short, style=shape.labeldown, location=location.abovebar, color=color.new(#a7510b, 0), size=size.tiny, title='Shorttrend', text='St', textcolor=color.white) // Güçlü al ve güçlü sat koşulları //strongBuy = longCondition and long //strongSell = shortCondition and short // Güçlü al ve güçlü sat sinyalleri 3 mum sonrada doğru mu? //strongBuy = longCondition and long and close[3] > close[0] //strongSell = shortCondition and short and close[3] < close[0] // Güçlü al ve güçlü sat sinyallerini çiz //plotshape(strongBuy, style=shape.circle, location=location.belowbar, color=color.new(color.blue, 0), size=size.large, title='Strong Buy', text='B', textcolor=color.white) //plotshape(strongSell, style=shape.xcross, location=location.abovebar, color=color.new(color.black, 0), size=size.large, title='Strong Sell', text='S', textcolor=color.white) //plotshape(strongBuy, style=shape.labelup, location=location.belowbar, color=color.new(#21f356, 0), size=size.tiny, title='Strong Buy', text='B', textcolor=color.white) //plotshape(strongSell, style=shape.labeldown, location=location.abovebar, color=color.new(#a7510b, 0), size=size.tiny, title='Strong Sell', text='S', textcolor=color.white) long = ema5 > ema20 and close > OTT2up and close[1] > OTT2up[1] and close > OTTup and close[1] > OTTup[1] and close > AlphaTrend and close[1] > AlphaTrend[1] and low > OTTup and low[1] > OTTup[1] and close > openSeriesAlt and close[1] > openSeriesAlt[1]// and and low[1] > OTT2up and low[2] > ema50[2] and low[2] > OTT2up//and AlphaTrend > OTT2up and close > ema50 short = ema5 < ema20 and close < OTT2dn and close[1] < OTT2dn[1] and close < OTTdn and close[1] < OTTdn[1] and close < AlphaTrend and close[1] < AlphaTrend[1] and high < OTTdn and high[1] < OTTdn[1] and close < closeSeriesAlt and close[1] < closeSeriesAlt[1]//] and high [1] < OTT2dn and high [2] < ema50[2] and high [2] < OTT2dn//and AlphaTrend < OTTdn and close < ema50 //close > ema50 and close[1] > ema50[1] and close[2] > ema50[2] // longShortCond şartını çiz //plotshape(long, style=shape.labelup, location=location.belowbar, color=color.new(#21f356, 0), size=size.tiny, title='Long Condition', text='L', textcolor=color.white) //plotshape(short, style=shape.labeldown, location=location.abovebar, color=color.new(#a7510b, 0), size=size.tiny, title='Short Condition', text='S', textcolor=color.white) // Pozisyon açma ve kapatma sinyallerini belirleyin buy = long and not long[1] sell = short and not short[1] close_long = short and not short[1] close_short = long and not long[1] // Sinyalleri grafiğe işaretleyin plotshape(buy,style=shape.labelup, location=location.belowbar, color=color.new(#21f356, 0), size=size.tiny, title='Long Condition', text='L', textcolor=color.white) plotshape(sell, style=shape.labeldown, location=location.abovebar, color=color.new(#a7510b, 0), size=size.tiny, title='Short Condition', text='S', textcolor=color.white) //plotshape(close_long, style=shape.xcross, location=location.abovebar, color=color.green, text="Close Long") //plotshape(close_short, style=shape.xcross, location=location.belowbar, color=color.red, text="Close Short") // Sinyalleri stratejiye uygulayın strategy.entry("Long", strategy.long, when=buy) strategy.entry("Short", strategy.short, when=sell) strategy.close("Long", when=close_long) strategy.close("Short", when=close_short)