Strategi Grid DCA Peralihan Rendah Berganda

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

img

Ringkasan

Strategi DCA Grid Reversal Mean Reversal Double Bottom terutama menggunakan harga pembalikan purata dan strategi DCA untuk melaksanakan pembinaan kedudukan secara beransur-ansur. Ia menentukan peluang pembalikan berdasarkan corak pembalikan bawah berganda. Setelah corak pembalikan dicetuskan, ia menggunakan beberapa pesanan had pada harga yang berbeza digabungkan dengan DCA untuk menubuhkan kedudukan grid beransur-ansur.

Logika Strategi

Strategi ini pertama-tama memeriksa sama ada terdapat dua harga penutupan berturut-turut yang sama dengan bahagian bawah pada carta lilin, yang dipanggil double bottom. Jika bahagian bawah berganda dikesan, ia menganggap mungkin terdapat peluang pembalikan harga. Pada ketika ini, strategi akan menetapkan beberapa pesanan had di sekitar harga bawah. Harga pesanan ini akan dikira berdasarkan ATR dan turun naik, membentuk zon grid. Ini mencapai kesan DCA dan membolehkan peniaga secara beransur-ansur membina kedudukan pada harga yang berbeza selepas pembalikan.

Secara khusus, penunjuk ATR ke atas 14 candlestick baru-baru ini pertama kali diperoleh melalui ta.atr. Kemudian turun naik harga ke atas 5 candlestick baru-baru ini dikira. Mereka adalah parameter utama yang digunakan untuk menentukan zon grid. Grid ini mengandungi 4 tahap harga - harga bawah + turun naik, harga bawah + 0.75 * turun naik, dan sebagainya. Setelah keadaan bawah berganda diaktifkan, 4 pesanan had dengan saiz yang sama akan diletakkan mengikut formula ini. Perintah yang belum diisi akan dibatalkan selepas beberapa candlestick.

Di samping itu, strategi ini juga menetapkan harga stop loss dan harga mengambil keuntungan. Harga stop loss ditetapkan pada harga terendah bahagian bawah berganda dikurangkan satu saiz tik, sementara harga mengambil keuntungan ditetapkan pada harga masuk ditambah 5 kali ATR. Kedua-dua harga ini akan dikemas kini dalam masa nyata apabila saiz kedudukan lebih besar daripada 0.

Kelebihan

Kelebihan utama strategi ini ialah:

  1. Menggunakan bahagian bawah berganda untuk menentukan pembalikan meningkatkan ketepatan dan mengelakkan patah palsu.
  2. Grid DCA membolehkan peniaga secara beransur-ansur membina kedudukan pada harga yang berbeza, menurunkan asas kos.
  3. ATR dinamik dan parameter turun naik menyesuaikan grid dan julat keuntungan berdasarkan perubahan pasaran.
  4. Auto stop loss secara berkesan mengawal jumlah kerugian setiap perdagangan.

Analisis Risiko

Risiko utama:

  1. Harga boleh menembusi sokongan tanpa pembalikan, mencetuskan stop loss dan kerugian.
  2. Tetapan grid DCA yang tidak betul boleh menyebabkan kadar pengisian rendah. Uji parameter yang berbeza untuk memastikan kadar pengisian.
  3. Sering mengambil keuntungan dengan whipsaws di pasaran yang tidak menentu.

Kawasan Peningkatan

Beberapa bidang yang boleh diperbaiki:

  1. Tambah penilaian trend, hanya perdagangan pembalikan di sepanjang trend utama untuk mengelakkan kerugian.
  2. Pertimbangkan saiz yang lebih besar untuk entri pertama dan saiz yang lebih kecil untuk entri grid untuk mengoptimumkan kecekapan penggunaan modal.
  3. Uji kombinasi parameter yang berbeza untuk mencari parameter yang optimum atau reka bentuk logik penyesuaian dinamik.
  4. Mengintegrasikan pembelajaran mesin dalam platform lanjutan untuk mencapai pengoptimuman parameter automatik.

Ringkasan

Strategi Grid Double Bottom Reversal Mean Reversion DCA menyatukan corak harga, teknik penunjuk dan perdagangan grid. Ia mempunyai masa yang tepat, asas kos yang boleh dikawal dan perlindungan penarikan. Masih ada ruang untuk pengoptimuman dan bernilai penyelidikan.


/*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 lanjut