
Strategi persilangan purata bergerak adalah strategi perdagangan kuantitatif berdasarkan purata bergerak. Strategi ini menghasilkan isyarat perdagangan dengan mengira harga purata sekuriti dalam jangka masa tertentu, menggunakan persilangan purata bergerak harga, dan menghasilkan keuntungan.
Strategi ini terutamanya menggunakan persilangan purata bergerak cepat dan purata bergerak perlahan untuk menentukan trend harga dan menghasilkan isyarat perdagangan. Khususnya, menggunakan purata bergerak dengan dua panjang tempoh yang berbeza, seperti garis 10 hari dan garis 20 hari.
Apabila rata-rata bergerak cepat dari arah bawah menembusi rata-rata bergerak perlahan, dianggap bahawa pasaran berubah dari turun ke bawah, menghasilkan isyarat beli. Apabila rata-rata bergerak cepat dari arah atas jatuh dari rata-rata bergerak perlahan, dianggap bahawa pasaran berubah dari turun ke bawah, menghasilkan isyarat jual.
Dengan menangkap titik-titik perubahan dalam trend harga, strategi ini boleh membeli apabila keadaan berubah, dan menjual apabila keadaan berubah, dan menghasilkan keuntungan.
Strategi ini mempunyai kelebihan berikut:
Strategi ini juga mempunyai risiko:
Risiko ini boleh dikurangkan dengan pengoptimuman yang sesuai.
Strategi ini boleh dioptimumkan dalam beberapa arah:
Dengan mengoptimumkan strategi ini, anda dapat meningkatkan keberkesanan strategi anda.
Strategi persilangan purata bergerak secara keseluruhannya adalah strategi perdagangan kuantitatif yang mudah dipelajari dan dilaksanakan. Ia menggunakan prinsip persilangan purata harga untuk menilai pergerakan pasaran dan menghasilkan isyarat perdagangan dengan mudah dan intuitif.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
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/
// © HPotter
// Simple SMA strategy
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors
//@version=4
strategy(title="Simple SMA Strategy Backtest", shorttitle="SMA Backtest", precision=6, overlay=true)
Resolution = input(title="Resolution", type=input.resolution, defval="D")
Source = input(title="Source", type=input.source, defval=close)
xSeries = security(syminfo.tickerid, Resolution, Source)
Length = input(title="Length", type=input.integer, defval=14, minval=2)
TriggerPrice = input(title="Trigger Price", type=input.source, defval=close)
TakeProfit = input(50, title="Take Profit", step=0.01)
StopLoss = input(20, title="Stop Loss", step=0.01)
UseTPSL = input(title="Use Take\Stop", type=input.bool, defval=false)
BarColors = input(title="Painting bars", type=input.bool, defval=true)
ShowLine = input(title="Show Line", type=input.bool, defval=true)
UseAlerts = input(title="Use Alerts", type=input.bool, defval=false)
reverse = input(title="Trade Reverse", type=input.bool, defval=false)
pos = 0
xSMA = sma(xSeries, Length)
pos := iff(TriggerPrice > xSMA, 1,
iff(TriggerPrice < xSMA, -1, nz(pos[1], 0)))
nRes = ShowLine ? xSMA : na
alertcondition(UseAlerts == true and pos != pos[1] and pos == 1, title='Signal Buy', message='Strategy to change to BUY')
alertcondition(UseAlerts == true and pos != pos[1] and pos == -1, title='Signal Sell', message='Strategy to change to SELL')
alertcondition(UseAlerts == true and pos != pos[1] and pos == 0, title='FLAT', message='Strategy get out from position')
possig =iff(pos[1] != pos,
iff(reverse and pos == 1, -1,
iff(reverse and pos == -1, 1, pos)), 0)
if (possig == 1)
strategy.entry("Long", strategy.long)
if (possig == -1)
strategy.entry("Short", strategy.short)
if (UseTPSL)
strategy.close("Long", when = high > strategy.position_avg_price + TakeProfit, comment = "close buy take profit")
strategy.close("Long", when = low < strategy.position_avg_price - StopLoss, comment = "close buy stop loss")
strategy.close("Short", when = low < strategy.position_avg_price - TakeProfit, comment = "close buy take profit")
strategy.close("Short", when = high > strategy.position_avg_price + StopLoss, comment = "close buy stop loss")
nColor = BarColors ? strategy.position_avg_price != 0 and pos == 1 ? color.green :strategy.position_avg_price != 0 and pos == -1 ? color.red : color.blue : na
barcolor(nColor)
plot(nRes, title='SMA', color=#00ffaa, linewidth=2, style=plot.style_line)