Strategi Martin Retracement Moving Average adalah strategi perdagangan yang kerap yang menggabungkan crossover purata bergerak dan isyarat pullback untuk menjana isyarat masuk dan keluar. Strategi ini menggunakan crossover dan divergensi purata bergerak mudah 3 hari dan 8 hari untuk menangkap trend jangka pendek, dan mengamalkan berhenti dan mengambil keuntungan untuk mengawal risiko. Strategi ini membolehkan memilih arah perdagangan mengikut keadaan pasaran yang berbeza.
Strategi ini menggunakan purata bergerak mudah 3 hari dan 8 hari dan isyarat silang mereka. Isyarat panjang dihasilkan apabila MA 3 hari melintasi di atas MA 8 hari, dan isyarat pendek dihasilkan apabila MA 3 hari melintasi di bawah MA 8 hari. Isyarat panjang akan mencetuskan masuk panjang dan isyarat pendek akan mencetuskan masuk pendek.
Jika tidak ada kedudukan, strategi akan menentukan kemasukan berdasarkan isyarat silang. Selepas kemasukan, harga stop loss dan mengambil keuntungan akan dikira berdasarkan harga penutupan terakhir, peratusan kehilangan berhenti dan mengambil keuntungan peratusan. Sebagai contoh, apabila memegang kedudukan panjang, harga stop loss adalah harga penutupan terakhir dikurangkan peratusan kehilangan berhenti dikalikan dengan MA 8 hari; harga mengambil keuntungan adalah harga penutupan terkini ditambah peratusan mengambil keuntungan dikalikan dengan MA 8 hari.
Jika terdapat kedudukan panjang yang sedia ada, apabila harga mencetuskan mengambil keuntungan atau menghentikan kerugian, jika isyarat pulback MA 8 hari berlaku, kedudukan akan ditutup. Pada masa ini, harga stop loss dan harga mengambil keuntungan akan ditetapkan semula kepada 0. Logik untuk mengendalikan kedudukan pendek adalah sama.
Strategi ini juga memetakan titik masuk dan keluar pada carta. Sebagai contoh, entri panjang dipetakan sebagai segitiga ke atas dan keluar panjang sebagai segitiga ke bawah. Ini membantu menilai entri dan keluar secara visual.
Kelebihan strategi ini ialah:
Risiko utama strategi ini ialah:
Risiko boleh dikurangkan dengan memperluaskan peratusan stop loss yang munasabah, mengoptimumkan parameter MA, memperkenalkan keadaan penapis tambahan, dll. Juga, menilai toleransi peribadi dengan betul dan mengelakkan overtrading adalah penting.
Strategi ini boleh dioptimumkan dari aspek berikut:
Strategi Dynamic Moving Average Retracement Martin adalah strategi perdagangan jangka pendek. Ia menangkap trend jangka pendek yang terbentuk oleh persimpangan purata bergerak, dan menguruskan risiko dengan berhenti yang betul dan mengambil keuntungan. Sifat perdagangan yang kerap memberikannya peluang keuntungan serta risiko. Dengan mengoptimumkan parameter, menapis isyarat dan mengawal risiko, strategi ini dapat ditingkatkan lagi untuk lebih dipercayai.
/*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)