Strategi perdagangan otomatis berdasarkan STOCH

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

Strategi ini merancang sistem perdagangan otomatis sederhana berdasarkan indikator STOCH. Ini cocok untuk Forex, indeks saham, komoditas dan dapat diperluas ke saham dan pasar crypto.

Tinjauan Strategi

Strategi ini mengidentifikasi status overbought dan oversold menggunakan indikator STOCH dikombinasikan dengan titik PIVOT untuk mengatur posisi stop loss, mewujudkan tren berikut. Ini pergi panjang atau pendek ketika indikator STOCH menunjukkan sinyal overbought atau oversold. Stop loss point ditetapkan dekat titik PIVOT hari untuk mengontrol risiko secara efektif.

Logika Strategi

Strategi ini menggunakan persimpangan garis %K dan %D dari indikator STOCH untuk menghasilkan sinyal panjang dan pendek. Secara khusus, ketika garis %K melintasi di atas garis %D, itu akan panjang. Ketika garis %K melintasi di bawah garis %D, itu akan pendek. Ini menangkap status overbought dan oversold.

Untuk mengendalikan risiko, titik stop loss panjang ditetapkan di dekat titik PIVOT terendah harian dan titik stop loss pendek ditetapkan di dekat titik PIVOT tertinggi harian.

Untuk mengambil keuntungan parsial, ia menutup 50% dari posisi setelah tingkat keuntungan tertentu setelah membuka posisi.

Singkatnya, strategi ini menangkap titik overbought dan oversold dengan tepat; Mengontrol risiko menggunakan stop loss; dan Mengoptimalkan efisiensi penggunaan modal.

Kekuatan Strategi

  • Menggunakan indikator STOCH secara efektif menangkap status overbought dan oversold.

  • Mekanisme mengambil keuntungan parsial mengoptimalkan efisiensi penggunaan modal. Penutupan parsial memastikan beberapa keuntungan sambil mempertahankan ruang untuk keuntungan lebih lanjut.

  • Parameter yang dapat disesuaikan memungkinkan fleksibilitas berdasarkan kondisi pasar dan preferensi risiko.

  • Logika yang sederhana dan jelas, mudah dipahami dan dikuasai oleh semua pedagang.

Risiko Strategi

  • Sebagai tren mengikuti strategi, itu mungkin terjebak di pasar rentang terikat dan gagal untuk mendapatkan keuntungan.

  • STOCH dapat menghasilkan sinyal palsu, menyebabkan perdagangan yang tidak perlu.

  • Stop loss dekat titik pivot mungkin terlalu dekat setelah breakout.

  • Beberapa parameter seperti periode mungkin perlu penyesuaian untuk pasar yang berbeda, jika tidak itu mempengaruhi kinerja strategi.

  • Backtest hanya mengandalkan data historis. tidak dapat menjamin kinerja di masa depan. lebih banyak faktor yang tidak terkendali dalam perdagangan langsung.

  • Sistem perdagangan otomatis membutuhkan koneksi yang stabil untuk menghindari masalah pelaksanaan perdagangan.

Optimasi Strategi

  • Tambahkan filter tren untuk menghindari perdagangan tanpa tren yang jelas.

  • Tambahkan analisis volume untuk mendeteksi breakout palsu dan menghindari perangkap.

  • Sesuaikan parameter seperti input STOCH berdasarkan produk dan jangka waktu yang berbeda untuk mengoptimalkan kinerja.

  • Pertimbangkan algoritma pembelajaran mesin untuk melatih model menggunakan data besar dan mengoptimalkan parameter secara otomatis.

  • Tetapkan rasio faktor keuntungan untuk memperkenalkan kontrol risiko dan menghindari perdagangan yang sangat besar.

  • Tambahkan lebih banyak filter seperti kondisi perdagangan, dasar-dasar untuk meningkatkan tingkat kemenangan.

Kesimpulan

Strategi ini mengadopsi pendekatan trend berikut yang sederhana dan intuitif berdasarkan indikator STOCH untuk mengidentifikasi titik overbought/oversold. Dengan PIVOT stop loss untuk mengontrol risiko dan partial take profit untuk mengoptimalkan efisiensi modal. Desainnya mencakup Capture, Control dan Optimize. Logika sederhana dan dapat disesuaikan. Tetapi juga memiliki beberapa risiko dan dapat dioptimalkan lebih lanjut. Pengujian dan peningkatan terus-menerus dalam perdagangan langsung sangat penting untuk profitabilitas 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 banyak