Strategi perdagangan jangka pendek stop loss fleksibel berdasarkan indikator Stokastik


Tanggal Pembuatan: 2023-09-28 10:45:41 Akhirnya memodifikasi: 2023-09-28 10:45:41
menyalin: 0 Jumlah klik: 679
1
fokus pada
1617
Pengikut

Ringkasan

Strategi ini didasarkan pada indikator Stochastic oscillator menilai kondisi pasar overbought oversold, digabungkan dengan prinsip stop loss elastis untuk melakukan perdagangan jangka pendek. Berbuat lebih banyak saat Gold Fork di indikator Stochastic, kosong saat Dead Fork, sambil mengatur stop loss elastis berdasarkan pivot awal, sambil mengontrol risiko sambil menjamin keuntungan.

Prinsip Strategi

Prinsip masuk

Stochastic oscillator indikator berisi% K line dan% D line. Ketika% K line dari bawah ke atas Menembus% D line, untuk Gold Fork sinyal, melakukan lebih; Ketika% K line dari atas ke bawah Menembus% D line, untuk Dead Fork sinyal, melakukan kosong.

Secara khusus, pada stochastic indicator gold fork, jika% K linearity kurang dari 80 ((tidak overbought), maka melakukan overbought; pada stochastic indicator dead fork, jika% K linearity lebih dari 20 ((tidak oversold), maka melakukan overbought.

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

Prinsip Stop Loss

Strategi ini menggunakan metode Elastic Stop, yang mengatur harga stop loss berdasarkan titik pivot awal, dengan kode sebagai 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)

Pivot point mewakili resistensi pendukung yang penting, dan jika harga menembus Pivot Point, maka keluar dari posisi, sehingga harga stop loss akan mengikuti perubahan pivot point.

Selain itu, harga stop loss juga akan mempertimbangkan harga minimum dan harga maksimum dalam periode saat ini untuk lebih mengoptimalkan posisi stop loss, seperti yang ditunjukkan oleh kode berikut:

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

Keunggulan Strategis

  1. Menggunakan indikator Stochastic untuk menilai kondisi pasar yang overbought dan oversold, dan menghindari mengejar kenaikan dan penurunan.

  2. Menggunakan prinsip elastisitas stop loss yang dapat mengoptimalkan posisi stop loss sesuai dengan perubahan pasar;

  3. Hal ini dikombinasikan dengan pivot breakthrough untuk mencapai stop loss dan membuatnya lebih efektif.

  4. Pertimbangkan untuk melakukan optimasi stop loss pada harga tertinggi dan terendah pada saat itu, sehingga stop loss lebih akurat.

Risiko dan Solusi

  1. Indeks Stochastic Berisiko Menerima Sinyal Palsu

    • Solusi: Mengidentifikasi dengan indikator lain untuk menghindari kesalahpahaman
  2. Stop Loss Resiko Peningkatan Kerugian Karena Penembusan

    • Solusi: Kurangi jarak penghentian yang tepat, atau gunakan metode penghentian seperti Chandelier Exit
  3. Risiko biaya transaksi yang meningkat karena seringnya transaksi

    • Solusinya: Memperkecil persyaratan masuk dan mengurangi jumlah transaksi.

Optimalkan Pikiran

  1. Optimalkan strategi stop loss, seperti menggunakan Chandelier Exit, move stop, dan oscillatory stop loss

  2. Mengoptimalkan kondisi masuk, digabungkan dengan indikator lain untuk menghindari sinyal palsu dari indikator Stochastic

  3. Mengoptimalkan cara penutupan, seperti menggunakan penutupan bergerak, penutupan bergoyang, dan lain-lain, untuk mencapai tingkat penutupan yang lebih tinggi

  4. Menambahkan manajemen posisi, seperti jumlah tetap per unit, proporsi investasi tetap, dan lain-lain, untuk mengontrol risiko unit

  5. Pengaturan parameter optimasi, seperti K, D periode, siklus smoothing, dll, untuk menyesuaikan parameter untuk pasar yang berbeda

Meringkaskan

Strategi ini menggunakan indikator Stochastic untuk menilai status overbought dan oversold, dan menggunakan metode stop loss yang elastis untuk manajemen risiko. Strategi ini memiliki keuntungan seperti menghindari mengejar tinggi dan rendah, menghentikan kerugian yang efektif, tetapi juga ada risiko sinyal palsu tertentu. Strategi ini dapat lebih disempurnakan di masa depan dengan mengoptimalkan kondisi masuk, strategi stop loss, metode stop loss, manajemen risiko, dll.

Kode 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)