Strategi ini menghasilkan isyarat perdagangan berdasarkan perbezaan antara dua purata bergerak dengan jangka masa yang berbeza. Ia mengira SMA yang lebih cepat dan SMA yang lebih perlahan, dan menghasilkan isyarat beli apabila SMA cepat melintasi di atas SMA perlahan dari bawah, dan isyarat jual apabila SMA cepat melintasi di bawah SMA perlahan dari atas.
Logik teras strategi ini adalah untuk mengira dua purata bergerak, SMA ((len1) dan SMA ((len2), dan perbezaan mereka dif. Di sini len1 mewakili tempoh MA yang lebih cepat dan len2 MA yang lebih perlahan. MA yang lebih cepat bertindak balas dengan lebih cepat terhadap perubahan harga manakala MA yang lebih perlahan mencerminkan trend jangka panjang dengan lebih baik.
Apabila MA yang lebih cepat melintasi di atas MA yang lebih perlahan dari bawah, ia menunjukkan harga jangka pendek telah mula meningkat di atas trend jangka panjang, dan dengan itu entri panjang boleh diambil.
Untuk menapis isyarat palsu, strategi ini juga menggunakan out3 sebagai garis isyarat dagangan, yang merupakan perbezaan rata antara MA yang lebih cepat dan titik pertengahan harga.
Secara khusus, pembolehubah panjang memegang nilai positif apabila out3 melintasi di atas dif, memberikan isyarat beli. pembolehubah pendek memegang nilai negatif apabila out3 melintasi di bawah dif, menjana isyarat jual. strategi. entri entri panjang apabila isyarat panjang berlaku, dan strategi. menutup panjang apabila isyarat pendek muncul.
Ini adalah strategi yang sangat mudah dan intuitif untuk mengikuti trend. Ia menggunakan persilangan dua MA dari tempoh yang berbeza untuk mengenal pasti titik pembalikan trend, yang boleh lebih dipercayai daripada satu sistem MA. Penapis garis isyarat perdagangan juga membantu mengelakkan isyarat palsu dalam pasaran yang bergolak.
Berbanding dengan stop loss, ia mengamalkan pemikiran trend untuk memaksimumkan keuntungan semasa trend yang lebih lama tanpa dihentikan.
Strategi ini mempunyai beberapa parameter dan mudah difahami dan disesuaikan, menjadikannya sesuai sebagai strategi perdagangan algo pemula.
Risiko terbesar strategi ini adalah tempoh MA yang dipilih dengan tidak betul yang mengakibatkan isyarat yang buruk. Jika len1 terlalu lama, pergerakan trend awal akan terlepas; jika terlalu pendek, whipsaws meningkat. Jika len2 terlalu lama, penyesuaian kedudukan akan ditangguhkan; jika terlalu pendek, ia mungkin terganggu oleh bunyi pasaran.
Parameter boleh dioptimumkan dengan mencuba nilai len1 dan len2 yang berbeza untuk mencari kombinasi yang terbaik. MA adaptif juga boleh diuji untuk mengubah tempoh secara dinamik. Penapis juga boleh diperbaiki untuk mengurangkan isyarat palsu.
Strategi mengikut trend juga harus mengawal kerugian pada perdagangan tunggal, melalui stop loss atau saiz kedudukan.
Strategi crossover MA berganda adalah trend utama yang mengikuti wakil. Sistem crossover MA berganda yang mudah memberikan isyarat yang stabil, sementara penapis membantu mengelakkan bunyi bising. Dengan tempoh MA yang dioptimumkan, ia dapat mencapai prestasi yang baik. Strategi ini berfungsi dengan baik sebagai strategi perdagangan algo pemula untuk dipelajari.
/*backtest start: 2022-10-10 00:00:00 end: 2023-10-16 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //by afrazium //@version=3 strategy(title="SMA Diff strat", shorttitle="SMAD STR", overlay=false, initial_capital=1, precision=8, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1, calc_on_order_fills= false, calc_on_every_tick=false, pyramiding=0) len1 = input(50, minval=1, title="Length1"), len2 = input(100, minval=1, title="Length2"), smo = input(1, minval=1, title="Smoothing") src = input(ohlc4, title="Source") mid = src expr1 = sma(src, len1), expr2 = sma(src, len2) dif = (expr1 - expr2), out1 = (mid - expr1), out2 = (mid - expr2), out3 = sma(out1, smo) long = crossover(out3, dif) ? out3 : na, short = crossunder(out3, dif) ? out3 : na plot(out3, color=black, linewidth=2), hline(0) clr = out2 >= out1 ? lime : red, plot(dif, color=clr, linewidth=2) plot(long, title = 'Crossover', color = green, style = circles, linewidth=4), plot(short, title = 'Crossunder', color = red, style = circles, linewidth=4) strategy.entry("buy", strategy.long, when=crossover(out1, dif)) strategy.close("buy", when=crossunder(out1, dif)) //plot(out2, color=blue, linewidth=2) //A = plot(mid/10, color=red, linewidth=1, transp=100), B = plot(mid/20, color=red, linewidth=1, transp=100) //C = plot(-mid/10, color=green, linewidth=1, transp=100), D = plot(-mid/20, color=green, linewidth=1, transp=100) //fill(A, B, color=red), fill(C, D, color=green)