Strategi ini menggunakan VWMA untuk menentukan arah trend dan menetapkan stop loss dengan ATR untuk mengikuti trend.
Gunakan VWMA untuk menentukan arah trend. pergi panjang apabila harga di atas VWMA, pergi pendek apabila harga di bawah VWMA.
Tambah penapis pengayun RSI untuk mengelakkan isyarat pecah palsu. Hanya mengambil isyarat panjang apabila RSI melebihi 30.
Gunakan ATR untuk mengira garis stop loss. panjang ATR ditetapkan sama dengan VWMA, pengganda adalah 3.5. kemas kini baris stop loss dalam masa nyata.
Pengganda ATR mengawal ketegangan garis stop loss. Pengganda yang lebih besar bermakna kemas kini yang kurang kerap, yang lebih baik untuk mengikuti trend.
Saiz kedudukan dikira berdasarkan ekuiti akaun dan peratusan stop loss.
Keluar dari kedudukan panjang apabila harga pecah di bawah garis stop loss.
Menggunakan VWMA untuk menentukan trend menangkap peluang trend secara berterusan.
Penapis RSI mengelakkan beberapa isyarat palsu.
Hentian trailing ATR mengikuti trend dan mengelakkan dihentikan oleh pembalikan.
Ukuran kedudukan berdasarkan ekuiti akaun dan stop loss memihak kepada pengurusan risiko.
Potensi kerugian pada titik perubahan trend.
Tetapan parameter ATR yang tidak betul membawa kepada garis stop loss yang terlalu ketat atau longgar.
Pembalikan trend yang cepat boleh menyebabkan kemas kini stop loss terlambat, meningkatkan kerugian.
Dalam persekitaran turun naik yang rendah, mengurangkan saiz kedudukan dan meningkatkan kekerapan kemas kini stop loss.
Uji kombinasi parameter VWMA yang berbeza untuk mencari parameter isyarat yang optimum.
Uji tetapan RSI lain seperti garis overbought/oversold.
Uji pengganda ATR untuk mencari keseimbangan optimum antara pengambilan dan keupayaan pengesanan.
Tambah penapis lain seperti MACD, KD untuk meningkatkan kualiti isyarat.
Mengoptimumkan saiz kedudukan dan peratusan stop loss berdasarkan turun naik pasaran.
Strategi ini mempunyai kecenderungan trend keseluruhan dan menangkap trend harga yang jelas dengan baik. Ia mempunyai kelebihan dalam penentuan trend, penapisan isyarat, penarikan stop loss dan lain-lain. Ia juga mempunyai risiko dalam pembalikan trend. Parameter penyesuaian halus dan saiz kedudukan boleh membawa kepada prestasi yang lebih baik.
/*backtest start: 2023-10-07 00:00:00 end: 2023-10-13 00:00:00 period: 1h basePeriod: 15m 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/ // © mohanee //@version=4 //strategy("", overlay=true) strategy(title="VWMA_withATRstops_strategy V2", overlay=true, pyramiding=1, default_qty_type=strategy.percent_of_equity, default_qty_value=20, initial_capital=10000, currency=currency.USD) //default_qty_value=10, default_qty_type=strategy.fixed, float xATRTrailingStop=na int pos=na vwmalength = input(33, title="VWMA Length", minval=1, maxval=365) //vwmalength2 = input(9, title="VWAM Short Term Length", minval=1, maxval=365) nATRPeriod = input(33, title="ATR length", minval=1, maxval=365) nATRMultip = input(3.5, title="ATR Multiplier") rsiofVwmaLength=input(14, title="RSI of VWMA Length") riskCapital = input(title="Risk % of capital", defval=10, minval=1) stopLoss=input(5,title="Stop Loss",minval=1) vwmaVal=vwma(close, vwmalength) //vwmaVal2=vwma(close, vwmalength2) //maVal=sma(close, vwmalength) plot(vwmaVal, color=color.orange, linewidth=2, title="VWMA") //plot(vwmaVal2, color=color.blue, title="VWMA Short Term") //plot(maVal, color=color.blue, title="MA") //rsi of vwma Longterm rsiofVwmaVal=rsi(vwmaVal,rsiofVwmaLength) xATR = atr(nATRPeriod) nLoss = nATRMultip * xATR xATRTrailingStop:= iff(close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), close - nLoss), iff(close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), close + nLoss), iff(close > nz(xATRTrailingStop[1], 0), close - nLoss, close + nLoss))) pos:= iff(close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0), 1, iff(close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0))) color1 = pos == -1 ? color.red: pos == 1 ? color.green : color.blue //plot(xATRTrailingStop, color=color1, title="ATR Trailing Stop") //Entry-- //Echeck how many units can be purchased based on risk manage ment and stop loss qty1 = (strategy.equity * riskCapital / 100 ) / (close*stopLoss/100) //check if cash is sufficient to buy qty1 , if capital not available use the available capital only qty1:= (qty1 * close >= strategy.equity ) ? (strategy.equity / close) : qty1 //Long Entry //strategy.entry(id="VWMA LE", long=true, qty=qty1, when= close >vwmaVal and open>vwmaVal and close>open and close > xATRTrailingStop and xATRTrailingStop> vwmaVal) strategy.entry(id="VWMA LE", long=true, qty=qty1, when= rsiofVwmaVal>=30 and close>open and close>vwmaVal and pos == 1 ) ///pos == 1 means ATRStop line is green //vwmaVal2>vwmaVal and plot(strategy.position_size>=1 ? xATRTrailingStop : na, color=color1, style=plot.style_linebr, title="ATR Trailing Stop") bgcolor(strategy.position_size>=1 ? color.blue : na ) //Exit strategy.close(id="VWMA LE", when= strategy.position_size>=1 and crossunder(close, xATRTrailingStop) ) //strategy.close(id="VWMA LE", when= strategy.position_size>=1 and close<vwmaVal and open<vwmaVal and close<open )