Strategi Perdagangan Auto Berdasarkan STOCH

Penulis:ChaoZhang, Tarikh: 2023-09-28 11:38:44
Tag:

Strategi ini merancang sistem perdagangan automatik yang mudah berdasarkan penunjuk STOCH. Ia sesuai untuk Forex, indeks saham, komoditi dan boleh dilanjutkan ke saham dan pasaran kripto.

Ringkasan Strategi

Strategi ini mengenal pasti status overbought dan oversold menggunakan penunjuk STOCH digabungkan dengan titik PIVOT untuk menetapkan kedudukan stop loss, menyedari trend berikut. Ia pergi panjang atau pendek apabila penunjuk STOCH menunjukkan isyarat overbought atau oversold. Titik stop loss ditetapkan berhampiran titik PIVOT hari untuk mengawal risiko dengan berkesan. Titik mengambil keuntungan separa ditetapkan untuk menutup kedudukan separa selepas tahap keuntungan tertentu.

Logika Strategi

Strategi ini menggunakan persimpangan garis %K dan %D penunjuk STOCH untuk menjana isyarat panjang dan pendek. Khususnya, apabila garis %K melintasi di atas garis %D, ia akan menjadi panjang. Apabila garis %K melintasi di bawah garis %D, ia akan menjadi pendek. Ini menangkap status overbought dan oversold.

Untuk mengawal risiko, titik stop loss panjang ditetapkan berhampiran titik PIVOT terendah harian dan titik stop loss pendek ditetapkan berhampiran titik PIVOT tertinggi harian.

Untuk mengambil keuntungan separa, ia menutup 50% kedudukan selepas tahap keuntungan tertentu selepas membuka kedudukan.

Ringkasnya, strategi ini menangkap titik overbought dan oversold dengan sewajarnya; mengawal risiko menggunakan stop loss; dan mengoptimumkan kecekapan penggunaan modal.

Kekuatan Strategi

  • Menggunakan penunjuk STOCH secara berkesan menangkap keadaan overbought dan oversold.

  • Mekanisme mengambil keuntungan separa mengoptimumkan kecekapan penggunaan modal. Penutupan separa memastikan beberapa keuntungan sambil mengekalkan ruang untuk keuntungan lanjut.

  • Parameter yang boleh disesuaikan membolehkan fleksibiliti berdasarkan keadaan pasaran dan pilihan risiko.

  • Logik yang mudah dan jelas, mudah difahami dan dikuasai oleh semua peniaga.

Risiko Strategi

  • Sebagai strategi trend, ia mungkin terjebak dalam pasaran yang terikat julat dan gagal mendapat keuntungan.

  • STOCH boleh menghasilkan isyarat palsu, menyebabkan perdagangan yang tidak perlu. penapisan isyarat yang betul diperlukan untuk mengelakkan perdagangan yang tidak diingini.

  • Stop loss berhampiran titik pivot mungkin terlalu dekat selepas breakouts.

  • Sesetengah parameter seperti tempoh mungkin memerlukan penyesuaian untuk pasaran yang berbeza, jika tidak ia mempengaruhi prestasi strategi.

  • Backtest hanya bergantung pada data sejarah. tidak dapat menjamin prestasi masa depan. lebih banyak faktor yang tidak terkawal dalam perdagangan langsung.

  • Sistem perdagangan automatik memerlukan sambungan yang stabil untuk mengelakkan masalah pelaksanaan perdagangan.

Pengoptimuman Strategi

  • Tambah penapis trend untuk mengelakkan perdagangan tanpa trend yang jelas.

  • Tambah analisis jumlah untuk mengesan pecah palsu dan mengelakkan perangkap.

  • Sesuaikan parameter seperti input STOCH berdasarkan produk dan jangka masa yang berbeza untuk mengoptimumkan prestasi.

  • Pertimbangkan algoritma pembelajaran mesin untuk melatih model menggunakan data besar dan mengoptimumkan parameter secara automatik.

  • Tetapkan nisbah faktor keuntungan untuk memperkenalkan kawalan risiko dan mengelakkan perdagangan kehilangan besar.

  • Tambah lebih banyak penapis seperti syarat perdagangan, asas untuk meningkatkan kadar kemenangan.

Kesimpulan

Strategi ini menggunakan pendekatan trend yang mudah dan intuitif berdasarkan penunjuk STOCH untuk mengenal pasti titik overbought / oversold. Dengan PIVOT stop loss untuk mengawal risiko dan mengambil keuntungan separa untuk mengoptimumkan kecekapan modal. Reka bentuk meliputi Capture, Control dan Optimize. Logiknya mudah dan boleh disesuaikan. Tetapi ia juga mempunyai beberapa risiko dan boleh dioptimumkan lebih lanjut. Ujian dan peningkatan berterusan dalam perdagangan langsung adalah penting untuk keuntungan yang stabil.


/*backtest
start: 2022-09-21 00:00:00
end: 2023-09-27 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="TradingView Alerts to MT4 MT5 - Forex, indices, commodities, stocks, crypto", commission_type=strategy.commission.cash_per_contract, commission_value=0.00003, overlay=false, default_qty_value=20000, initial_capital=1000)
//
// This script was created for educational purposes only.
// It is showing how to use Alerts-Straight-From-Strategies and
// dynamic variables in TradingView alerts.
// And how to auto-execute them in Forex, indices, commodities markets
// 
// (This method will also work with stocks and crypto - anything your 
// broker is offering via their MT4/MT5 platform).
 
TakeProfitLevel=input(400)
TakePartialProfitLevel=input(150)

// **** Entries logic **** {
periodK = input(13, title="K", minval=1)
periodD = input(3, title="D", minval=1)
smoothK = 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 and year>2009
GoShort=crossunder(k,d) and k>20 and year>2009

AlertTest=open>close or open<close or open==close
// } 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
// } End of Pivot-points and stop-loss logic

// **** Trade counter and partial closing mechanism **** {
var int trade_id=0
if GoLong or GoShort
    trade_id:=trade_id+1

TakePartialProfitLong = barssince(GoLong)<barssince(GoShort) and crossover(high,(valuewhen(GoLong,close,0)+TakePartialProfitLevel*syminfo.mintick))
TakePartialProfitShort = barssince(GoLong)>barssince(GoShort) and crossunder(low,(valuewhen(GoShort,close,0)-TakePartialProfitLevel*syminfo.mintick))
// } End of Trade counter and partial closing mechanism

strategy.entry("Long", strategy.long, when=GoLong)
strategy.exit("XPartLong", from_entry="Long", qty_percent=50, profit=TakePartialProfitLevel)
strategy.exit("XLong", from_entry="Long", stop=stoploss_long, profit=TakeProfitLevel)
strategy.entry("Short", strategy.short, when=GoShort)
strategy.exit("XPartShort", from_entry="Short", qty_percent=50, profit=TakePartialProfitLevel)
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 TakePartialProfitLong
    alertsyntax_closepartlong='closepart tradeid=' + tostring(trade_id) + ' part=0.5'
    alert(message=alertsyntax_closepartlong, freq=alert.freq_once_per_bar_close)
if TakePartialProfitShort
    alertsyntax_closepartshort='closepart tradeid=' + tostring(trade_id) + ' part=0.5'
    alert(message=alertsyntax_closepartshort, freq=alert.freq_once_per_bar_close)


Lebih lanjut