
Strategi ini menggunakan purata bergerak sebagai isyarat dagangan, digabungkan dengan nisbah hentian dan hentian yang disesuaikan oleh pengguna, untuk mewujudkan strategi hentian dan hentian yang sepenuhnya didorong oleh penunjuk. Strategi ini boleh masuk, hentikan dan hentikan secara automatik, tanpa campur tangan manusia, sesuai untuk perdagangan automatik.
Logik utama strategi ini ialah:
Menggunakan SMA 3 kitaran sebagai isyarat perdagangan, melakukan lebih banyak apabila SMA berada di atas 0, dan kosong apabila SMA berada di bawah 0;
Setelah login, pengguna boleh menyesuaikan kadar stop loss dan stop loss;
Berdasarkan harga kemasukan dan peratusan penangguhan yang ditetapkan oleh pengguna, garis penangguhan ditetapkan secara automatik;
Pendaftaran boleh dibuka pada tarikh yang ditetapkan oleh pengguna, dan ia boleh dibuka pada tarikh yang ditetapkan oleh pengguna.
Apabila harga menyentuh garisan stop loss, stop loss akan berlaku secara automatik; apabila harga menyentuh garisan stop loss, stop loss akan berlaku secara automatik;
Apabila anda telah selesai, anda boleh membatalkan pesanan henti rugi secara automatik.
Khususnya, strategi ini menggunakan fungsi sma untuk mengira purata bergerak 3 kitaran dan memberikan nilai kepada ma.
Kemudian long dihitung, yang bernilai ma ditambah lo peratusan dari ma. Lo adalah parameter yang boleh disesuaikan oleh pengguna, yang mewakili pergeseran garis masuk yang dilakukan secara berulang.
Apabila ma memakai 0, ia menunjukkan bahawa ia mula melakukan lebih banyak, masukkan lebih banyak melalui fungsi strategy.entry, harga masuk adalah long 。
Pada masa yang sama, menetapkan harga hentian dan hentian. Harga hentian adalah harga kemasukan tolak sl% dari harga kemasukan. Sl adalah parameter yang boleh disesuaikan oleh pengguna, yang mewakili kadar hentian. Harga hentian adalah harga kemasukan ditambah tp% dari harga kemasukan.
Tetapkan pesanan berhenti dan pesanan berhenti secara berasingan melalui fungsi strategy.entry. Apabila harga menyentuh garis berhenti, ia akan berhenti secara automatik; Apabila harga menyentuh garis berhenti, ia akan berhenti secara automatik.
Selepas kedudukan rata, perintah hentian kerugian dibatalkan secara automatik melalui fungsi strategi.cancel.
Strategi ini mempunyai kelebihan berikut:
Tingkat automasi yang tinggi, tidak memerlukan campur tangan manusia, sesuai untuk perdagangan automatik;
Rasio stop loss yang boleh disesuaikan untuk mengawal risiko;
Ini adalah satu-satunya cara untuk mengelakkan penembusan palsu.
“Saya tidak tahu apa-apa mengenai apa yang berlaku di sini, tetapi saya tidak tahu apa yang berlaku di sini.
Strategi ini adalah logik yang jelas dan mudah difahami.
Strategi ini juga mempunyai risiko:
Risiko penunjuk menghasilkan isyarat palsu. Penyelesaian adalah mengoptimumkan parameter untuk memastikan penunjuk stabil dan boleh dipercayai.
Rasio stop loss yang ditetapkan tidak munasabah, mungkin terlalu longgar atau terlalu radikal. Penyelesaian adalah dengan menyesuaikan parameter stop loss untuk pasaran yang berbeza.
Penembusan masuk mudah dirampas. Penyelesaian adalah dengan menggabungkan trend, indikator harga dan lain-lain untuk menyaring isyarat masuk.
Pengunduran mungkin lebih besar. Penyelesaian adalah menurunkan piawaian kedudukan, atau menjejaki hentian kerugian.
Strategi ini boleh dioptimumkan dalam beberapa aspek:
Mengoptimumkan parameter bagi purata bergerak untuk menjadikannya lebih dipercayai;
Memperbaiki syarat-syarat kemasukan, mengelakkan penembusan palsu, boleh menambah pengesahan kuantiti;
Mengoptimumkan strategi henti rugi, boleh menggunakan henti rugi dinamik, henti rugi pengesanan dan sebagainya;
Mengoptimumkan pengurusan dana, menyesuaikan piawaian kedudukan, dan mengurangkan risiko tunggal;
Mengoptimumkan penyaringan masa masuk, menggabungkan trend, menyokong tahap rintangan dan lain-lain.
Bergabung dengan Pyramiding untuk membuat strategi penambahan stok untuk meningkatkan keuntungan.
Pengoptimuman parameter untuk varieti tertentu.
Strategi ini berfungsi sebagai strategi stop loss yang didorong oleh indikator, dengan kelebihan automasi perdagangan, kawalan risiko, sesuai untuk perdagangan kuantitatif. Tetapi ada juga beberapa arah yang perlu dioptimumkan, seperti parameter indikator yang dioptimumkan, penapis masuk, strategi stop loss, pengurusan wang, dan sebagainya. Secara keseluruhan, strategi ini memberikan kerangka teknikal perdagangan yang mudah dan boleh dipercayai, yang boleh diperluas dan dioptimumkan untuk menjadikannya strategi yang lebih kuat.
/*backtest
start: 2023-01-01 00:00:00
end: 2023-11-09 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("example for panel signals", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)
//https://www.tradingview.com/script/m2a04xmb-noro-s-shiftma-tp-sl-strategy/
//Settings
lo = input(-5.0, title = "Long-line, %")
tp = input(5.0, title = "Take-profit")
sl = input(2.0, title = "Stop-loss")
//SMA
ma = sma(ohlc4, 3)
long = ma + ((ma / 100) * lo)
//Orders
avg = strategy.position_avg_price
if ma > 0
strategy.entry("Long", strategy.long, limit = long)
strategy.entry("Take", strategy.short, 0, limit = avg + ((avg / 100) * tp))
strategy.entry("Stop", strategy.short, 0, stop = avg - ((avg / 100) * sl))
//Cancel order
if strategy.position_size == 0
strategy.cancel("Take")
strategy.cancel("Stop")
//Lines
plot(long, offset = 1, color = color.black, transp = 0)
take = avg != 0 ? avg + ((avg / 100) * tp) : long + ((long / 100) * tp)
stop = avg != 0 ? avg - ((avg / 100) * sl) : long - ((long / 100) * sl)
takelinecolor = avg == avg[1] and avg != 0 ? color.lime : na
stoplinecolor = avg == avg[1] and avg != 0 ? color.red : na
plot(take, offset = 1, color = takelinecolor, linewidth = 3, transp = 0)
plot(stop, offset = 1, color = stoplinecolor, linewidth = 3, transp = 0)
//
disp_panels = input(true, title="Display info panels?")
h=high
info_label_off = input(20, title="Info panel offset")
info_label_size = input(size.large, options=[size.tiny, size.small, size.normal, size.large, size.huge], title="Info panel label size")
info_panel_x = timenow + round(change(time)*info_label_off)
info_panel_y = h
info_title= "-=-=-=-=- Info Panel -=-=-=-=-"
info_div = "\n\n------------------------------"
a = "\n\ Long : " + tostring(long)
b = "\n\ Stop loss : " + tostring(stop)
c = "\n\ TP : " + tostring(take)
// info_text = a+c+b
// info_panel = disp_panels ? label.new(x=info_panel_x, y=info_panel_y, text=info_text, xloc=xloc.bar_time, yloc=yloc.price, color=color.yellow, style=label.style_labelup, textcolor=color.black, size=info_label_size) : na
// label.delete(info_panel[1])