Strategi hentikan kerugian berarah turun naik yang rendah


Tarikh penciptaan: 2023-12-18 12:00:07 Akhirnya diubah suai: 2023-12-18 12:00:07
Salin: 1 Bilangan klik: 573
1
fokus pada
1621
Pengikut

Strategi hentikan kerugian berarah turun naik yang rendah

Gambaran keseluruhan

Strategi ini dinamakan strategi stop loss berorientasikan pergerakan rendah. Strategi ini menggunakan crossover rata-rata bergerak sebagai isyarat pembelian, digabungkan dengan stop loss untuk mengunci keuntungan, dan digunakan untuk mata wang dalam julat turun naik yang rendah.

Prinsip Strategi

Strategi ini menggunakan purata bergerak dari 3 kitaran yang berbeza: 50 kitaran, 100 kitaran dan 200 kitaran. Logik pembelian adalah: apabila 50 kitaran melalui 100 kitaran, dan 100 kitaran melalui 200 kitaran, masuk lebih banyak.

Isyarat ini menunjukkan bahawa pasaran sedang menembusi dari kawasan turun naik yang rendah dan mula memasuki keadaan trend. Peningkatan 50 kitaran yang cepat mewakili kekuatan dalaman dalam jangka pendek yang tiba-tiba meningkat dan mula mendorong garis panjang tengah ke atas; 100 kitaran juga bermula ke atas untuk menunjukkan bahawa kekuatan pertengahan dimasukkan, trend yang stabil ke atas.

Selepas masuk, strategi menggunakan hentian hentian untuk mengunci keuntungan. Sasaran hentian adalah 8% dari harga masuk, garis hentian adalah 4% dari harga masuk. Tetapkan hentian lebih besar daripada hentian, yang membantu keuntungan melebihi kerugian, memastikan keuntungan keseluruhan strategi.

Analisis kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Ia juga boleh digunakan untuk mengesan peluang trend yang berlaku di kawasan rendah.
  2. Rata-rata bergerak mudah dikira dan diukur semula, logiknya mudah dan jelas.
  3. Tetapan Stop Loss adalah munasabah untuk mendapatkan keuntungan yang stabil.
  4. Parameter yang boleh dikonfigurasi adalah fleksibel dan mudah dioptimumkan.

Analisis risiko

Strategi ini mempunyai beberapa risiko:

  1. Isyarat penembusan yang salah boleh menyebabkan kerugian.
  2. “Saya tidak tahu apa yang akan berlaku selepas ini.
  3. Pengaturan parameter Stop Loss yang tidak betul boleh menjejaskan keuntungan.

Kaedah pencegahan:

  1. Digabungkan dengan indikator lain, isyarat penapisan memastikan keberkesanan penembusan.
  2. Memperolehi pengurangan jangka masa stop loss yang sesuai untuk mengurangkan kerugian akibat pembalikan.
  3. Uji pelbagai peratusan stop loss untuk mencari parameter yang optimum.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dengan:

  1. Uji parameter kitaran purata bergerak yang berbeza untuk mencari kombinasi terbaik.
  2. Menambah petunjuk seperti jumlah transaksi untuk mengesahkan trend pecah.
  3. Mengubah secara dinamik stop loss.
  4. Menggabungkan kaedah pembelajaran mesin untuk meramalkan kadar kejayaan penembusan.
  5. Sesuaikan parameter untuk keadaan pasaran dan mata wang yang berbeza.

Secara keseluruhannya, strategi ini menjalankan logik keseluruhan dengan jelas, dengan mengkonfigurasi kitaran purata bergerak dan stop loss stop loss untuk mendapatkan keuntungan rendah risiko, boleh digunakan secara fleksibel untuk perdagangan kuantitatif. Ia boleh dioptimumkan dari segi isyarat masuk, cara berhenti, dan sebagainya, dengan menyesuaikan parameter untuk mencari kesan terbaik.

Kod sumber strategi
/*backtest
start: 2023-12-10 00:00:00
end: 2023-12-17 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(shorttitle='Low volatility Buy w/ TP & SL (by Coinrule)',title='Low volatility Buy w/ TP & SL', overlay=true, initial_capital = 1000, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 10,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2019, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)

showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false       // create function "within window of time"

//MA inputs and calculations
movingaverage_fast = sma(close, input(50))
movingaverage_slow = sma(close, input(200))
movingaverage_normal= sma(close, input(100))



//Entry 
strategy.entry(id="long", long = true, when = movingaverage_slow > movingaverage_normal and movingaverage_fast > movingaverage_normal)

//Exit
longStopPrice  = strategy.position_avg_price * (1 - 0.04)
longTakeProfit = strategy.position_avg_price * (1 + 0.08)

strategy.close("long", when = close < longStopPrice or close > longTakeProfit and window())

//PLOT

plot(movingaverage_fast, color=color.orange, linewidth=2)
plot(movingaverage_slow, color=color.purple, linewidth=3)
plot(movingaverage_normal, color=color.blue, linewidth=2)