Ini adalah strategi trading breakout yang didasarkan pada moving average. Ini menghitung harga rata-rata selama periode tertentu sebagai moving average. Ketika harga menembus moving average, sinyal perdagangan dihasilkan.
Strategi ini terutama didasarkan pada indikator moving average. Ini menggunakan fungsi sma untuk menghitung harga penutupan rata-rata selama periode untuk mendapatkan moving average. Ketika harga penutupan terbaru menembus moving average ke atas, sinyal beli dihasilkan. Ketika harga penutupan terbaru menembus moving average ke bawah, sinyal jual dihasilkan.
Secara khusus, ia mendefinisikan sumber (harga penutupan baru-baru ini) dan panjang rata-rata bergerak dalam strategi untuk mendapatkan urutan data rata-rata bergerak. Kemudian ia menetapkan dua kondisi: membuat pesanan panjang ketika harga melintasi di atas rata-rata bergerak; membuat pesanan pendek ketika harga melintasi di bawah rata-rata bergerak. Setelah membuat pesanan, ia juga mengatur profit taking dan stop loss: ia menutup sebagian posisi ketika pesanan mencapai rasio keuntungan yang ditetapkan, dan menutup seluruh posisi ketika pesanan mencapai harga take profit atau stop loss yang telah ditetapkan sebelumnya.
Ini adalah tren yang sederhana dan praktis mengikuti strategi.
Meskipun strategi ini memiliki banyak keuntungan, masih ada beberapa risiko:
Untuk mengendalikan risiko ini, kita dapat mengoptimalkan dengan menggabungkan indikator lain untuk penyaringan, memperkenalkan penilaian tren pasar jangka pendek, atau menggunakan metode pembelajaran mesin untuk menemukan kombinasi parameter yang optimal.
Strategi dapat dioptimalkan dalam aspek berikut:
Tambahkan indikator teknis lainnya untuk penilaian untuk membangun sistem perdagangan dan meningkatkan tingkat kemenangan.
Tambahkan mekanisme stop loss. Gunakan trailing stop loss atau stop loss berbasis waktu untuk mengunci keuntungan dan menghindari kerugian yang lebih besar.
Melakukan optimasi parameter. Mengubah parameter periode rata-rata bergerak untuk menemukan kombinasi terbaik. Berbagai jenis rata-rata bergerak juga dapat diuji.
Menggunakan algoritma seperti hutan acak dan LSTM dikombinasikan dengan beberapa faktor untuk menentukan arah tren.
Mengoptimalkan masuk dan keluar logika. Atur kondisi penyaringan tren untuk menghindari perdagangan melawan tren di dekat akhir. Pertimbangkan untuk menggunakan logika keluar bertahap.
Secara keseluruhan, strategi breakout rata-rata bergerak ini sangat cocok sebagai strategi perdagangan kuantum pemula. Ini memiliki logika sederhana, mudah dimengerti dan dioperasikan, dengan beberapa efek praktis. Pada saat yang sama, ini meninggalkan banyak ruang untuk pengujian dan pengoptimalan lebih lanjut.
/*backtest start: 2023-11-20 00:00:00 end: 2023-11-22 08:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 // |-- Initialize Strategy Parameters: strategy( // |-- Strategy Title. title='[Tutorial][RS]Working with orders', // |-- if shorttitle is specified, it will overwrite the name on the chart window. shorttitle='WwO', // |-- if true it overlays current chart window, otherwise it creates a drawer to display plotting outputs. overlay=true, // |-- Strategy unit type for default quantity, possible arguments: (strategy.cash, strategy.fixed, strategy.percent_of_equity) default_qty_type=strategy.cash, // |-- Value to use for default trade size default_qty_value=1000, // |-- Default Account size initial_capital=100000, // |-- Account Currency parameter currency=currency.USD ) // |-- Strategy Profit/loss parameters: profit = input(defval=5000, title='Take Profit') loss = input(defval=5000, title='Stop Loss') ratio = input(defval=2.0, title='Ratio at wich to take out a percentage off the table (take profit / ratio).') percent = input(defval=50.0, title='Percentage of position to take profit.') // |-- Signal Parameters: // | // |-- Moving Average input source and length parameters. src = input(defval=close) length = input(defval=100) // |-- Moving Average Data series. ma = sma(src, length) // |-- Condition for triggering a buy(long) order(trade). if crossover(src, ma) // |-- Create the order. strategy.order(id='Buy', long=true) // |-- Issue a exit order to close a percentage of the trade when a specified ratio(take profit / ratio) is reached. strategy.exit(id='Buy Half Exit', from_entry='Buy', qty_percent=percent, profit=profit/ratio) // |-- Issue a exit order to close the full position, when take profit or stop loss's are reached. strategy.exit(id='Buy Full Exit', from_entry='Buy', qty_percent=100, profit=profit, loss=loss) if crossunder(src, ma) // |-- Create the order. strategy.order(id='Sell', long=false) // |-- Issue a exit order to close a percentage of the trade when a specified ratio(take profit / ratio) is reached. strategy.exit(id='Sell Half Exit', from_entry='Sell', qty_percent=percent, profit=profit/ratio) // |-- Issue a exit order to close the full position, when take profit or stop loss's are reached. strategy.exit(id='Sell Full Exit', from_entry='Sell Half Exit', qty_percent=100, profit=profit, loss=loss) // |-- Output Functions. plot(series=ma, title='MA', color=black)