
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.
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.
Strategi ini mempunyai kelebihan berikut:
Strategi ini mempunyai beberapa risiko:
Kaedah pencegahan:
Strategi ini boleh dioptimumkan dengan:
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.
/*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)