Sumber dimuat naik... memuat...

Strategi Merentasi MA

Penulis:ChaoZhang, Tarikh: 2024-06-03 11:25:43
Tag:SMAMA

img

Ringkasan

Artikel ini memperkenalkan strategi perdagangan kuantitatif berdasarkan prinsip crossover purata bergerak. Strategi menentukan arah panjang / pendek dengan membandingkan harga dengan purata bergerak, dan menetapkan tahap keuntungan dan stop loss untuk mengawal risiko. Kod strategi ditulis dalam Pine Script dan bersepadu dengan API platform perdagangan Dhan, yang membolehkan perdagangan automatik isyarat strategi.

Prinsip Strategi

Inti strategi ini adalah purata bergerak. Ia mengira purata bergerak mudah harga penutupan dalam tempoh tertentu sebagai asas untuk menilai trend. Apabila harga melintasi di atas purata bergerak, ia menjana isyarat panjang, dan apabila ia melintasi di bawah, ia menjana isyarat pendek. Fungsi exrem digunakan untuk menapis isyarat berulang berterusan dan meningkatkan kualiti isyarat. Strategi menetapkan tahap mengambil keuntungan dan menghentikan kerugian yang sesuai berdasarkan arah kedudukan semasa dan hubungan antara harga dan purata bergerak, mengawal risiko dan pulangan setiap perdagangan.

Kelebihan Strategi

Perpindahan purata crossover adalah kaedah trend yang mudah dan mudah digunakan yang dapat menangkap dengan berkesan trend pasaran jangka menengah hingga panjang. Dengan tetapan parameter yang munasabah, strategi dapat memperoleh pulangan yang stabil di pasaran trend. Tetapan mengambil keuntungan dan menghentikan kerugian membantu mengawal penarikan dan meningkatkan nisbah risiko-balasan. Logik kod strategi jelas, menggunakan modularisasi fungsi, dengan ketara dan skalabiliti yang kuat. Di samping itu, strategi mengintegrasikan API platform Dhan untuk merealisasikan pelaksanaan pesanan automatik, meningkatkan kecekapan pelaksanaan.

Risiko Strategi

Purata bergerak adalah penunjuk yang tertinggal secara semula jadi. Semasa titik perubahan pasaran, isyarat mungkin tertunda, yang membawa kepada peluang perdagangan optimum yang hilang atau isyarat palsu. Tetapan parameter yang tidak betul akan mempengaruhi prestasi strategi dan perlu dioptimumkan mengikut ciri dan jangka masa pasaran yang berbeza. Peratusan tetap mengambil keuntungan dan berhenti kerugian mungkin tidak menyesuaikan diri dengan perubahan dalam turun naik pasaran, dan juga terdapat risiko kerugian kerana tetapan parameter yang tidak betul.

Arahan Pengoptimuman Strategi

  1. Pelbagai purata bergerak jangka masa yang berbeza boleh digabungkan untuk meningkatkan kebolehpercayaan isyarat, seperti silang purata bergerak berganda atau tiga kali ganda.
  2. Tetapan mengambil keuntungan dan menghentikan kerugian boleh dioptimumkan lagi, seperti menyesuaikan secara dinamik berdasarkan penunjuk turun naik seperti ATR, atau mengamalkan strategi hentian.
  3. Lebih banyak keadaan penapisan boleh ditambah, seperti terobosan harga tahap sokongan / rintangan yang penting, perubahan dalam jumlah dagangan, dll., untuk meningkatkan kualiti isyarat.
  4. Dalam penerapan sebenar, adalah perlu untuk menjalankan pengujian dan pengesahan strategi yang betul dan menguruskan dana untuk mengawal risiko perdagangan tunggal dan penggunaan keseluruhan.

Ringkasan

Strategi crossover purata bergerak adalah strategi perdagangan kuantitatif yang mudah dan praktikal yang dapat memperoleh keuntungan dalam pasaran trend melalui penjejakan trend dan kawalan stop loss. Walau bagaimanapun, strategi itu sendiri mempunyai batasan tertentu dan perlu dioptimumkan dan ditingkatkan mengikut ciri pasaran dan keutamaan risiko. Dalam aplikasi praktikal, juga perlu memberi perhatian kepada pelaksanaan disiplin yang ketat dan kawalan risiko yang betul. Pengaturcaraan strategi boleh menggunakan bahasa profesional seperti Pine Script dan mengintegrasikan API platform perdagangan untuk merealisasikan pelaksanaan strategi automatik.


/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Scriptâ„¢ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © syam-mohan-vs @ T7 - wwww.t7wealth.com www.t7trade.com
//This is an educational code done to describe the fundemantals of pine scritpting language and integration with Indian discount broker Dhan. This strategy is not tested or recommended for live trading. 

//@version=5
strategy("Pine & Dhan - Moving Average Crossover Strategy", overlay=true)

//Remove excess signals
exrem(condition1, condition2) =>
    temp = false
    temp := na(temp[1]) ? false : not temp[1] and condition1 ? true : temp[1] and condition2 ? false : temp[1]
    ta.change(temp) == true ? true : false

// Define MA period
ma_period = input(20, title = "MA Length")

// Define target and stop loss levels
target_percentage = input.float(title="Target Profit (%)", defval=2.0)
stop_loss_percentage = input.float(title="Stop Loss (%)", defval=1.0)

// Calculate the MA
ma = ta.sma(close, ma_period)

// Entry conditions
long_entry = close >= ma
short_entry = close < ma

// Calculate target and stop loss prices
target_price = long_entry ? strategy.position_avg_price + (close * (target_percentage / 100)) : strategy.position_avg_price - (close * (target_percentage / 100)) 
stop_loss_price = short_entry ? strategy.position_avg_price + (close * (stop_loss_percentage/ 100)) : strategy.position_avg_price - (close * (stop_loss_percentage / 100)) 

long_entry := exrem(long_entry,short_entry)
short_entry := exrem(short_entry,long_entry)

// Plot the MA
plot(ma, color=color.blue, linewidth=2, title="MA")

// Plot the entry and exit signals
plotshape(long_entry, style=shape.arrowup, color=color.green, size=size.small,location = location.belowbar)
plotshape(short_entry, style=shape.arrowdown, color=color.red, size=size.small,location = location.abovebar)

//Find absolute value of positon size to exit position properly
size = math.abs(strategy.position_size)

//Replace these four JSON strings with those generated from user Dhan account
long_msg = '{"secret":"C0B2u","alertType":"multi_leg_order","order_legs":[{"transactionType":"B","orderType":"MKT","quantity":"1","exchange":"NSE","symbol":"NIFTY1!","instrument":"FUT","productType":"I","sort_order":"1","price":"0"}]}'
long_exit_msg = '{"secret":"C0B2u","alertType":"multi_leg_order","order_legs":[{"transactionType":"S","orderType":"MKT","quantity":"1","exchange":"NSE","symbol":"NIFTY1!","instrument":"FUT","productType":"M","sort_order":"1","price":"0"}]}'
short_msg = '{"secret":"C0B2u","alertType":"multi_leg_order","order_legs":[{"transactionType":"S","orderType":"MKT","quantity":"1","exchange":"NSE","symbol":"NIFTY1!","instrument":"FUT","productType":"M","sort_order":"1","price":"0"}]}'
short_exit_msg = '{"secret":"C0B2u","alertType":"multi_leg_order","order_legs":[{"transactionType":"B","orderType":"MKT","quantity":"1","exchange":"NSE","symbol":"NIFTY1!","instrument":"FUT","productType":"M","sort_order":"1","price":"0"}]}'

// Submit orders based on signals
if(strategy.position_size == 0)
    if long_entry 
        strategy.order("Long", strategy.long,alert_message=long_msg)          

    if short_entry
        strategy.order("Short", strategy.short,alert_message=short_msg)        
    
if(strategy.position_size > 0)
    
    if(short_entry)
        strategy.order("Short", strategy.short, qty = size, alert_message=short_msg)     
    else
        strategy.exit("Long Exit", from_entry="Long", qty = size, stop=stop_loss_price, limit= target_price, alert_message=long_exit_msg)

if(strategy.position_size < 0)
    
    if(long_entry)
        strategy.order("Long", strategy.long, qty = size, alert_message=long_msg)    
    else           
        strategy.exit("Short Exit", from_entry="Short", qty = size, stop=stop_loss_price, limit= target_price, alert_message=short_exit_msg) 



Berkaitan

Lebih lanjut