Strategi ini adalah sistem perdagangan automatik berdasarkan Indeks Aliran Wang (MFI), yang terutamanya direka untuk menangkap peluang pembalikan yang berpotensi dengan mengenal pasti tingkah laku aset di zon oversold. Mekanisme teras menghasilkan isyarat beli apabila penunjuk MFI bangkit dari zon oversold (default di bawah 20), menggunakan pesanan had, menghentikan kerugian, dan mengambil keuntungan mekanisme untuk menguruskan risiko perdagangan dan pulangan.
Strategi ini beroperasi berdasarkan langkah-langkah utama berikut: 1. Memantau perubahan nilai MFI secara berterusan, menandakan kemasukan ke zon oversold apabila MFI jatuh di bawah ambang yang telah ditetapkan (default 20). 2. Apabila MFI bangkit semula dan memecahkan ambang dari zon oversold, sistem meletakkan pesanan had beli di bawah harga semasa, dengan harga tertentu ditentukan oleh peratusan yang ditakrifkan oleh pengguna. 3. Sistem memantau tempoh validiti perintah had, membatalkan secara automatik jika tidak diisi dalam tempoh pemerhatian yang telah ditetapkan (default 5 lilin). 4. Sebaik sahaja pesanan beli dipenuhi, sistem segera menetapkan paras sasaran stop-loss dan keuntungan, yang dikira berdasarkan peratusan harga masuk. 5. Perdagangan ditutup secara automatik apabila sasaran stop-loss atau keuntungan dicapai.
Ini adalah strategi perdagangan automatik yang direka dengan baik, logiknya jelas. Melalui penggunaan penunjuk MFI yang fleksibel, digabungkan dengan mekanisme pengurusan pesanan yang komprehensif, ia berkesan menangkap pemulihan pasaran selepas keadaan oversold. Konfigurasi tinggi strategi ini memudahkan pengoptimuman untuk persekitaran pasaran yang berbeza. Walaupun terdapat risiko tertentu, mereka dapat ditangani melalui arah pengoptimuman yang dicadangkan untuk meningkatkan kestabilan dan keuntungan strategi. Sesuai untuk pelaburan jangka menengah hingga panjang, terutamanya untuk pelabur yang mencari peluang bangkit oversold di pasaran yang berayun.
/*backtest start: 2024-11-04 00:00:00 end: 2024-12-04 00:00:00 period: 3h basePeriod: 3h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © traderhub //@version=5 strategy("MFI Strategy with Oversold Zone Exit and Averaging", overlay=true) // Strategy parameters mfiPeriod = input.int(title="MFI Period", defval=14) // Period for calculating MFI mfiOS = input.float(title="MFI Oversold Level", defval=20.0) // Oversold level for MFI longEntryPercentage = input.float(title="Long Entry Percentage (%)", minval=0.0, step=0.1, defval=0.1) // Percentage for the buy limit order stopLossPercentage = input.float(title="Stop Loss Percentage (%)", minval=0.0, step=0.1, defval=1.0) // Percentage for the stop-loss exitGainPercentage = input.float(title="Exit Gain Percentage (%)", minval=0.0, step=0.1, defval=1.0) // Percentage gain for the take-profit cancelAfterBars = input.int(title="Cancel Order After # Bars", minval=1, defval=5) // Cancel order after a certain number of bars // Calculate MFI mfi = ta.mfi(close, mfiPeriod) // MFI with specified period // Variables for tracking state var bool inOversoldZone = false // Flag for being in the oversold zone var float longEntryPrice = na // Price for long entry var int barsSinceEntryOrder = na // Counter for bars after placing an order // Define being in the oversold zone if (mfi < mfiOS) inOversoldZone := true // Entered oversold zone // Condition for exiting the oversold zone and placing a limit order if (inOversoldZone and mfi > mfiOS) inOversoldZone := false // Leaving the oversold zone longEntryPrice := close * (1 - longEntryPercentage / 100) // Calculate limit price for entry strategy.entry("Long Entry", strategy.long, limit=longEntryPrice) // Place a limit order barsSinceEntryOrder := 0 // Reset counter for bars after placing the order // Increase the bar counter if the order has not yet been filled if (not na(barsSinceEntryOrder)) barsSinceEntryOrder += 1 // Cancel order if it hasn’t been filled within the specified number of bars if (not na(barsSinceEntryOrder) and barsSinceEntryOrder >= cancelAfterBars and strategy.position_size == 0) strategy.cancel("Long Entry") barsSinceEntryOrder := na // Reset bar counter // Set stop-loss and take-profit for filled positions if (strategy.position_size > 0) stopLossPrice = longEntryPrice * (1 - stopLossPercentage / 100) // Calculate stop-loss level takeProfitPrice = longEntryPrice * (1 + exitGainPercentage / 100) // Calculate take-profit level strategy.exit("Exit Long", from_entry="Long Entry", limit=takeProfitPrice, stop=stopLossPrice) // Visualize oversold and overbought zones bgcolor(mfi < mfiOS ? color.new(color.green, 90) : na) // Background in oversold zone plot(mfi, title="MFI", color=color.blue) // MFI plot hline(mfiOS, "Oversold Level", color=color.red) // Oversold level line