Strategi Mengekor Henti Kerugian Dinamik


Tarikh penciptaan: 2024-01-03 16:15:29 Akhirnya diubah suai: 2024-01-03 16:15:29
Salin: 0 Bilangan klik: 596
1
fokus pada
1617
Pengikut

Strategi Mengekor Henti Kerugian Dinamik

Gambaran keseluruhan

Strategi ini menggunakan petunjuk Stoch untuk membuat keputusan isyarat masuk, dan akan menjejaki harga yang tinggi atau rendah secara langsung setelah masuk, sehingga secara dinamik menyesuaikan titik hentian. Pada masa yang sama, strategi ini juga akan menghantar maklumat mengenai pengubahsuaian hentian ke MT4 / MT5 melalui fungsi peringatan, untuk menyesuaikan kedudukan dalam perdagangan sebenar dalam masa nyata.

Prinsip Strategi

  1. Strategi ini berdasarkan pada indikator Stoch yang menghasilkan isyarat beli dan jual, apabila garis K Stoch dari arah bawah menembusi garis D menghasilkan isyarat beli; apabila garis K Stoch dari arah atas menembusi garis D menghasilkan isyarat jual.

  2. Selepas masuk, strategi akan menjejaki harga terendah terkini dan harga tertinggi terkini dalam masa nyata, sebagai stop loss yang dinamik. Khususnya, untuk membuat banyak pesanan, ia akan menjejaki harga terendah terkini sebagai stop loss; untuk membuat pesanan, ia akan menjejaki harga tertinggi terkini sebagai stop loss.

  3. Apabila perubahan dalam paras penutupan dikesan, strategi akan menghasilkan arahan penutupan yang diubah melalui fungsi amaran dan dihantar ke MT4 / MT5 untuk menyesuaikan paras penutupan dalam perdagangan sebenar dalam masa nyata.

  4. Strategi ini menyokong kawalan manual untuk mengaktifkan atau tidak mengaktifkan mekanisme stop loss dinamik. Apabila ia diaktifkan, anda boleh menyesuaikan harga pengesanan stop loss dalam masa nyata mengikut turun naik pasaran.

Analisis kelebihan

  1. Menggunakan mekanisme hentian pelacakan dinamik, anda boleh menyesuaikan titik hentian dengan fleksibel mengikut turun naik pasaran, untuk mencapai pelacakan hentian, dan mengawal risiko dengan berkesan.

  2. Dengan menggunakan fungsi alert, maklumat penyesuaian kerugian berhenti boleh dihantar ke MT4 / MT5 dalam masa nyata, untuk pengurusan automatik, tanpa campur tangan manusia.

  3. Maklumat penyesuaian hentian kerugian ditandakan secara intuitif pada grafik untuk memudahkan melihat dan mengesahkan kesan pengesanan hentian kerugian.

  4. Menyokong kawalan manual untuk mengaktifkan mekanisme pengesanan kerugian, fleksibel untuk menyesuaikan diri dengan keadaan pasaran yang berbeza.

  5. Gabungan dengan penentuan masa dengan penunjuk Stoch, penyaringan penembusan palsu yang berkesan dapat meningkatkan kestabilan strategi.

Analisis risiko

  1. Indeks Stoch mungkin mempunyai isyarat silang yang kerap, membawa risiko lebih banyak operasi yang tidak berkesan. Parameter boleh disesuaikan dengan betul untuk memfilter isyarat.

  2. Dalam keadaan yang melampau, halangan boleh ditembusi dan risiko kerugian besar tidak dapat dielakkan sepenuhnya.

  3. alert sambungan mungkin mengalami gangguan, kelewatan, dan lain-lain masalah, tidak dapat memberi maklum balas dalam masa nyata dan perlu melakukan pengendalian kesalahan.

  4. Tracking stop loss secara dinamik memerlukan penyesuaian yang agak padat, yang mungkin membawa lebih banyak kos transaksi. Perlu seimbang dengan kos.

Arah pengoptimuman

  1. Anda boleh menguji kombinasi parameter yang berbeza untuk mengoptimumkan metrik Stoch untuk kualiti isyarat dan kesan strategi yang lebih baik.

  2. Ia boleh digabungkan dengan isyarat penapisan indikator lain atau menentukan amplitudo penyesuaian, mengoptimumkan mekanisme penangguhan kerugian untuk meningkatkan kestabilan strategi.

  3. Algoritma pengesanan yang berbeza boleh dikaji untuk memastikan kesan penghentian kerugian sambil mengurangkan kekerapan penyesuaian.

  4. Anda boleh mengoptimumkan cara anda berhubung dengan MT4/MT5 untuk memastikan alert tepat pada masanya dan mengurangkan masalah kelewatan.

  5. Ia boleh memperkenalkan mod penutupan automatik dan beralih mod manual, menggunakan mekanisme penutupan yang berbeza untuk keadaan pasaran yang berbeza.

ringkaskan

Strategi ini pertama-tama berdasarkan petunjuk Stoch untuk menentukan masa pembelian dan penjualan, kemudian mengikuti pergerakan harga dalam masa nyata untuk menyesuaikan titik-titik berhenti, dan menghantar maklumat penyesuaian secara automatik melalui arahan alert. Mekanisme berhenti-rugi dinamik ini dapat menguruskan risiko kedudukan secara aktif mengikut perubahan pasaran, dan mengurangkan intervensi buatan untuk meningkatkan kecekapan.

Kod sumber strategi
/*backtest
start: 2022-12-27 00:00:00
end: 2024-01-02 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/
// © Peter_O

//@version=4
strategy(title="Moving Stop-Loss mechanism", overlay=true)

// This script was created for educational purposes only and it is a spin-off of my previous script:
// https://www.tradingview.com/script/9MJO3AgE-TradingView-Alerts-to-MT4-MT5-dynamic-variables-NON-REPAINTING/
// This spin-off adds very often requested Moving Stop-Loss Mechanism - the logic here moves the stop-loss each time 
// a new pivot is detected.
//
// Last lines of the script include alert() function calls, with a syntax compatible with TradingConnector
// for execution in Forex/indices/commodities/crypto markets via MetaTrader.
// Please note that "tradeid=" variable must be passed with each alert, so that MetaTrader knows which
// trade to modify.

TakeProfitLevel=input(400)

// **** Entries logic, based on Stoch **** {
periodK = 13 //input(13, title="K", minval=1)
periodD = 3 //input(3, title="D", minval=1)
smoothK = 4 //input(4, title="Smooth", minval=1)
k = sma(stoch(close, high, low, periodK), smoothK)
d = sma(k, periodD)

GoLong=crossover(k,d) and k<80
GoShort=crossunder(k,d) and k>20
// } End of entries logic

// **** Pivot-points and stop-loss logic **** {
piv_high = pivothigh(high,1,1)
piv_low = pivotlow(low,1,1)
var float stoploss_long=low
var float stoploss_short=high

pl=valuewhen(piv_low,piv_low,0)
ph=valuewhen(piv_high,piv_high,0)

if GoLong 
    stoploss_long := low<pl ? low : pl
if GoShort 
    stoploss_short := high>ph ? high : ph

plot(stoploss_long, color=color.red, title="stoploss_long")
plot(stoploss_short, color=color.lime, title="stoploss_short")

// Stop-Loss Updating mechanism
enable_stoploss_mechanism=input(true, title="Enable Stoploss Modification Mechanism")
UpdateLongStopLoss = strategy.position_size>0 and strategy.position_size[1]>0 and piv_low and pl!=stoploss_long and not GoLong and enable_stoploss_mechanism
UpdateShortStopLoss = strategy.position_size<0 and strategy.position_size[1]<0 and piv_high and ph!=stoploss_short and not GoShort and enable_stoploss_mechanism
if UpdateLongStopLoss
    stoploss_long := pl
if UpdateShortStopLoss
    stoploss_short := ph

plotshape(UpdateLongStopLoss ? stoploss_long[1]-300*syminfo.mintick : na, location=location.absolute, style=shape.labelup, color=color.lime, textcolor=color.white, text="SL\nmove")
plotshape(UpdateShortStopLoss ? stoploss_short[1]+300*syminfo.mintick : na, location=location.absolute, style=shape.labeldown, color=color.red, textcolor=color.black, text="SL\nmove")
// } End of Pivot-points and stop-loss logic

// **** Trade counter **** {
var int trade_id=0
if GoLong or GoShort
    trade_id:=trade_id+1
// } End of Trade counter

strategy.entry("Long", strategy.long, when=GoLong)
strategy.exit("XLong", from_entry="Long", stop=stoploss_long, profit=TakeProfitLevel)
strategy.entry("Short", strategy.short, when=GoShort)
strategy.exit("XShort", from_entry="Short", stop=stoploss_short, profit=TakeProfitLevel)

if GoLong
    alertsyntax_golong='long slprice=' + tostring(stoploss_long) + ' tradeid=' + tostring(trade_id) + ' tp=' + tostring(TakeProfitLevel)
    alert(message=alertsyntax_golong, freq=alert.freq_once_per_bar_close)
if GoShort
    alertsyntax_goshort='short slprice=' + tostring(stoploss_short) + ' tradeid=' + tostring(trade_id) + ' tp=' + tostring(TakeProfitLevel)
    alert(message=alertsyntax_goshort, freq=alert.freq_once_per_bar_close)
if UpdateLongStopLoss
    alertsyntax_updatelongstoploss='slmod slprice=' + tostring(stoploss_long) + ' tradeid=' + tostring(trade_id)
    alert(message=alertsyntax_updatelongstoploss, freq=alert.freq_once_per_bar_close)
if UpdateShortStopLoss
    alertsyntax_updateshortstoploss='slmod slprice=' + tostring(stoploss_short) + ' tradeid=' + tostring(trade_id)
    alert(message=alertsyntax_updateshortstoploss, freq=alert.freq_once_per_bar_close)