Strategi ini menggunakan gabungan purata RMA jangka panjang dan purata EMA jangka pendek untuk menilai trend, dan untuk mencapai trend tracking stop loss dengan penembusan titik tinggi dan rendah. Ia juga menetapkan ruang tanpa perdagangan untuk menyaring penembusan palsu.
Menggunakan RMA jangka panjang dan EMA jangka pendek untuk menentukan arah trend. EMA jangka pendek memakai RMA jangka panjang sebagai isyarat melihat ke atas dan memakai isyarat melihat ke atas.
Apabila harga menembusi harga tertinggi dalam jangka masa tertentu, berhenti dengan cara mengikuti harga tertinggi. Apabila harga menembusi harga terendah dalam jangka masa tertentu, berhenti dengan cara mengikuti harga terendah.
Tetapkan kawasan tanpa perdagangan, dan harga memasuki kawasan itu tidak membuka kedudukan, untuk mengelakkan pegangan. Julat kawasan ditentukan oleh garis rata-rata RMA dalam peratusan tertentu.
Tetapkan harga hentian selepas masuk dan keluar dari keuntungan dengan peratusan tertentu.
Kombinasi dua garis rata adalah tepat dan boleh dipercayai untuk menentukan arah trend.
Tracking Stop Mode membolehkan stop loss mengikuti trend.
Setting no-trading zone to effectively filter false breakout signals.
Tetapan Stop Stop membolehkan strategi untuk secara aktif melonggarkan kedudukan apabila ia mempunyai keuntungan yang mencukupi.
Garis dua rata mungkin mempunyai kelewatan semasa menghasilkan garpu mati, menyebabkan kerugian meningkat.
Tracking stop loss yang terlalu dekat dengan harga mungkin akan terganggu oleh bunyi awal.
Kawasan bebas dagangan yang terlalu luas menyebabkan peluang dagangan yang terlewatkan.
Tidak menghentikan kerugian dalam masa yang tepat boleh menyebabkan kerugian berkembang lebih jauh.
Penyelesaian:
Optimumkan parameter garis purata untuk mengurangkan kebarangkalian kelewatan.
Pelancaran titik henti yang sesuai untuk mengelakkan sensitiviti yang berlebihan.
Ujian menyesuaikan ruang tanpa transaksi untuk mengelakkan peluang yang terlewat.
Tambah kaedah lain untuk mengehadkan kerugian maksimum.
Uji kombinasi lain untuk mencari kombinasi yang lebih sesuai.
Menambah jurang harga, MACD dan lain-lain untuk meningkatkan kestabilan strategi.
Memperkenalkan parameter pengoptimuman algoritma pembelajaran mesin untuk menjadikan strategi lebih bijak.
Menggunakan indikator trend yang kuat dan lemah untuk mengelakkan dagangan berlawanan arah.
Mengoptimumkan strategi pengurusan wang dan meningkatkan peluang kejayaan strategi.
Strategi ini menggunakan arah trend yang ditentukan oleh garis keseimbangan ganda, dan mengunci keuntungan trend dengan penapisan di antara kawasan berhenti dan tidak berdagang dengan penyaringan di atas titik rendah. Rangka strategi mudah dan jelas, dapat diperluaskan, dapat dioptimumkan dengan menyesuaikan parameter, mengoptimumkan strategi berhenti dan berhenti, dan memperkenalkan petunjuk penilaian bantu lain, supaya strategi dapat berfungsi dengan baik di pelbagai pasaran.
/*backtest
start: 2023-08-24 00:00:00
end: 2023-09-12 00:00:00
period: 3h
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/
// © PatrickGwynBuckley
//@version=5
//var initialCapital = strategy.equity
strategy("PB Trend Scalper", "PB Trend Scalper", overlay = true)
shortma = input.int(55, title="quick ma's")
longma = input.int(100, title="long ma's")
ema55h = ta.ema(high, shortma)
ema55l = ta.ema(low, shortma)
ema200h = ta.rma(high, longma)
ema200l = ta.rma(low, longma)
stock = ta.stoch(close, high, low, 14)
lev = input.int(3, title="leverage")
hhVal = input.int(170, title="Highest high period")
llVal = input.int(170, title="Lowest low period")
hh = ta.highest(high, hhVal)
ll = ta.lowest(low, llVal)
//plot(stock)
plot(hh, color=color.new(color.green, 50))
plot(ll, color=color.new(color.red, 50))
var float downtrade = 0
p = input.float(3.0, title="no trade zone")
l = 3
emadistlong = ema200h + ((ema200h/100)*p)
emadistshort = ema200l - ((ema200h/100)*p)
plot(ema55h)
plot(ema55l)
ntl = plot(emadistlong, color=color.new(color.red, 10))
nts = plot(emadistshort, color=color.new(color.red, 10))
fill(ntl, nts, color=color.new(color.red, 90))
//position size
EntryPrice = close
//positionValue = initialCapital
positionSize = (strategy.equity*lev) / EntryPrice
//plot(strategy.equity)
//standard short
if ema55h < ema200l and close[2] < ema55l and close[1] > ema55l and high[1] < ema55h and close < ema55h and ema55h < emadistshort and strategy.opentrades == 0// and stock > 85
strategy.entry("short", strategy.short, qty=positionSize, comment="short")
downtrade := 1
//reset count
if (ta.crossunder(ema55h, ema200l)) and downtrade == 1
downtrade := 0
//standard long
if ema55l > ema200h and close[2] > ema55h and close[1] < ema55h and low[1] > ema55l and close > ema55l and ema55l > emadistlong and strategy.opentrades <= 1// and stock < 15
strategy.entry("long", strategy.long, qty=positionSize, comment="long")
downtrade := 0
//RESET COUNT ON MA CROSS
if (ta.crossover(ema55l, ema200h)) and downtrade == 0
downtrade := 1
longclose2 = low < ll[1] or low < emadistshort //close < open and open<open[1] and open[2] < open[3] and open[3] < emadistshort//close < ta.lowest(low, 20)//
shortclose2 = high > hh[1] or high>emadistlong//close > open and open>open[1] and open[2]>open[3] and open[3] > emadistlong//high > emadistlong//close > ta.highest(high, 20)//
sl = 3.5
tp = input.float(6.9, title="take profit %")
tp2 = 10
strategy.exit("long exit", "long", profit = (strategy.position_avg_price*(tp)))//, loss = (strategy.position_avg_price*(sl)))
strategy.close("long", when = longclose2, comment = "long exit")
//strategy.close("long", when = (downtrade == 1), comment = "long exit")
//strategy.exit("long exit", "long2", profit = (strategy.position_avg_price*(tp2)))//, loss = (strategy.position_avg_price*(sl)))
//strategy.close ("long2", when = longclose2, comment = "long exit")
//strategy.close("long", when = (downtrade == 1), comment = "long exit")
strategy.exit("short exit", "short", profit = (strategy.position_avg_price*(tp)))//, loss = (strategy.position_avg_price*(sl)))//, loss = 300)
strategy.close("short", when = shortclose2, comment = "short exit")
//strategy.close("short", when = (downtrade == 0), comment = "short exit")
//strategy.exit("short exit", "short2", profit = (strategy.position_avg_price*(tp2)))//, loss = (strategy.position_avg_price*(sl)))
//strategy.close ("short2", when = shortclose2, comment = "short exit")
//strategy.close("short2", when = (downtrade == 0), comment = "short exit")
//if (strategy.exit("long exit", "long"))
//downtrade := 1
//else
// downtrade := 0