Strategi momentum tertanam dalam kitaran


Tarikh penciptaan: 2023-09-20 14:59:37 Akhirnya diubah suai: 2023-09-20 14:59:37
Salin: 1 Bilangan klik: 652
1
fokus pada
1617
Pengikut

Gambaran keseluruhan

Gagasan utama strategi ini adalah menggunakan bentuk garis K yang terdapat di antara kitaran untuk menentukan arah trend, dan menggunakannya sebagai isyarat permulaan. Apabila terdapat bentuk antara kitaran yang mengandungi garis K sebelumnya, kita dapat menyimpulkan bahawa masa ini adalah titik peralihan trend, pada masa ini kita boleh memilih untuk melakukan lebih banyak ketika menembusi titik tertinggi sebelum, atau kosong ketika menembusi titik rendah sebelum, dan menetapkan stop loss dan stop loss.

Prinsip Strategi

  1. Menentukan apakah terdapat bentuk K-garis antara tempoh yang tersirat. Logik penilaian khusus adalah: titik tertinggi K-garis semasa adalah lebih rendah daripada titik tertinggi K-garis sebelumnya, dan titik terendah K-garis semasa adalah lebih tinggi daripada titik terendah K-garis sebelumnya.

  2. Untuk menilai kenaikan atau penurunan pada baris K sebelumnya. Jika harga penutupan lebih tinggi daripada harga pembukaan, maka ia adalah kenaikan; jika harga penutupan lebih rendah daripada harga pembukaan, maka ia adalah penurunan.

  3. Jika garis K terdahulu adalah melonjak, dan terdapat bentuk antara kitaran yang tersirat, kita menetapkan pesanan berhenti membeli dalam 10% daripada titik tertinggi garis K terdahulu.

  4. Jika garis K terdahulu adalah penurunan dan terdapat bentuk antara kitaran tersirat, kita menetapkan pesanan berhenti menjual dalam 10% daripada titik rendah garis K terdahulu.

  5. Sebaik sahaja satu stop order dipicu untuk membentuk kedudukan, kita akan menetapkan satu stop loss dan satu stop stop. Jarak stop loss dan jarak stop stop adalah perkadaran dari amplitud K-line sebelumnya.

  6. Jika berlaku lagi, kita akan memberi keutamaan kepada kedudukan kosong dan kemudian menetapkan semula senarai baru.

Analisis kelebihan strategi

Strategi ini mempunyai kelebihan:

  1. Dengan menggunakan logik dalaman K, masa masuk adalah tepat. Bentuk yang tersirat di antara kitaran sering bermakna perubahan atau percepatan trend yang akan datang, yang memberi kita masa masuk yang lebih baik.

  2. Peraturan-peraturan strategi jelas dan mudah difahami, mudah untuk diamalkan.

  3. Mengambil kesempatan daripada titik tinggi dan rendah dalam kitaran sebelumnya untuk menetapkan kedudukan hentian kerugian, risiko boleh dikawal.

  4. Setiap kali muncul semula sesuai dengan bentuk, ia akan menetapkan semula senarai baru untuk mengikuti trend baru.

Analisis risiko strategi

Strategi ini mempunyai beberapa risiko:

  1. Bentuk dalaman di antara kitaran tidak semestinya menyebabkan trend berbalik atau meningkat, terdapat risiko isyarat palsu tertentu.

  2. Jarak hentian mungkin terlalu kecil dan tidak dapat menahan gegaran yang lebih besar.

  3. Jarak penangguhan mungkin terlalu besar dan tidak dapat menghasilkan keuntungan tepat pada masanya.

  4. Strategi ini lebih bergantung kepada trend dan mempunyai ruang yang terhad untuk menghasilkan keuntungan.

  5. Ia mungkin terlalu kerap dan kos yang tinggi.

Kaedah pencegahan:

  1. Isyarat pengesahan bentuk antara kitaran yang terkandung dalam penapis indikator lain boleh digabungkan, mengurangkan kadar isyarat palsu.

  2. Jarak hentian boleh dikurangkan dengan sewajarnya, tetapi tidak melebihi 50% daripada pelembutan K-line sebelumnya.

  3. Jarak penghentian boleh dikurangkan sebanyak 50% dari amplitud K-line sebelumnya.

  4. Mengoptimumkan pengurusan dana, mengurangkan kedudukan tunggal, dan bertindak balas terhadap keadaan pemulihan.

  5. Mempermudahkan syarat-syarat kemasukan dan mengurangkan jumlah transaksi.

Arah pengoptimuman strategi

Strategi ini boleh dioptimumkan dalam beberapa aspek:

  1. Menggabungkan petunjuk trend untuk menentukan arah trend, mengelakkan perdagangan yang kerap dalam penyusunan. Sebagai contoh, menyertai MACD untuk menentukan trend, hanya pertimbangkan untuk masuk apabila MACD sama arah.

  2. Mengoptimumkan strategi hentian kerugian, menggunakan hentian bergerak atau hentian perlindungan keuntungan, dan sebagainya, untuk membuat hentian lebih fleksibel.

  3. Uji seting peratusan stop-loss yang berbeza untuk mencari kombinasi parameter yang optimum.

  4. Bergabung dengan mekanisme kemasukan semula untuk menangkap semula trend selepas penarikan diri dari kerugian.

  5. Mengoptimumkan pengurusan kedudukan, menyesuaikan kedudukan tunggal mengikut tahap turun naik pasaran.

  6. Pengurusan dana yang optimum, seperti penggunaan dana tetap.

  7. Uji keserasian strategi ini dalam pelbagai jenis dan tempoh masa.

ringkaskan

Secara keseluruhannya, ini adalah strategi yang menggunakan titik-titik peralihan trend dalam bentuk penghakiman yang terkandung di antara kitaran, dan menetapkan susunan untuk menangkap trend pembalikan. Ia mempunyai kelebihan seperti masa masuk yang jelas, peraturan strategi yang mudah, risiko yang boleh dikawal, tetapi terdapat juga risiko isyarat palsu dan ruang pengoptimuman. Kita dapat meningkatkan kestabilan dan keuntungan strategi dengan menggabungkan indikator trend, mengoptimumkan stop loss, dan menyesuaikan kedudukan.

Kod sumber strategi
/*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)