Strategi ini menggabungkan isyarat dari harga dan jumlah dagangan, bersama dengan tahap retracement Fibonacci, untuk menjana isyarat beli dan jual dalam jangka masa 15 minit dan 45 minit. Strategi ini menggunakan pelbagai purata bergerak (MA) sebagai penunjuk trend dan momentum, termasuk Purata Bergerak Sederhana (SMA) dan Purata Bergerak Eksponen (EMA).
Strategi ini menghasilkan isyarat beli dan jual dalam beberapa jangka masa dengan menggabungkan harga, jumlah dagangan, dan tahap retracement Fibonacci. Kelebihan strategi ini terletak pada pertimbangan menyeluruh pelbagai elemen pasaran dan penggunaan pelbagai MA dan EMA sebagai penunjuk tambahan. Walau bagaimanapun, strategi ini boleh menghasilkan isyarat perdagangan yang berlebihan di pasaran yang bergolak dan bergantung pada penunjuk yang dikira dari data sejarah. Oleh itu, pengoptimuman lanjut diperlukan untuk meningkatkan daya adaptasi dan kebolehpercayaannya. Arahan pengoptimuman termasuk memperkenalkan penunjuk kekuatan trend, mengoptimumkan parameter, menggabungkan penunjuk teknikal lain, dan memperkenalkan langkah pengurusan risiko.
/*backtest start: 2023-05-28 00:00:00 end: 2024-06-02 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title="Buy/Sell with Volume and Candlestick Signals", overlay=true) // Fibonacci Retracement Levels var float[] fibonacciLevels = array.new_float(5) array.set(fibonacciLevels, 2, 0.47) array.set(fibonacciLevels, 3, 0.658) array.set(fibonacciLevels, 4, 0.886) // Calculate Fibonacci Retracement Levels fibonacciRetrace(highLevel, lowLevel) => priceRange = highLevel - lowLevel retracementLevels = array.new_float(0) for i = 0 to array.size(fibonacciLevels) - 1 level = highLevel - array.get(fibonacciLevels, i) * priceRange array.push(retracementLevels, level) retracementLevels fibRetracementValues = fibonacciRetrace(high, low) fibRetracement = ta.sma(close, 21) plot(fibRetracement, color=color.purple, title="Fibonacci Retracement") // Define inputs fast_ma = input.int(title="Fast MA Period", defval=10) short_sma_10 = input.int(title="Short SMA 10 Period", defval=10) short_sma_60 = input.int(title="Short SMA 60 Period", defval=60) slow_ma = input.int(title="Slow MA Period", defval=30) ema1Length = input.int(title="EMA 1 Length", defval=3) fast_ma_9 = input.int(title="Fast MA 9", defval=9) // Define indicators fast_ma_val = ta.sma(close, fast_ma) short_sma_10_val = ta.sma(close, short_sma_10) short_sma_60_val = ta.sma(close, short_sma_60) slow_ma_val = ta.sma(close, slow_ma) up_trend = fast_ma_val > slow_ma_val down_trend = fast_ma_val < slow_ma_val volume_up = volume > ta.sma(volume, 20) volume_down = volume < ta.sma(volume, 20) // Calculate accuracy values fast_ema_val = ta.ema(close, fast_ma) slow_ema_val = ta.ema(close, slow_ma) ema1_val = ta.ema(close, ema1Length) fast_ma_9_val = ta.sma(close, fast_ma_9) ema7_val = ta.ema(close, 7) accuracy = ta.crossover(close, slow_ma_val) ? fast_ema_val : slow_ema_val // Define lines plot(up_trend ? fast_ma_val : na, color=color.green, linewidth=2, title="Up Trend") plot(down_trend ? fast_ma_val : na, color=color.red, linewidth=2, title="Down Trend") plot(volume_up ? fast_ma_val : na, color=color.green, linewidth=2, title="Volume Up") plot(volume_down ? fast_ma_val : na, color=color.red, linewidth=2, title="Volume Down") plot(accuracy, color=color.yellow, linewidth=1, title="Accuracy Line") plot(ema1_val, color=color.purple, linewidth=1, title="EMA 1") plot(fast_ma_9_val, color=color.orange, linewidth=1, title="Fast MA 9") plot(ema7_val, color=color.blue, linewidth=1, title="EMA 7") plot(short_sma_60_val, color=color.red, linewidth=1, title="Short SMA 60") hline(0, color=color.gray, linestyle=hline.style_dotted, title="Zero Line") // Buy/Sell Signals buySignal = ta.crossunder(short_sma_60_val, accuracy) sellSignal = ta.crossover(short_sma_60_val, accuracy) // Exit Signals exitLongSignal = ta.crossunder(fast_ma_9_val, ema7_val) exitShortSignal = ta.crossover(fast_ma_9_val, ema7_val) // Plot Buy/Sell Signals plotshape(buySignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="Buy") plotshape(sellSignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell") if exitLongSignal strategy.close("Buy") if exitShortSignal strategy.close("Sell") if buySignal strategy.entry("Enter Long", strategy.long) else if sellSignal strategy.entry("Enter Short", strategy.short)