Strategi ini direka untuk sistem perdagangan automatik yang mudah berdasarkan petunjuk STOCH. Strategi ini sesuai untuk pasaran seperti forex, indeks saham, komoditi, dan juga boleh diperluaskan ke pasaran saham dan cryptocurrency.
Strategi ini menggunakan indikator STOCH untuk mengenal pasti keadaan overbought dan oversold, digabungkan dengan titik PIVOT untuk menetapkan kedudukan stop-loss, untuk mengikuti trend. Apabila indikator STOCH menunjukkan overbought dan oversold, lakukan banyak operasi shorting; titik stop-loss terletak berhampiran dengan titik PIVOT pada hari itu, dapat mengawal risiko dengan berkesan; titik berhenti sebahagiannya ditetapkan untuk menutup sebahagian kedudukan selepas keuntungan tertentu.
Strategi ini menggunakan garis cepat% K dan garis perlahan% D dalam indikator STOCH untuk mencapai kenaikan dan penurunan mata wang. Logiknya ialah, apabila garis% K dari bawah ke atas melanggar garis% D, melakukan operasi ganda; apabila garis% K dari atas ke bawah melanggar garis% D, melakukan operasi kosong. Ini dapat menangkap keadaan overbought dan oversold.
Untuk mengawal risiko, kedudukan panjang melakukan titik stop loss yang lebih banyak terletak berhampiran dengan titik PIVOT terendah pada hari itu, dan kedudukan kosong melakukan titik stop loss yang terletak berhampiran dengan titik PIVOT tertinggi pada hari itu, dapat mengunci risiko dengan berkesan.
Sebahagian daripada logik penutupan adalah untuk menutup 50% kedudukan apabila tahap keuntungan tertentu selepas membuka kedudukan. Dengan cara ini, penggunaan dana dapat dioptimumkan.
Secara keseluruhannya, strategi ini adalah tepat pada masa Capture Overbought Oversell; Pengendalian aspek kawalan risiko; Pengoptimuman kecekapan penggunaan dana. Ia boleh dikatakan sebagai gabungan organik Capture, Control dan Optimize.
Penggunaan petunjuk STOCH dapat menangkap fenomena overbought dan oversold dengan berkesan, ditambah dengan titik PIVOT yang dapat mengawal risiko, sehingga menguasai risiko perdagangan sepenuhnya.
Mekanisme penangguhan separa dapat mengoptimumkan kecekapan penggunaan wang. Menggunakan kaedah penangguhan separa, kedua-dua memastikan keuntungan separa, dan mengekalkan ruang untuk keuntungan operasi seterusnya.
Parameter strategi boleh disesuaikan, pedagang boleh menyesuaikan parameter mengikut pasaran dan keutamaan risiko, mewujudkan penggunaan strategi yang fleksibel.
Logik strategi sangat ringkas dan jelas, mudah difahami, sesuai untuk digunakan oleh pelbagai pedagang. Kodnya mudah dibaca, mudah diubah dan diselenggara.
Sebagai strategi trend-following, ia mudah terjebak dalam keadaan yang bergolak dan tidak dapat menghasilkan keuntungan.
Indeks STOCH mungkin menghasilkan isyarat yang salah dan mencetuskan tindakan perdagangan yang tidak perlu. Isyarat harus disaring dengan betul untuk mengelakkan perdagangan yang tidak berguna.
Titik henti berhampiran dengan titik pusat hari itu, mungkin terlalu dekat selepas penukaran pecah, jarak henti harus ditingkatkan dengan sewajarnya.
Sesetengah parameter strategi seperti panjang tempoh perlu disesuaikan dengan pasaran yang berbeza, jika tidak, ia akan mempengaruhi prestasi strategi.
Pengkajian ini hanya berdasarkan data sejarah dan tidak menjamin prestasi masa depan.
Sistem perdagangan automatik perlu memastikan kestabilan pelayan untuk mengelakkan transaksi yang tidak normal disebabkan oleh masalah sambungan.
Boleh memperkenalkan penapis trend, mengelakkan perdagangan buta apabila trend tidak jelas. Sebagai contoh, masukkan petunjuk MA untuk menentukan arah trend.
Ia boleh digunakan untuk memantau jumlah transaksi, seperti pelepasan, pelepasan kosong, dan sebagainya, untuk menyaring pelanggaran palsu.
Parameter boleh disesuaikan mengikut pelbagai jenis dan tempoh untuk mengoptimumkan prestasi strategi. Contohnya, menyesuaikan parameter STOCH.
Anda boleh mempertimbangkan untuk memasukkan algoritma pembelajaran mesin, menggunakan model latihan data besar, dan mengoptimumkan parameter secara automatik.
Anda boleh menetapkan nisbah kerugian untuk memperkenalkan kawalan risiko dan mengelakkan kerugian yang besar.
Anda boleh menambah lebih banyak syarat untuk menapis masa masuk dan meningkatkan kadar kemenangan strategi.
Strategi ini secara keseluruhannya menggunakan kaedah pengesanan trend yang lebih mudah dan intuitif, untuk mengenal pasti keadaan overbought dan oversold dengan petunjuk STOCH, dan menambahkan stop loss PIVOT untuk mengawal risiko, sambil memperkenalkan beberapa halangan untuk mengoptimumkan kecekapan modal. Dari tiga tahap Capture, Control dan Optimize, reka bentuknya membentuk sistem perdagangan automatik yang lebih lengkap. Logik strategi ini mudah difahami, parameter dapat disesuaikan, dan boleh digunakan untuk pedagang yang berbeza.
/*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)