Peningkatan purata bergerak dinamik Strategi Martin

Penulis:ChaoZhang, Tarikh: 2023-11-24 10:19:21
Tag:

img

Ringkasan

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.

Logika Strategi

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.

Analisis Kelebihan

Kelebihan strategi ini ialah:

  1. Mencatatkan trend jangka pendek menggunakan isyarat crossover purata bergerak, yang membolehkan perdagangan yang kerap.
  2. Mekanisme stop loss boleh mengawal kerugian tunggal.
  3. Menetapkan keuntungan boleh mengunci keuntungan separa.
  4. Arah perdagangan boleh dipilih untuk memenuhi tahap yang berbeza.
  5. Menampilkan titik masuk dan keluar pada carta untuk kejelasan.

Analisis Risiko

Risiko utama strategi ini ialah:

  1. Strategi MA jangka pendek cenderung untuk dipukul.
  2. Kemungkinan isyarat kelewatan dari purata bergerak.
  3. Kerugian berturut-turut boleh membawa kepada kerugian yang lebih teruk.
  4. Peratusan stop loss yang tidak betul mungkin terlalu longgar atau terlalu ketat.

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.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dari aspek berikut:

  1. Uji lebih banyak gabungan MA untuk mencari parameter optimum.
  2. Tambah penunjuk lain seperti RSI, KD dll untuk meningkatkan kualiti isyarat.
  3. Sesuaikan peratusan stop loss mengikut produk dan jangka masa yang berbeza.
  4. Tambah kawalan saiz kedudukan seperti kuantiti tetap atau modal tetap.
  5. Tambahkan peraturan perintah kemasukan.
  6. Mengoptimumkan dan menilai tahap stop loss atau mengambil keuntungan.

Ringkasan

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)



Lebih lanjut