
Strategi ini dinamakan sebagai Mean Reversion Reverse Strategy Based on Moving Average, idea utamanya adalah membeli selepas jatuh ke bawah garis rata-rata kritikal, dan berhenti setelah mencapai keuntungan sasaran yang ditetapkan.
Prinsip utama strategi ini adalah menggunakan pulangan garis purata jangka pendek untuk menangkap peluang rebound dalam keadaan penutupan. Khususnya, apabila harga jatuh ke bawah rata-rata jangka panjang (seperti garis 20 hari, garis 50 hari, dan lain-lain) selepas menunjukkan tanda-tanda penurunan yang kuat, harga sering menghasilkan rebound tertentu kerana ciri-ciri reversi mean pergerakan pasaran.
Logik pembelian khusus strategi ini adalah: Beli satu tangan selepas harga jatuh ke bawah garis 20 hari, pasang satu tangan selepas jatuh ke bawah garis 50 hari, terus pasang satu tangan selepas jatuh ke bawah garis 100 hari, turun ke bawah garis 200 hari maksimum pasang satu tangan, lakukan 4 tangan tambahan. Setelah mencapai sasaran berhenti yang telah ditetapkan.
Strategi ini secara keseluruhannya adalah strategi perdagangan garis lurus yang lebih klasik dan umum. Ia menggunakan ciri-ciri smooting garis lurus dengan betul, sambil menggabungkan beberapa garis lurus untuk mengenal pasti masa membeli dalam jangka pendek. Ia mengawal risiko dengan membangunkan simpanan secara berturut-turut dan berhenti tepat pada masanya. Tetapi tindak balasnya terhadap peristiwa kejutan pasaran seperti berita dasar utama mungkin lebih pasif, yang merupakan arah yang dapat terus dioptimumkan. Secara keseluruhannya, dengan peningkatan yang sesuai dalam pengoptimuman parameter dan kawalan risiko, strategi ini dapat memperoleh keuntungan tambahan yang stabil.
/*backtest
start: 2023-12-13 00:00:00
end: 2023-12-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA_zorba1", shorttitle="zorba_ema", overlay=true)
// Input parameters
qt1 = input.int(5, title="Quantity 1", minval=1)
qt2 = input.int(10, title="Quantity 2", minval=1)
qt3 = input.int(15, title="Quantity 3", minval=1)
qt4 = input.int(20, title="Quantity 4", minval=1)
ema10 = ta.ema(close, 10)
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema100 = ta.ema(close, 100)
ema200 = ta.ema(close, 200)
// Date range filter
start_date = timestamp(year=2021, month=1, day=1)
end_date = timestamp(year=2024, month=10, day=27)
in_date_range = true
// Profit condition
profit_percentage = input(1, title="Profit Percentage") // Adjust this value as needed
// Pyramiding setting
pyramiding = input.int(2, title="Pyramiding", minval=1, maxval=10)
// Buy conditions
buy_condition_1 = in_date_range and close < ema20 and close > ema50 and close < open and close < low[1]
buy_condition_2 = in_date_range and close < ema50 and close > ema100 and close < open and close < low[1]
buy_condition_3 = in_date_range and close < ema100 and close > ema200 and close < open and close < low[1]
buy_condition_4 = in_date_range and close < ema200 and close < open and close < low[1]
// Exit conditions
profit_condition = strategy.position_avg_price * (1 + profit_percentage / 100) <= close
exit_condition_1 = in_date_range and (close > ema10 and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and profit_condition and close < low[1] and close < low[2]
exit_condition_2 = in_date_range and (close < ema10 and close[1] > ema10 and close < close[1] and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and profit_condition and close < low[1] and close < low[2]
// Exit condition for when today's close is less than the previous day's low
//exit_condition_3 = close < low[1]
// Strategy logic
strategy.entry("Buy1", strategy.long, qty=qt1 * pyramiding, when=buy_condition_1)
strategy.entry("Buy2", strategy.long, qty=qt2 * pyramiding, when=buy_condition_2)
strategy.entry("Buy3", strategy.long, qty=qt3 * pyramiding, when=buy_condition_3)
strategy.entry("Buy4", strategy.long, qty=qt4 * pyramiding, when=buy_condition_4)
strategy.close("Buy1", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy2", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy3", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy4", when=exit_condition_1 or exit_condition_2)