Strategi kuantitatif VIP yang mantap


Tarikh penciptaan: 2023-12-19 13:54:05 Akhirnya diubah suai: 2023-12-19 13:54:05
Salin: 1 Bilangan klik: 665
1
fokus pada
1621
Pengikut

Strategi kuantitatif VIP yang mantap

Gambaran keseluruhan

Strategi ini dinamakan sebagai strategi kuantitatif VIP yang kukuh seperti batu, yang menggabungkan penunjuk SMA William yang diubahsuai dan penunjuk Saluran SSL untuk membina kerangka perdagangan kuantitatif yang stabil dan boleh dipercayai.

Prinsip

Strategi ini menggabungkan dua penunjuk, salah satunya adalah penunjuk SMA William yang diperbaiki, untuk menentukan arah trend dengan mengira harga purata bagi setiap garis K dan kemudian menggunakan kaedah purata bergerak indeks. Yang lain adalah penunjuk saluran SSL, yang menggunakan purata bergerak harga tertinggi dan terendah untuk menentukan saluran harga dan menilai keadaan trend semasa.

Apabila penunjuk William SMA yang telah diperbaiki menghantar isyarat beli, iaitu Gold Fork, kami kemudian menggabungkan penunjuk saluran SSL untuk menilai apakah harga dalam saluran sesuai, dan kami melakukan pembelian di titik itu jika entiti K-Line berada di bawah had bawah saluran sepenuhnya.

Kelebihan

  1. Dengan menggabungkan kedua-dua penunjuk, ia menjadikan isyarat beli lebih dipercayai dan mengelakkan penembusan palsu.
  2. Penunjuk SMA William yang diperbaharui dapat lebih tepat menentukan titik peralihan trend.
  3. Penunjuk saluran SSL dapat menentukan saluran harga dengan jelas dan mengelakkan pembelian yang tinggi.
  4. Menggunakan kaedah purata bergerak indeks, lebih baik untuk menilai trend jangka panjang.

Risiko dan penyelesaian

  1. Sekiranya berlaku keadaan yang teruk, titik penangguhan mungkin mudah dicetuskan. Anda boleh melepaskan julat penangguhan dengan sewajarnya.
  2. Sistem purata bergerak sensitif terhadap bunyi pasaran jangka pendek dan mungkin menghasilkan isyarat yang salah. Parameter purata boleh ditingkatkan dengan sewajarnya untuk meningkatkan kesan penapisan.
  3. Tetapan parameter yang tidak betul juga boleh menjejaskan prestasi strategi. Anda boleh mengoptimumkan parameter dengan mengkaji semula untuk mencari kombinasi parameter yang terbaik.

Arah pengoptimuman

  1. Anda boleh menguji pelbagai jenis purata bergerak seperti EMA, VWMA dan lain-lain untuk mencari rata-rata yang paling sesuai.
  2. Ia boleh digunakan untuk mengesan jumlah penumpang, mengelakkan penghantaran di kawasan yang rendah.
  3. Anda boleh mencuba kaedah melukis saluran yang berbeza, seperti saluran Donchian, dan lain-lain, untuk membuat sempadan saluran lebih dipercayai.
  4. Anda boleh menambah petunjuk lain seperti MACD, RSI dan lain-lain untuk mengesahkan masa pembelian.

ringkaskan

Strategi ini membina kerangka perdagangan kuantitatif yang stabil dan boleh dipercayai dengan menggabungkan penunjuk William SMA yang diperbaiki dan penunjuk SSL Channel. Ia mempunyai keupayaan yang kuat untuk menyaring bunyi pasaran dan juga mengelakkan risiko pembelian yang tinggi.

Kod sumber strategi
/*backtest
start: 2022-12-12 00:00:00
end: 2023-12-18 00:00:00
period: 1d
basePeriod: 1h
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/
// © Darshana_Alwis

//@version=5
strategy("VIP", overlay=true, initial_capital=1000,currency=currency.USD,default_qty_type=strategy.percent_of_equity,default_qty_value=100,pyramiding=0)
//SSS = Sultan+Saud Strategy

//The original idea of the code belonges to saudALThaidy
//The strategy code is basically made out of two other indicators, edited and combined by me.
// 1- NSDT HAMA Candles => https://www.tradingview.com/script/k7nrF2oI-NSDT-HAMA-Candles/
// 2- SSL Channel => https://www.tradingview.com/script/6y9SkpnV-SSL-Channel/


//MA INFO
WickColor = input.color(color.rgb(80, 80, 80, 100), title='Wick Color', tooltip='Suggest Full Transparency.')
LengthMA = input.int(100, minval=1, title='MA Line Length', inline='MA Info')
TakeProfit = input.float(1, minval=0, title='Take Profit Percentage', step=1)
UseStopLose = input.bool(false, title='Use Stop Percentage')
StopLose = input.float(1, minval=0, title='StopLose Percentage', step=1)

MASource = close

ma(source, length, type) =>
    type == "SMA" ? ta.sma(source, length) :
     type == "EMA" ? ta.ema(source, length) :
     type == "SMMA (RMA)" ? ta.rma(source, length) :
     type == "WMA" ? ta.wma(source, length) :
     type == "VWMA" ? ta.vwma(source, length) :
     na

ma1_color  = color.rgb(230, 172, 0)
ma1 = ma(high, 200, "SMA")

ma2_color  = color.red
ma2 = ma(low, 200, "SMA")

Hlv1 = float(na)
Hlv1 := close > ma1 ? 1 : close < ma2 ? -1 : Hlv1[1]
sslUp1   = Hlv1 < 0 ? ma2 : ma1
sslDown1 = Hlv1 < 0 ? ma1 : ma2

Color1 = Hlv1 == 1 ? ma1_color : ma2_color
fillColor1 = color.new(Color1, 90)

highLine1 = plot(sslUp1, title="UP", linewidth=2, color = Color1)
lowLine1 = plot(sslDown1, title="DOWN", linewidth=2, color = Color1)

OpenLength = 25
HighLength = 20
LowLength = 20
CloseLength = 20


     
SourceOpen = (open[1] + close[1]) / 2
SourceHigh = math.max(high, close)
SourceLow = math.min(low, close)
SourceClose = (open + high + low + close) / 4

funcCalcMA1(src1, len1) => ta.ema(src1, len1)
funcCalcOpen(SourceOpen, OpenLength) => ta.ema(SourceOpen, OpenLength)
funcCalcHigh(SourceHigh, HighLength) => ta.ema(SourceHigh, HighLength)
funcCalcLow(SourceLow, LowLength) => ta.ema(SourceLow, LowLength)
funcCalcClose(SourceClose, CloseLength) => ta.ema(SourceClose, CloseLength)

MA_1 = funcCalcMA1(MASource, LengthMA)

CandleOpen = funcCalcOpen(SourceOpen, OpenLength)
CandleHigh = funcCalcHigh(SourceHigh, HighLength)
CandleLow = funcCalcLow(SourceLow, LowLength)
CandleClose = funcCalcClose(SourceClose, CloseLength)

//PLOT CANDLES
//-------------------------------NSDT HAMA Candels
BodyColor = CandleOpen > CandleOpen[1] ? color.rgb(230, 172, 0) : color.red
barcolor(BodyColor)
plotcandle(CandleOpen, CandleHigh, CandleLow, CandleClose, color=BodyColor, title='HAMA Candles', wickcolor=WickColor, bordercolor=na)
plot(MA_1, title='MA Line', color=BodyColor, style=plot.style_line, linewidth=2)

//------------------------------SSL Channel


plot_buy = false
avg = ((high-low)/2)+low
LongCondition = (Hlv1 == 1 and Hlv1[1] == -1) and (BodyColor == color.rgb(230, 172, 0)) and (MA_1 < avg) and (CandleHigh < avg) and (strategy.opentrades == 0)
if LongCondition
    strategy.entry("BUY with VIP", strategy.long)
    plot_buy := true

base = strategy.opentrades.entry_price(0)
baseProfit = (base+((base/100)*TakeProfit))
baseLose = (base-((base/100)*StopLose))

strategy.exit("SELL with VIP","BUY with VIP",limit = baseProfit)
if UseStopLose and (close < MA_1)
    strategy.exit("SELL with VIP","BUY with VIP",stop = baseLose)
if not UseStopLose and (close < MA_1)
    strategy.exit("SELL with VIP","BUY with VIP", stop = close)
    
plotshape(plot_buy, title="Buy Label", text="Buy", location=location.belowbar, style=shape.labelup, size=size.tiny, color=Color1, textcolor=color.white)

fill(highLine1, lowLine1, color = fillColor1)