Strategi Dynamic Moving Average Retracement Martin adalah strategi perdagangan yang sering digunakan yang menggabungkan crossover moving average dan sinyal pullback untuk menghasilkan sinyal masuk dan keluar. Strategi ini menggunakan crossover dan divergensi rata-rata bergerak sederhana 3 hari dan 8 hari untuk menangkap tren jangka pendek, dan mengadopsi stop dan take profit untuk mengendalikan risiko.
Strategi ini menggunakan rata-rata bergerak sederhana 3 hari dan 8 hari dan sinyal silang mereka. Sinyal panjang dihasilkan ketika MA 3 hari melintasi di atas MA 8 hari, dan sinyal pendek dihasilkan ketika MA 3 hari melintasi di bawah MA 8 hari. Sinyal panjang akan memicu entri panjang dan sinyal pendek akan memicu entri pendek.
Jika tidak ada posisi, strategi akan menentukan masuk berdasarkan sinyal crossover. Setelah masuk, harga stop loss dan harga take profit akan dihitung berdasarkan harga penutupan terakhir, persentase stop loss dan persentase take profit. Misalnya, ketika memegang posisi panjang, harga stop loss adalah harga penutupan terakhir dikurangi persentase stop loss dikalikan dengan MA 8 hari; harga take profit adalah harga penutupan terbaru ditambah persentase take profit dikalikan dengan MA 8 hari.
Jika ada posisi long yang sudah ada, ketika harga memicu take profit atau stop loss, jika sinyal pullback dari MA 8 hari terjadi, posisi akan ditutup.
Strategi ini juga memetakan titik masuk dan keluar pada grafik. Sebagai contoh, entri panjang digambarkan sebagai segitiga ke atas dan keluar panjang sebagai segitiga ke bawah. Ini membantu menilai secara visual entri dan keluar.
Keuntungan dari strategi ini adalah:
Risiko utama dari strategi ini adalah:
Risiko dapat dikurangi dengan memperluas persentase stop loss secara wajar, mengoptimalkan parameter MA, memperkenalkan kondisi filter tambahan, dll. Juga, menilai toleransi pribadi dengan benar dan menghindari overtrading adalah penting.
Strategi ini dapat dioptimalkan dari aspek berikut:
Strategi Dynamic Moving Average Retracement Martin adalah strategi perdagangan jangka pendek. Strategi ini menangkap tren jangka pendek yang terbentuk oleh penyeberangan rata-rata bergerak, dan mengelola risiko dengan stop dan take profit yang tepat.
/*backtest start: 2022-11-17 00:00:00 end: 2023-11-23 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // ____ __ ___ ________ ___________ ___________ __ ____ ___ // / __ )/ / / | / ____/ //_/ ____/ |/_ __< / // / / __ |__ \ // / __ / / / /| |/ / / ,< / / / /| | / / / / // /_/ / / __/ / // / /_/ / /___/ ___ / /___/ /| / /___/ ___ |/ / / /__ __/ /_/ / __/ // /_____/_____/_/ |_\____/_/ |_\____/_/ |_/_/ /_/ /_/ \____/____/ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © blackcat1402 //@version=5 strategy('[blackcat] L1 MartinGale Scalping Strategy', overlay=true, pyramiding = 5) // Define input variables takeProfit = input(1.03, title='Take Profit') stopLoss = input(0.95, title='Stop Loss') inputTradingMode = input.string(defval='Long', options=['Long', 'Short', 'BiDir'], title='Trading Mode') //The purpose of this rule is to forbid short entries, only long etries will be placed. The rule affects the following function: 'entry'. strategy.risk.allow_entry_in(inputTradingMode == 'Long' ? strategy.direction.long : inputTradingMode == 'Short' ? strategy.direction.short : strategy.direction.all) // Define strategy logic entryPrice = 0.0 stopPrice = 0.0 takeProfitPrice = 0.0 stopLossPrice = 0.0 // Define SMA crossover and crossunder signals sma3 = ta.sma(close, 3) sma8 = ta.sma(close, 8) plot(sma3, color=color.yellow) plot(sma8, color=color.fuchsia) crossoverSignal = ta.crossover(sma3, sma8) crossunderSignal = ta.crossunder(sma3, sma8) crossoverState = sma3 > sma8 crossunderState = sma3 < sma8 if strategy.position_size == 0 if crossoverState strategy.entry('Buy', strategy.long) entryPrice := close stopPrice := close - stopLoss * sma8[1] takeProfitPrice := close + takeProfit * sma8[1] stopLossPrice := stopPrice stopLossPrice if crossunderState strategy.entry('Sell', strategy.short) entryPrice := close stopPrice := close + stopLoss * sma8[1] takeProfitPrice := close - takeProfit * sma8[1] stopLossPrice := stopPrice stopLossPrice if strategy.position_size > 0 if (close > takeProfitPrice or close < stopLossPrice) and crossunderState strategy.close('Buy') entryPrice := 0.0 stopPrice := 0.0 takeProfitPrice := 0.0 stopLossPrice := 0.0 stopLossPrice else strategy.entry('Buy', strategy.long) entryPrice := close stopPrice := close - stopLoss * sma8[1] takeProfitPrice := close + takeProfit * sma8[1] stopLossPrice := stopPrice stopLossPrice if strategy.position_size < 0 if (close > takeProfitPrice or close < stopLossPrice) and crossoverState strategy.close('Sell') entryPrice := 0.0 stopPrice := 0.0 takeProfitPrice := 0.0 stopLossPrice := 0.0 stopLossPrice else strategy.entry('Sell', strategy.short) entryPrice := close stopPrice := close + stopLoss * sma8[1] takeProfitPrice := close - takeProfit * sma8[1] stopLossPrice := stopPrice stopLossPrice // Plot entry and exit points plotshape(strategy.position_size > 0 and crossoverSignal, 'Buy Entry', shape.triangleup, location.belowbar, color.new(color.green, 0), size=size.small) plotshape(strategy.position_size > 0 and (close >= takeProfitPrice or close <= stopLossPrice), 'Buy Exit', shape.triangledown, location.abovebar, color.new(color.red, 0), size=size.small) plotshape(strategy.position_size < 0 and crossunderSignal, 'Sell Entry', shape.triangledown, location.abovebar, color.new(color.red, 0), size=size.small) plotshape(strategy.position_size < 0 and (close >= takeProfitPrice or close <= stopLossPrice), 'Sell Exit', shape.triangleup, location.belowbar, color.new(color.green, 0), size=size.small)