Strategi Momentum Antara Kitaran Terhad

Penulis:ChaoZhang, Tarikh: 2023-09-20 14:59:37
Tag:

Ringkasan

Idea teras strategi ini adalah untuk menentukan arah trend menggunakan corak lilin yang terkandung di antara kitaran dan menggunakannya sebagai isyarat kemasukan. Apabila corak yang terkandung di antara kitaran muncul yang mengandungi lilin sebelumnya, kita boleh menyimpulkan bahawa ini adalah titik di mana trend berbalik, pada titik ini kita boleh pergi lama pada pecah di atas tinggi sebelumnya atau pergi pendek pada pecah di bawah rendah sebelumnya, dengan tetapan stop loss dan mengambil keuntungan yang betul.

Logika Strategi

  1. Periksa sama ada corak yang terkandung di antara kitaran berlaku. Logik tertentu adalah: lilin semasa yang tinggi adalah lebih rendah daripada lilin sebelumnya yang tinggi, dan lilin semasa yang rendah adalah lebih tinggi daripada lilin sebelumnya yang rendah.

  2. Tentukan sama ada lilin sebelumnya adalah bullish atau bearish. Jika penutupan lebih tinggi daripada terbuka, ia adalah bullish. Jika penutupan lebih rendah daripada terbuka, ia adalah bearish.

  3. Jika lilin sebelumnya adalah bullish dan corak terhad berlaku, letakkan pesanan berhenti beli pada tinggi lilin sebelumnya ditambah 10% daripada julatnya.

  4. Jika lilin sebelum ini menurun dan corak yang terkandung berlaku, letakkan pesanan henti jual pada rendah lilin sebelumnya dikurangkan 10% daripada julatnya.

  5. Setelah perintah berhenti dipicu dan kedudukan dibuka, tetapkan stop loss dan ambil keuntungan. Jarak stop loss dan ambil keuntungan adalah peratusan tertentu dari julat lilin sebelumnya.

  6. Jika corak bar dalaman lain terbentuk, tutup kedudukan sedia ada terlebih dahulu dan kemudian letakkan pesanan baru yang menunggu.

Analisis Kelebihan

Kelebihan strategi ini termasuk:

  1. Ia menggunakan logik yang melekat pada candlesticks dan menyediakan masa kemasukan yang tepat. corak yang terkandung sering menyiratkan pembalikan trend yang akan datang atau pecutan.

  2. Peraturan mudah dan mudah diikuti untuk perdagangan sebenar.

  3. Stop loss dan mengambil keuntungan berdasarkan julat lilin sebelumnya membantu mengawal risiko.

  4. Perintah baru yang menunggu diletakkan setiap kali corak yang layak muncul, yang membolehkan kita mengikuti trend baru.

Analisis Risiko

Terdapat juga beberapa risiko:

  1. Corak yang terkandung tidak selalu mengakibatkan pembalikan trend atau percepatan.

  2. Jarak stop loss mungkin terlalu kecil untuk menahan turun naik yang besar di pasaran.

  3. Sasaran mengambil keuntungan mungkin terlalu luas, menghalang keuntungan tepat pada masanya.

  4. Strategi ini lebih bergantung pada pasaran yang sedang berkembang.

  5. Frekuensi perdagangan yang tinggi membawa kepada kos transaksi yang tinggi.

Penyelesaian:

  1. Tambah penunjuk lain untuk mengesahkan isyarat dan mengurangkan isyarat palsu.

  2. Memperluas stop loss sedikit tetapi tidak lebih daripada 50% daripada julat lilin sebelumnya.

  3. Memendekkan sasaran mengambil keuntungan kepada sekitar 50% daripada julat lilin sebelumnya.

  4. Mengoptimumkan pengurusan modal, mengurangkan saiz kedudukan individu untuk pelbagai pasaran.

  5. Melepaskan kriteria kemasukan untuk mengurangkan kekerapan perdagangan.

Arahan pengoptimuman

Beberapa cara untuk mengoptimumkan strategi:

  1. Tambah penunjuk trend seperti MACD untuk menentukan arah trend, mengelakkan whipsaws semasa penyatuan.

  2. Gunakan teknik stop loss yang lebih maju seperti stop trailing atau stop loss perlindungan keuntungan.

  3. Uji stop loss yang berbeza dan ambil nisbah keuntungan untuk mencari parameter yang optimum.

  4. Tambah logik masuk semula untuk menangkap trend sekali lagi selepas stop loss.

  5. Mengoptimumkan saiz kedudukan berdasarkan turun naik pasaran.

  6. Mengoptimumkan pengurusan modal, seperti saiz kedudukan pecahan tetap.

  7. Uji strategi pada produk dan jangka masa yang berbeza.

Kesimpulan

Ringkasnya, ini adalah strategi yang menggunakan corak yang terkandung di antara kitaran untuk menentukan titik perubahan trend dan meletakkan pesanan menunggu untuk menangkap pembalikan trend. Ia mempunyai kelebihan isyarat kemasukan yang jelas, peraturan mudah, dan risiko yang boleh dikawal, tetapi juga mempunyai beberapa risiko isyarat palsu dan ruang untuk pengoptimuman. Kita boleh meningkatkan kestabilan dan keuntungan dengan menggabungkan penapis trend, mengoptimumkan berhenti, menyesuaikan saiz kedudukan dan lain-lain. Ia lebih sesuai untuk pasaran trend, dan perlu dioptimumkan dan diuji untuk keadaan pasaran yang berbeza sebelum penggunaan sebenar untuk memaksimumkan keberkesanannya.


/*backtest
start: 2023-01-01 00:00:00
end: 2023-03-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3

// Inside Bar Momentum Strategy
// As defined on Babypips.com
// https://www.babypips.com/trading/forex-inside-bar-20170113

// strategy("Babypips: Inside Bar Momentum Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=5)

From_Year  = input(defval = 2018, title = "From Year")
From_Month = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
From_Day   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
To_Year    = input(defval = 9999, title = "To Year")
To_Month   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
To_Day     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
Start  = timestamp(From_Year, From_Month, From_Day, 00, 00)  // backtest start window
Finish = timestamp(To_Year, To_Month, To_Day, 23, 59)        // backtest finish window
Window = true

Stop_Buy_Perc  = input(10, "Stop Buy Order Percentage From Previous Candle's Range")/100
Stop_Loss_Perc = input(20, "Stop Loss Distance from High/Low of Previous Candle")/100
Take_Prof_Perc = input(80, "Take Profit Distance from High/Low of Previous Candle")/100

Risk = input(2, "Percentage Of EQUITY to risk per trade", step=0.1, minval=0, maxval=100)/100

Inside_Bar = high[1] > high[0] and low[1] < low[0]
Prev_Range = high[1] - low[1]
Bullish = open[1] < close[1]
Bearish = open[1] > close[1]

// Get Key Levels 
Long_Stop_Buy_Level   = high[1] + (Prev_Range * Stop_Buy_Perc)
Short_Stop_Buy_Level  = low[1]  - (Prev_Range * Stop_Buy_Perc)
Long_Stop_Loss_Level  = high[1] - (Prev_Range * Stop_Loss_Perc)
Short_Stop_Loss_Level = low[1]  + (Prev_Range * Stop_Loss_Perc)
Long_Take_Prof_Level  = high[1] + (Prev_Range * Take_Prof_Perc)
Short_Take_Prof_Level = low[1]  - (Prev_Range * Take_Prof_Perc)

// Position Sizing
long_qty = floor((strategy.equity * Risk) / (Long_Stop_Buy_Level - Long_Stop_Loss_Level))
short_qty = floor((strategy.equity * Risk) / (Short_Stop_Loss_Level - Short_Stop_Buy_Level))

// -------------------------- LONG CONDITIONS --------------------------------//
// The first candlestick must be bullish (green or white) and if the second 
// candlestick is completely contained by the first, set a buy stop order at 
// the first candle’s high plus 10% of its range (high minus low).

// Place the stop loss at the first candle’s high minus 20% of its range 
// and set the target at the first candle’s high plus 80% of its range

// If another inside bar pattern forms, the current position should be closed 
// or the pending buy/sell order must be canceled and entry orders must be 
// updated to the latest candles.

Long_Condition = Window and Inside_Bar and Bullish
if (Long_Condition)
    // Incase we still have a buy stop order in the market
    strategy.cancel_all()
    // Close any existing positions according to the rules
    strategy.close_all()
    strategy.entry("Bullish IB", strategy.long, stop=Long_Stop_Buy_Level)
    strategy.exit("Bullish Exit","Bullish IB", stop=Long_Stop_Loss_Level, limit=Long_Take_Prof_Level)
    
// -------------------------- SHORT CONDITIONS -------------------------------//
// The first candlestick must be bearish (red or black) and if the second 
// candlestick is completely contained by the first, set a sell stop order at 
// the first candle’s low minus 10% of its range (high minus low).

// Place the stop loss at the first candle’s low plus 20% of its range and 
// set the target at the first candle’s low minus 80% of its range.

// If another inside bar pattern forms, the current position should be closed 
// or the pending buy/sell order must be canceled and entry orders must be 
// updated to the latest candles.

Short_Condition = Window and Inside_Bar and Bearish
if (Short_Condition)
    // Incase we still have a buy stop order in the market
    strategy.cancel_all()
    // Close any existing positions according to the rules
    strategy.close_all()
    strategy.entry("Bearish IB", strategy.short, stop=Short_Stop_Buy_Level)
    strategy.exit("Bearish Exit","Bearish IB", stop=Short_Stop_Loss_Level, limit=Short_Take_Prof_Level)
    
// ----------------------------- PLOTTING ------------------------------------//
plotshape(Inside_Bar, style=shape.arrowdown, location=location.abovebar, color=purple)


Lebih lanjut