Strategi perdagangan jangka pendek stop loss yang fleksibel berdasarkan penunjuk Stochastic


Tarikh penciptaan: 2023-09-28 10:45:41 Akhirnya diubah suai: 2023-09-28 10:45:41
Salin: 0 Bilangan klik: 679
1
fokus pada
1617
Pengikut

Gambaran keseluruhan

Strategi ini berdasarkan Stochastic oscillator yang menilai keadaan pasaran yang terlalu banyak dibeli dan dijual, digabungkan dengan prinsip berhenti elastis untuk melakukan perdagangan jangka pendek. Berbuat lebih banyak apabila garpu emas di atas petunjuk Stochastic, kosong ketika garpu mati, sambil menetapkan berhenti elastis berdasarkan titik-titik pusat awal, sambil mengawal risiko dalam menjamin keuntungan.

Prinsip Strategi

Prinsip kemasukan

Stochastic oscillator indicator contains %K line and%D line. Apabila %K line dari bawah ke atas menembusi %D line, buat golden fork signal, buat lebih; apabila %K line dari atas ke bawah menembusi %D line, buat dead fork signal, buat kosong. Strategi ini adalah berdasarkan Stochastic indicator untuk menilai golden fork dead fork signal masuk.

Khususnya, pada garpu emas Stochastic, jika nilai garis% K kurang dari 80 ((tidak overbought), anda akan melakukan overbought; pada garpu mati Stochastic, jika nilai garis% K lebih besar daripada 20 ((tidak oversold), anda akan melakukan overbought.

GoLong=crossover(k,d) and k<80 
GoShort=crossunder(k,d) and k>20

Prinsip Stop Loss

Strategi ini menggunakan kaedah Elastic Stop dan menetapkan harga stop berdasarkan titik-titik pivot awal, dengan kod berikut:

piv_high = pivothigh(high,1,1)
piv_low = pivotlow(low,1,1)

stoploss_long=valuewhen(piv_low,piv_low,0) 
stoploss_short=valuewhen(piv_high,piv_high,0)

Titik pusat mewakili rintangan sokongan yang penting, dan jika harga menembusi titik pusat, keluar dari kedudukan, menjadikan harga berhenti berlanjutan dengan perubahan titik pusat.

Di samping itu, harga hentian juga akan mengambil kira harga minimum dan harga tertinggi dalam tempoh semasa, untuk mengoptimumkan lagi kedudukan hentian, seperti yang ditunjukkan oleh kod berikut:

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

Kelebihan Strategik

  1. Menggunakan Stochastic untuk menilai keadaan pasaran yang terlalu terlampau dan tidak mahu mengejar kenaikan dan penurunan;

  2. Menggunakan prinsip Elastik Stop yang boleh mengoptimumkan kedudukan Stop mengikut perubahan pasaran;

  3. Mencapai penangguhan yang lebih berkesan dengan menggabungkan titik-titik pusat penembusan;

  4. Pertimbangkan untuk mengoptimumkan hentian kerugian pada harga tertinggi dan terendah pada masa itu untuk memastikan hentian kerugian lebih tepat.

Risiko dan Penyelesaian

  1. Indeks Stochastic Berisiko Menerima Isyarat Palsu

    • Penyelesaian: Mengesampingkan kesalahan pengesahan dengan pengesahan yang berkaitan
  2. Risiko peningkatan kerugian akibat penembusan

    • Penyelesaian: Kurangkan jarak penghentian yang sesuai, atau gunakan penghentian seperti Chandelier Exit
  3. Risiko kenaikan yuran urus niaga akibat transaksi yang kerap

    • Penyelesaian: Melegakan syarat kemasukan, mengurangkan jumlah dagangan

Optimum idea

  1. Mengoptimumkan strategi hentikan kerugian, seperti menggunakan Chandelier Exit, hentikan bergerak, hentikan bergoyang

  2. Mengoptimumkan syarat kemasukan untuk mengelakkan isyarat palsu Stochastic dalam kombinasi dengan petunjuk lain

  3. Mengoptimumkan kaedah penangguhan, seperti menggunakan penangguhan bergerak, penangguhan bergoyang, dan lain-lain, untuk mencapai kadar penangguhan yang lebih tinggi

  4. Menambah pengurusan kedudukan, seperti jumlah tetap per unit, peratusan pelaburan tetap, dan lain-lain untuk mengawal risiko unit

  5. Tetapan parameter pengoptimuman, seperti bilangan K, D, kitaran halus, dan lain-lain, untuk menyesuaikan parameter untuk pasaran yang berbeza

ringkaskan

Strategi ini menggunakan indikator Stochastic untuk menilai kemasukan ke dalam keadaan overbought dan oversold, dan menggunakan kaedah stop loss yang fleksibel untuk pengurusan risiko. Strategi ini mempunyai kelebihan seperti mengelakkan mengejar tinggi dan rendah, menghentikan kerugian, tetapi juga terdapat risiko isyarat palsu tertentu.

Kod sumber strategi
/*backtest
start: 2023-08-28 00:00:00
end: 2023-09-27 00:00:00
period: 2h
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/
// © Peter_O

//@version=4
//strategy(title="TradingView Alerts to MT4 MT5 example with cancelling pending orders", commission_type=strategy.commission.cash_per_order, commission_value=0.00003, overlay=true, default_qty_value=100000, initial_capital=1000)

// This script was created for educational purposes only.
// It is showing how to create pending orders and cancel them
// Together with syntax to send these events through TradingView alerts system
// All the way to brokers for execution

TakeProfitLevel=input(400)

// **** Entries logic **** {
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)
// plot(k, title="%K", color=color.blue)
// plot(d, title="%D", color=color.orange)
// h0 = hline(80)
// h1 = hline(20)
// fill(h0, h1, color=color.purple, transp=75)

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.lime, title="stoploss_long")
plot(stoploss_short, color=color.red, title="stoploss_short")
// } End of Pivot-points and stop-loss logic

CancelLong=crossunder(low,stoploss_long) and strategy.position_size[1]<=0 and strategy.position_size<=0
CancelShort=crossover(high,stoploss_short) and strategy.position_size[1]>=0 and strategy.position_size>=0
entry_distance=input(10, title="Entry distance for stop orders")

plotshape(CancelLong ? stoploss_long[1]-10*syminfo.mintick : na, location=location.absolute, style=shape.labelup, color=color.gray, textcolor=color.white, text="cancel\nlong", size=size.tiny)
plotshape(CancelShort ? stoploss_short[1]+10*syminfo.mintick : na, location=location.absolute, style=shape.labeldown, color=color.gray, textcolor=color.white, text="cancel\nshort", size=size.tiny)

strategy.entry("Long", strategy.long, when=GoLong, stop=close+entry_distance*syminfo.mintick)
strategy.exit("XLong", from_entry="Long", stop=stoploss_long, profit=TakeProfitLevel)
strategy.cancel("Long", when = CancelLong)
strategy.entry("Short", strategy.short, when=GoShort, stop=close-entry_distance*syminfo.mintick)
strategy.exit("XShort", from_entry="Short", stop=stoploss_short, profit=TakeProfitLevel)
strategy.cancel("Short", when = CancelShort)

if GoLong
    alertsyntax_golong='long offset=' + tostring(entry_distance) + ' slprice=' + tostring(stoploss_long) + ' tp=' + tostring(TakeProfitLevel)
    alert(message=alertsyntax_golong, freq=alert.freq_once_per_bar_close)
if GoShort
    alertsyntax_goshort='short offset=' + tostring(-entry_distance) + ' slprice=' + tostring(stoploss_short) + ' tp=' + tostring(TakeProfitLevel)
    alert(message=alertsyntax_goshort, freq=alert.freq_once_per_bar_close)
if CancelLong
    alertsyntax_cancellong='cancel long'
    alert(message=alertsyntax_cancellong, freq=alert.freq_once_per_bar_close)
if CancelShort
    alertsyntax_cancelshort='cancel short'
    alert(message=alertsyntax_cancelshort, freq=alert.freq_once_per_bar_close)