Strategi kuantitatif VIP yang sangat solid


Tanggal Pembuatan: 2023-12-19 13:54:05 Akhirnya memodifikasi: 2023-12-19 13:54:05
menyalin: 1 Jumlah klik: 665
1
fokus pada
1621
Pengikut

Strategi kuantitatif VIP yang sangat solid

Ringkasan

Strategi ini, yang diberi nama “Strategis Kuantitatif VIP Yang Ketah” yang menggabungkan Modified WMA dan SSL Channel, membangun sebuah kerangka kerja yang stabil dan dapat diandalkan untuk transaksi kuantitatif.

Prinsip

Strategi ini menggabungkan dua indikator, salah satunya adalah indikator SMA William yang ditingkatkan, untuk menentukan arah tren dengan menghitung harga rata-rata untuk setiap garis K, dan kemudian menerapkan metode moving average indeks. Yang lain adalah indikator SSL channel, yang menggunakan harga tertinggi dan terendah untuk menentukan saluran harga, untuk menilai status tren saat ini.

Ketika indikator SMA William yang telah diperbaiki mengirimkan sinyal beli, yaitu Gold Fork, kami kemudian menggabungkan indikator saluran SSL untuk menilai apakah harga di dalam saluran sesuai, dan jika entitas K-line benar-benar berada di bawah batas bawah saluran, kami melakukan pembelian di titik itu.

Keunggulan

  1. Dengan menggabungkan dua indikator, sinyal beli lebih dapat diandalkan dan menghindari false breakout.
  2. Indikator SMA William yang diperbaiki dapat lebih akurat menentukan titik pergeseran tren.
  3. Indikator SSL channel dapat dengan jelas menentukan harga channel dan menghindari pembelian yang tinggi.
  4. Menggunakan metode moving average indeks, lebih baik untuk menilai tren jangka panjang.

Risiko dan Solusi

  1. Stop loss point dapat dipicu dengan mudah jika terjadi situasi yang ekstrem.
  2. Sistem moving average sensitif terhadap kebisingan pasar jangka pendek dan dapat menghasilkan sinyal yang salah. Parameter moving average dapat ditingkatkan sesuai dengan kebutuhan untuk meningkatkan efek penyaringan.
  3. Pengaturan parameter yang tidak tepat juga dapat mempengaruhi kinerja strategi. Anda dapat mengoptimalkan parameter dengan feedback untuk menemukan kombinasi parameter yang optimal.

Arah optimasi

  1. Anda dapat menguji berbagai jenis rata-rata bergerak, seperti EMA, VWMA, dan lain-lain, untuk mencari rata-rata yang paling cocok.
  2. Indikator volume lalu lintas dapat ditambahkan untuk menghindari sinyal di daerah dengan volume rendah.
  3. Anda dapat mencoba berbagai metode pencitraan saluran, seperti saluran Donchian, untuk membuat batas saluran lebih dapat diandalkan.
  4. Indikator tambahan seperti MACD, RSI, dan lain-lain dapat ditambahkan untuk lebih mengkonfirmasi waktu pembelian.

Meringkaskan

Strategi ini dengan kombinasi yang baik dari William SMA indikator dan SSL Channel indikator, membangun sebuah stabil, andal, dan kuantitatif trading framework. Ini memiliki kemampuan yang kuat untuk memfilter pasar kebisingan, tetapi juga menghindari risiko tinggi-level membeli. Jika parameter yang diatur dengan benar, dan menambahkan beberapa optimasi, itu akan menjadi strategi yang sangat Outperforming.

Kode 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)