Memindahkan strategi Pengesanan Stop Loss

Penulis:ChaoZhang, Tarikh: 2024-01-03 16:15:29
Tag:

img

Ringkasan

Strategi ini menggunakan penunjuk Stoch untuk menjana isyarat kemasukan. Selepas memasuki kedudukan, ia akan mengesan tinggi atau rendah baru dalam masa nyata untuk menyesuaikan stop loss secara dinamik. Pada masa yang sama, strategi ini juga akan menghantar maklumat pengubahsuaian stop loss ke MT4/MT5 melalui fungsi amaran untuk menyesuaikan kedudukan dalam perdagangan sebenar.

Prinsip Strategi

  1. Strategi ini menghasilkan isyarat beli dan jual berdasarkan penunjuk Stoch. Apabila garis Stoch K melintasi di atas garis D dari bawah, isyarat beli dihasilkan. Apabila garis K melintasi di bawah garis D dari atas, isyarat jual dihasilkan.

  2. Selepas memasuki kedudukan, strategi menjejaki titik terendah harga terendah terkini dan titik tertinggi harga tertinggi terkini dalam masa nyata sebagai tahap stop loss dinamik. Khususnya, untuk kedudukan panjang, titik terendah harga terendah terkini dikesan sebagai tahap stop loss. Untuk kedudukan pendek, titik tertinggi harga tertinggi terkini dikesan sebagai tahap stop loss.

  3. Apabila perubahan dalam tahap stop loss dikesan, strategi menghasilkan pesanan stop loss modifikasi melalui fungsi amaran dan menghantarnya ke MT4 / MT5 untuk menyesuaikan tahap stop loss perdagangan sebenar dalam masa nyata.

  4. Strategi ini menyokong kawalan manual sama ada untuk mengaktifkan mekanisme stop loss dinamik. Apabila diaktifkan, stop loss boleh diselaraskan dalam masa nyata mengikut turun naik pasaran.

Analisis Kelebihan

  1. Mekanisme stop loss trailing dinamik boleh menyesuaikan tahap stop loss dengan fleksibel mengikut turun naik pasaran untuk mengawal risiko dengan berkesan.

  2. Fungsi amaran membolehkan penghantaran masa nyata maklumat penyesuaian stop loss ke MT4/MT5 untuk pengurusan automatik tanpa campur tangan manual.

  3. Anotasi visual penyesuaian stop loss pada carta memudahkan melihat dan mengesahkan kesan stop loss yang tertinggal.

  4. Sokongan untuk mengawal secara manual mekanisme pengangkutan stop loss membolehkan penyesuaian yang fleksibel kepada keadaan pasaran yang berbeza.

  5. Digabungkan dengan penunjuk Stoch untuk menentukan peluang, strategi ini dapat menyaring keluar palsu dengan berkesan dan meningkatkan kestabilan.

Analisis Risiko

  1. Indikator Stoch boleh menghasilkan isyarat silang yang kerap, memperkenalkan risiko operasi yang lebih tidak berkesan.

  2. Dalam keadaan pasaran yang melampau, stop loss boleh ditembusi, tidak dapat mengelakkan sepenuhnya kerugian besar.

  3. Masalah sambungan amaran seperti gangguan dan kelewatan mungkin berlaku, menghalang maklum balas masa nyata penyesuaian.

  4. Jangkaan penangguhan kehilangan yang dinamik memerlukan penyesuaian yang agak kerap, yang berpotensi menimbulkan kos dagangan yang lebih tinggi. Julat penyesuaian harus diseimbangkan dengan kos.

Arahan pengoptimuman

  1. Kombinasi parameter yang berbeza boleh diuji untuk mengoptimumkan penunjuk Stoch untuk kualiti isyarat dan prestasi strategi yang lebih baik.

  2. Penunjuk lain boleh digabungkan untuk menapis isyarat atau menentukan julat penyesuaian untuk meningkatkan kestabilan strategi.

  3. Algoritma penjejakan yang berbeza boleh dikaji untuk mengurangkan kekerapan pelarasan sambil memastikan kesan stop loss.

  4. Kaedah sambungan dengan MT4/MT5 boleh ditingkatkan untuk memastikan amaran yang tepat pada masanya dan cekap dan meminimumkan kelewatan.

  5. Mod stop loss automatik dan manual boleh diperkenalkan untuk menggunakan mekanisme yang berbeza di bawah keadaan pasaran yang berbeza.

Ringkasan

Strategi ini mula-mula menentukan peluang perdagangan berdasarkan penunjuk Stoch, kemudian mengesan turun naik harga semasa kedudukan untuk menyesuaikan secara dinamik kerugian berhenti dan secara automatik mengeluarkan maklumat pelarasan melalui pesanan amaran. Mekanisme dinamik sedemikian membolehkan pengurusan risiko kedudukan aktif mengikut perubahan pasaran dengan intervensi manual yang kurang. Sementara itu, anotasi kerugian berhenti yang intuitif juga memudahkan pemantauan. Pengoptimuman lanjut pada penapisan isyarat dan algoritma jejak dapat meningkatkan keuntungan. Secara keseluruhan, strategi kerugian berhenti jejak dinamik sesuai untuk mengesan pasaran yang tidak menentu dan pengurusan risiko kedudukan automatik.


/*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)


Lebih lanjut