Sumber daya yang dimuat... Pemuatan...

Rata-rata Gerak Dinamis Retracement Strategi Martin

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

img

Gambaran umum

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.

Logika Strategi

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.

Analisis Keuntungan

Keuntungan dari strategi ini adalah:

  1. Menangkap tren jangka pendek menggunakan sinyal crossover rata-rata bergerak, memungkinkan perdagangan yang sering.
  2. Mekanisme stop loss dapat mengendalikan kerugian tunggal.
  3. Mengambil keuntungan pengaturan dapat mengunci dalam keuntungan parsial.
  4. Arah perdagangan dapat dipilih sesuai dengan tahap yang berbeda.
  5. Menampilkan titik masuk dan keluar pada grafik untuk kejelasan.

Analisis Risiko

Risiko utama dari strategi ini adalah:

  1. Strategi MA jangka pendek cenderung dihancurkan.
  2. Kemungkinan sinyal yang tertinggal dari rata-rata bergerak.
  3. Kerugian berturut-turut dapat menyebabkan kerugian yang diperburuk.
  4. Persentase stop loss yang tidak benar mungkin terlalu longgar atau terlalu ketat.

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.

Arahan Optimasi

Strategi ini dapat dioptimalkan dari aspek berikut:

  1. Uji lebih banyak kombinasi MA untuk menemukan parameter optimal.
  2. Tambahkan indikator lain seperti RSI, KD dll untuk meningkatkan kualitas sinyal.
  3. Sesuaikan persentase stop loss sesuai dengan produk dan kerangka waktu yang berbeda.
  4. Tambahkan kontrol ukuran posisi seperti kuantitas tetap atau modal tetap.
  5. Tambahkan aturan urutan masuk.
  6. Mengoptimalkan dan mengevaluasi tingkat stop loss atau take profit.

Ringkasan

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)



Lebih banyak