Strategi Grid Purata Pergerakan DCA Pembalikan Dua Bawah


Tarikh penciptaan: 2024-02-20 11:09:33 Akhirnya diubah suai: 2024-02-20 11:09:33
Salin: 3 Bilangan klik: 839
1
fokus pada
1617
Pengikut

Strategi Grid Purata Pergerakan DCA Pembalikan Dua Bawah

Gambaran keseluruhan

Strategi grid DCA berlawanan garisan rata-rata DCA berlawanan garisan rata-rata dan strategi DCA mewujudkan grid secara beransur-ansur membina kedudukan. Ia menilai peluang berbalik berdasarkan bentuk berbalik garisan dua. Setelah mencetuskan bentuk berbalik, gunakan beberapa pesanan dengan harga yang berbeza, digabungkan dengan DCA untuk membina kedudukan grid secara beransur-ansur.

Prinsip Strategi

Strategi ini mula-mula menilai apakah K-line muncul di bawah dua harga penutupan yang sama secara berturut-turut, yang dikenali sebagai “double bottom”. Jika dua bahagian bawah terdeteksi, peluang untuk harga berbalik mungkin berlaku. Pada masa ini, strategi akan menetapkan beberapa pesanan harga terhad di dekat bahagian bawah, dengan harga yang dikira mengikut ATR dan kadar turun naik, membentuk kawasan grid. Ini mewujudkan kesan DCA, yang membolehkan pedagang untuk membina kedudukan secara beransur-ansur pada harga yang berbeza yang berbalik.

Khususnya, pertama-tama kira ATR untuk 14 baris K terkini melalui ta.atr, kemudian kira kadar turun naik harga untuk 5 baris K terkini, yang merupakan parameter utama yang digunakan untuk menentukan julat grid. Julat grid terbahagi kepada 4 titik harga, iaitu harga bawah + kadar turun naik, harga bawah + 0.75 kali kadar turun naik, dan seterusnya. Apabila tercetus syarat double bottom, gunakan rumus ini untuk menetapkan 4 pesanan harga terhad pada harga yang sesuai, dengan jumlah yang sama setiap pesanan.

Di samping itu, strategi juga menetapkan titik hentian dan titik berhenti. Harga hentian adalah harga terendah di bawah dua kali ganda - titik paling rendah, dan harga berhenti adalah lima kali ganda harga masuk + ATR. Kedua-dua harga akan dikemas kini secara langsung apabila kedudukan bukan 0.

Analisis kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Menggunakan penghakiman dua hala untuk menentukan masa berbalik, ia berkesan untuk mengelakkan penembusan palsu.
  2. Reka bentuk grid DCA membolehkan peniaga untuk membina kedudukan secara beransur-ansur dengan harga yang berbeza, mengurangkan kos kedudukan.
  3. ATR dan parameter kadar turun naik boleh secara dinamik menyesuaikan grid dan ruang hentian untuk menyesuaikan diri dengan perubahan pasaran.
  4. Mekanisme penangguhan kerugian automatik dapat mengawal kerugian tunggal dengan berkesan.

Analisis risiko

Risiko utama ialah:

  1. Harga mungkin tidak akan berbalik, dan akan terus jatuh ke bawah sokongan double bottom. Pada masa ini, stop loss akan dicetuskan dan menyebabkan kerugian. Anda boleh meningkatkan jarak stop loss dengan sewajarnya.
  2. Jarak grid DCA tidak ditetapkan dengan betul, kebanyakan delegasi tidak dapat berdagang. Anda boleh menguji parameter yang berbeza untuk memastikan kadar transaksi.
  3. Apabila pasaran bergolak, penutupan mungkin sering dicetuskan. Anda boleh mempertimbangkan untuk memperluaskan penutupan dengan tepat.

Arah pengoptimuman

Strategi ini juga boleh dioptimumkan dalam beberapa arah:

  1. Meningkatkan penghakiman trend, hanya dalam melihat lebih banyak trend yang melakukan operasi pembalikan, untuk mengelakkan kehilangan trend besar.
  2. Pertimbangkan untuk meningkatkan kedudukan tunggal pertama, kedudukan grid seterusnya beransur-ansur berkurangan, mengoptimumkan kecekapan penggunaan wang.
  3. Uji kombinasi parameter yang berbeza untuk mencari parameter terbaik. Anda juga boleh merancang parameter dinamik yang disesuaikan dengan pasaran dalam masa nyata.
  4. Pembelajaran mesin boleh diintegrasikan ke dalam platform lanjutan untuk mengoptimumkan parameter secara automatik.

ringkaskan

Strategi grid DCA berbalik rata-rata dua bahagian bawah menggunakan pelbagai kaedah teknikal seperti bentuk harga, penunjuk rata-rata, perdagangan grid. Ia mempunyai kelebihan seperti ketepatan masa penghakiman, kawalan kos, perlindungan penarikan balik.

Kod sumber strategi
/*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)