Strategi Garis DCA Reversal Double Bottom Mean Reversal

Penulis:ChaoZhang, Tanggal: 2024-02-20 11:09:33
Tag:

img

Gambaran umum

Double Bottom Reversal Mean Reversion DCA Grid strategi terutama menerapkan harga reversi rata-rata dan strategi DCA untuk menerapkan pembangunan posisi bertahap.

Logika Strategi

Strategi ini pertama-tama memeriksa apakah ada dua harga penutupan berturut-turut yang sama dengan bagian bawah pada grafik lilin, yang disebut double bottom. Jika terdeteksi bagian bawah ganda, ia menganggap mungkin ada peluang pembalikan harga. Pada titik ini, strategi akan menetapkan beberapa pesanan batas di sekitar harga bawah. Harga pesanan ini akan dihitung berdasarkan ATR dan volatilitas, membentuk zona grid. Ini mencapai efek DCA dan memungkinkan pedagang untuk secara bertahap membangun posisi dengan harga yang berbeda setelah pembalikan.

Secara khusus, indikator ATR selama 14 candlestick terakhir pertama kali diperoleh melalui ta.atr. Kemudian volatilitas harga selama 5 candlestick terakhir dihitung. Mereka adalah parameter utama yang digunakan untuk menentukan zona grid. Grid berisi 4 tingkat harga - harga bawah + volatilitas, harga bawah + 0,75 * volatilitas, dan sebagainya. Setelah kondisi double bottom diaktifkan, 4 pesanan batas dengan ukuran yang sama akan ditempatkan sesuai dengan rumus ini. Pesanan yang belum terisi akan dibatalkan setelah beberapa candlestick.

Selain itu, strategi ini juga menetapkan harga stop loss dan harga take profit. Harga stop loss ditetapkan pada harga terendah dari double bottom dikurangi satu ukuran tick, sementara harga take profit ditetapkan pada harga masuk ditambah 5 kali ATR. Kedua harga ini akan diperbarui secara real time ketika ukuran posisi lebih besar dari 0.

Kekuatan

Keuntungan utama dari strategi ini adalah:

  1. Menggunakan bagian bawah ganda untuk menentukan pembalikan meningkatkan akurasi dan menghindari patah palsu.
  2. Grid DCA memungkinkan pedagang untuk secara bertahap membangun posisi pada harga yang berbeda, menurunkan basis biaya.
  3. Parameter ATR dan volatilitas dinamis menyesuaikan grid dan rentang keuntungan berdasarkan perubahan pasar.
  4. Auto stop loss secara efektif mengontrol jumlah kerugian per perdagangan.

Analisis Risiko

Risiko utama:

  1. Harga dapat menembus dukungan tanpa pembalikan, memicu stop loss dan kerugian.
  2. Pengaturan grid DCA yang tidak benar dapat menyebabkan tingkat pengisian rendah.
  3. Sering mengambil keuntungan dengan whipsaws di pasar yang tidak stabil.

Bidang Peningkatan

Beberapa bidang yang dapat ditingkatkan:

  1. Tambahkan penilaian tren, hanya perdagangan pembalikan di sepanjang tren utama untuk menghindari kerugian.
  2. Pertimbangkan ukuran yang lebih besar untuk entri pertama dan ukuran yang lebih kecil untuk entri grid untuk mengoptimalkan efisiensi penggunaan modal.
  3. Uji kombinasi parameter yang berbeda untuk menemukan parameter yang optimal atau desain logika penyesuaian dinamis.
  4. Mengintegrasikan pembelajaran mesin dalam platform canggih untuk mencapai optimasi parameter otomatis.

Ringkasan

Double Bottom Reversal Mean Reversion DCA Grid Strategy mengkonsolidasikan pola harga, teknik indikator dan perdagangan grid. Ini memiliki waktu yang akurat, dasar biaya yang dapat dikontrol dan perlindungan penarikan. Masih memiliki ruang untuk optimasi dan layak untuk diteliti. Dikonfigurasi dengan benar, dapat mencapai hasil yang baik di pasar yang terikat kisaran.


/*backtest
start: 2024-02-12 00:00:00
end: 2024-02-19 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © cherepanovvsb

//@version=5
strategy("Reversal (only long)", overlay=true, margin_long=1, margin_short=1,initial_capital=1000,commission_type = strategy.commission.percent,commission_value =0.1,currency='USD', process_orders_on_close=true)
plotshape(low == low[1], style=shape.triangleup, location=location.belowbar, color=color.blue, title="1 Setup")
plotshape(low == low[1] and low[1]==low[2], style=shape.triangleup, location=location.belowbar, color=color.red, title="Triple Setup")

ATRlenght   = input.int(title="ATR length for taking profit", defval=14, group="Strategy Settings")
rewardMultiplier= input.int(title="ATR multiplier", defval=5, group="Strategy Settings")
Volatility_length=input.int(title='Volatility length',defval=5,group="Strategy Settings")
Volatility_multiplier=input.float(title='Volatility multiplier',defval=0.5,step=0.1, group="Strategy Settings")
Candles_to_wait=input.int(title='How many candles to wait after placing orders grid?',defval=4,group="Strategy Settings")

// Get ATR
atr1 = ta.atr(ATRlenght)

//Get volatility values (not ATR) 
float result = 0
for i = 0 to Volatility_length
	result+=high[i]-low[i]
volatility=result*Volatility_multiplier/Volatility_length

//Validate entrance points
validlow =  low [2]== low[1] and not na(atr1) 
validlong = validlow and strategy.position_size == 0  and low[1]<low


// Calculate SL/TP
longStopPrice = low[1]-syminfo.mintick
longStopDistance = close - longStopPrice
longTargetPrice = close + (longStopDistance * rewardMultiplier)
strategy.initial_capital = 50000
//Assign all variables
var tradeStopPrice = 0.0
var tradeTargetPrice = 0.0
var point1=0.0
var point2=0.0
var point3=0.0
var point4=0.0
var contracts = int(strategy.initial_capital/close)/4
if validlong 
    tradeStopPrice := longStopPrice
    tradeTargetPrice := longTargetPrice
    point1:=low[1]+volatility
    point2:=low[1]+volatility*0.75
    point3:=low[1]+volatility*0.5
    point4:=low[1]+volatility*0.25

strategy.entry ("Long1", strategy.long,limit=point1,qty=contracts, when=validlong)
strategy.entry ("Long2", strategy.long,limit=point2,qty=contracts, when=validlong)
strategy.entry ("Long3", strategy.long,limit=point3,qty=contracts, when=validlong)
strategy.entry ("Long4", strategy.long,limit=point4,qty=contracts, when=validlong)

stopcondition = ta.barssince(validlong) == Candles_to_wait

strategy.cancel("Long1",when=stopcondition)
strategy.cancel("Long2",when=stopcondition)
strategy.cancel("Long3",when=stopcondition)
strategy.cancel("Long4",when=stopcondition)
    
strategy.exit(id="Long Exit", limit=tradeTargetPrice, stop=tradeStopPrice, when=strategy.position_size > 0)

plot(strategy.position_size != 0 or validlong ? tradeStopPrice : na, title="Trade Stop Price", color=color.red, style=plot.style_linebr, linewidth=3)
plot(strategy.position_size != 0 or validlong ? tradeTargetPrice : na, title="Trade Target Price", color=color.green, style=plot.style_linebr, linewidth=3)

plot(strategy.position_size != 0? point1 : na, title="Long1", color=color.green, style=plot.style_linebr, transp=0)
plot(strategy.position_size != 0? point2 : na, title="Long2", color=color.green, style=plot.style_linebr, transp=0)
plot(strategy.position_size != 0? point3 : na, title="Long3", color=color.green, style=plot.style_linebr, transp=0)
plot(strategy.position_size != 0? point4 : na, title="Long4", color=color.green, style=plot.style_linebr, transp=0)



Lebih banyak