Apabila purata bergerak jangka pendek (9 hari MA) melintasi di atas purata bergerak jangka panjang (15-hari MA), ia menunjukkan momentum menaik jangka pendek yang lebih kuat untuk pergi lama. Apabila MA jangka pendek melintasi di bawah MA jangka panjang, ia menandakan momentum menurun jangka pendek yang lebih kuat untuk pergi pendek. Di samping itu, sudut MA perlu lebih besar daripada 30 darjah untuk memastikan kuasa menaik atau menurun yang mencukupi. corak lilin intraday tertentu digunakan untuk menapis isyarat palsu.
Strategi ini menggabungkan penunjuk purata bergerak dan corak candlestick intraday untuk menapis bunyi bising dengan berkesan dan menjadikan isyarat perdagangan lebih boleh dipercayai. Terutamanya dengan ambang ambang, ia memastikan terdapat momentum perubahan harga yang mencukupi sebelum menghasilkan isyarat, mengelakkan isyarat palsu yang tidak perlu. Juga, tahap stop loss dan mengambil keuntungan secara automatik dapat mengehadkan kerugian maksimum dan penarikan keuntungan. Langkah-langkah ini meningkatkan kestabilan dan keuntungan.
Sebagai penunjuk trend, purata bergerak boleh menangkap trend harga jangka menengah hingga panjang. lilin intraday mencerminkan perbandingan kuasa peserta pasaran jangka pendek. Menggunakan mereka bersama-sama boleh mendapatkan implikasi perdagangan dalam jangka masa yang berbeza. Strategi ini mengintegrasikan kekuatan beberapa penunjuk dan harus mencapai prestasi yang baik dalam perdagangan sebenar.
Risiko utama strategi ini termasuk:
Risiko pecah palsu. Semasa penyatuan pasaran, purata bergerak mungkin mempunyai pelbagai salib, yang kebanyakannya adalah isyarat palsu. Jika dipukul di sini akan menimbulkan kerugian. Corak candlestick dan keadaan sudut dapat mengurangkan risiko ini.
risiko pembalikan trend. purata bergerak tidak boleh memberi amaran awal pembalikan trend. memegang kedudukan di sini boleh membawa kepada kerugian besar. risiko ini boleh dikawal melalui stop loss yang ketat.
Secara amnya, strategi ini boleh menghasilkan beberapa isyarat palsu dan mengejar risiko tinggi / rendah tanpa mempertimbangkan keadaan pasaran.
Aspek berikut strategi ini boleh ditingkatkan lagi:
Tambah analisis trend utama, contohnya, mengesahkan saluran jangka menengah / panjang, untuk mengelakkan perdagangan terhadap trend.
Menggabungkan penunjuk jumlah. Sebagai contoh, jumlah pada imbangan boleh digunakan untuk mengelakkan harga pendek yang tinggi atau membeli harga yang rendah.
Mengoptimumkan parameter purata bergerak. Uji tempoh panjang yang berbeza, sistem MA tiga atau lima kali ganda untuk fleksibiliti penyesuaian yang lebih besar.
Uji parameter stop loss / mengambil keuntungan. Tetapkan nisbah rebate buku pesanan berdasarkan hasil backtest untuk mencapai nisbah risiko-balasan yang optimum.
Ringkasnya, strategi ini menggabungkan kekuatan purata bergerak dan corak candlestick yang dipilih. Isyarat perdagangan dihasilkan dengan kriteria yang agak ketat, menapis banyak bunyi bising dan meningkatkan kualiti isyarat. Pengendalian stop loss dan mengambil keuntungan lebih lagi mengehadkan risiko dan mengunci keuntungan. Ini adalah strategi perdagangan kuantitatif yang stabil yang patut disyorkan.
/*backtest start: 2024-01-29 00:00:00 end: 2024-02-28 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Moving Average Crossover Strategy with Candlestick Patterns", overlay=true) // Define input parameters fast_length = input(9, "Fast MA Length") slow_length = input(15, "Slow MA Length") stop_loss_percent = input(0.25, "Stop Loss (%)") target_percent = input(0.25, "Target (%)") angle_threshold = input(30, "Angle Threshold (degrees)") // Calculate moving averages fast_ma = sma(close, fast_length) slow_ma = sma(close, slow_length) // Define candlestick patterns is_pin_bar() => pin_bar = abs(open - close) > 2 * abs(open[1] - close[1]) high_tail = max(open, close) - high > abs(open - close) * 1.5 low_tail = low - min(open, close) > abs(open - close) * 1.5 pin_bar and high_tail and low_tail is_marubozu() => marubozu = abs(open - close) > abs(open[1] - close[1]) * 0.75 no_upper_shadow = high == max(open, close) no_lower_shadow = low == min(open, close) marubozu and no_upper_shadow and no_lower_shadow is_full_body() => full_body = abs(open - close) > abs(open[1] - close[1]) * 0.95 full_body // Plot moving averages plot(fast_ma, color=color.blue, title="Fast MA") plot(slow_ma, color=color.red, title="Slow MA") // Calculate angle of slow moving average ma_angle = abs(180 * (atan(slow_ma[1] - slow_ma) / 3.14159)) // Generate buy/sell signals based on angle condition and candlestick patterns buy_signal = crossover(fast_ma, slow_ma) and ma_angle >= angle_threshold and (is_pin_bar() or is_marubozu() or is_full_body()) sell_signal = crossunder(fast_ma, slow_ma) // Calculate stop-loss and target levels stop_loss_level = close * (1 - stop_loss_percent / 100) target_level = close * (1 + target_percent / 100) // Execute trades based on signals with stop-loss and target strategy.entry("Buy", strategy.long, when=buy_signal) strategy.exit("Exit", "Buy", stop=stop_loss_level, limit=target_level) // Plot buy/sell signals on chart (optional) plotshape(series=buy_signal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small) plotshape(series=sell_signal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small) // Plot angle line hline(angle_threshold, "Angle Threshold", color=color.black, linestyle=hline.style_dashed)