Strategi ini mengira purata bergerak dan kadar perubahan harga untuk menentukan sama ada keadaan semasa berada dalam trend menaik atau penurunan yang digabungkan dengan K-garis dalam tempoh tertentu, dan dengan itu pergi panjang atau pendek.
Strategi ini mula-mula mengira purata bergerak mudah a panjang l dan kadar perubahan harga r panjang l. Kemudian ia mengira perbezaan k antara harga K-garis semasa dan purata bergerak. Akhirnya, ia mengira jumlah jumlah k sepanjang s K-garis yang lalu.
Apabila jumlah > 0, ia menunjukkan aliran menaik semasa dan strategi akan pergi panjang. Apabila jumlah < 0, ia menunjukkan aliran menurun semasa dan strategi akan pergi pendek.
Selepas pergi panjang atau pendek, kedudukan akan dipegang sehingga trend berbalik (jumlah perubahan dari positif kepada negatif atau sebaliknya), maka kedudukan akan ditutup.
Kelebihan terbesar strategi ini ialah ia dapat menangkap trend dan sesuai untuk perdagangan trend.
Menggunakan purata bergerak untuk menentukan arah trend keseluruhan dapat menapis bunyi pasaran dengan berkesan dan mengunci trend utama.
Menggunakan penunjuk kadar perubahan harga untuk mengukur kekuatan momentum mengelakkan kehilangan momentum yang kuat.
Mengambil kira beberapa K-garis dalam tempoh boleh menentukan trend dengan lebih tepat dan mengelakkan ditipu oleh individu Ausreißer.
Selagi trend tetap tidak berubah, terus memegang kedudukan untuk memaksimumkan keuntungan dari pasaran trend.
Risiko utama strategi ini ialah:
Tidak dapat menentukan dengan tepat masa akhir trend, mungkin menghentikan kerugian lebih awal atau kehilangan beberapa keuntungan.
Tidak dapat mengawal secara berkesan saiz kerugian tunggal, kerugian mungkin besar dalam keadaan pasaran yang melampau.
Parameter strategi yang tidak betul boleh membawa kepada perdagangan yang terlalu kerap atau kehilangan beberapa peluang perdagangan.
Penyelenggaraan jangka panjang mungkin menghadapi risiko faedah dan margin semalam.
Untuk mengawal risiko, kita boleh menetapkan titik stop loss, perdagangan hanya produk yang sangat cair, mengoptimumkan parameter dan menggunakan leverage yang munasabah.
Aspek utama untuk mengoptimumkan strategi ini termasuk:
Uji purata bergerak dan kadar perubahan harga dengan panjang yang berbeza untuk mencari kombinasi parameter yang terbaik.
Cuba penunjuk lain seperti MACD untuk menentukan trend dengan lebih baik dan meningkatkan ketepatan.
Tambah mekanisme pengurusan kedudukan, seperti mengambil keuntungan selepas membuat beberapa keuntungan, untuk mengawal kerugian tunggal.
Memasukkan penunjuk turun naik untuk menetapkan berhenti dinamik untuk mengurangkan risiko dalam keadaan pasaran yang melampau.
Mengoptimumkan logik masuk dan keluar untuk menapis pecah palsu dan meningkatkan kecekapan perdagangan.
Logik keseluruhan strategi ini jelas dan mudah dilaksanakan. Dengan mengesan trend untuk perdagangan pegangan jangka panjang, kawalan penarikan agak munasabah. Ia sesuai untuk pelabur yang mencari pulangan yang stabil. Mengoptimumkan lagi stop loss dan pengurusan kedudukan dapat mengharapkan pulangan yang stabil jangka panjang yang baik.
/*backtest start: 2023-12-03 00:00:00 end: 2023-12-10 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("Indicator Integrator Strat",default_qty_type = strategy.percent_of_equity, default_qty_value = 100,currency="USD",initial_capital=662, overlay=false) l = input(defval=170,title="Length for indicator") s = input(title="Length of summation",defval=18) a= sma(close,l) r=roc(close,l) k=close-a sum = 0 for i = 0 to s sum := sum + k[i] //plot(a,color=yellow,linewidth=2,transp=0) //bc = iff( sum > 0, white, teal) //plot(sum,color=bc, transp=20, linewidth=3,style=columns) //plot(sma(sum,3),color=white) //hline(0) inpTakeProfit = input(defval = 0, title = "Take Profit", minval = 0) inpStopLoss = input(defval = 0, title = "Stop Loss", minval = 0) inpTrailStop = input(defval = 0, title = "Trailing Stop Loss", minval = 0) inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0) useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na ////buyEntry = crossover(source, lower) ////sellEntry = crossunder(source, upper) if sum>0 strategy.entry("BBandLE", strategy.long, oca_name="BollingerBands", comment="BBandLE") else strategy.cancel(id="BBandLE") if sum<0 strategy.entry("BBandSE", strategy.short, oca_name="BollingerBands", comment="BBandSE") else strategy.cancel(id="BBandSE") strategy.initial_capital = 50000 plot(strategy.equity-strategy.initial_capital-strategy.closedtrades*.25/2, title="equity", color=red, linewidth=2) hline(0) //longCondition = sum>0 //exitlong = sum<0 //shortCondition = sum<0 //exitshort = sum>0 //strategy.entry(id = "Long", long=true, when = longCondition) //strategy.close(id = "Long", when = exitlong) //strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=exitlong) //strategy.entry(id = "Short", long=false, when = shortCondition) //strategy.close(id = "Short", when = exitshort) //strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=exitshort)