
Strategi perdagangan berbalik dua garis rata-rata menghasilkan isyarat perdagangan berdasarkan hubungan harga dengan purata bergerak dengan mengira purata bergerak sederhana dari dua tempoh yang berbeza dalam jangka pendek dan jangka panjang. Apabila anda melewati garis rata-rata jangka panjang di atas garis rata-rata jangka pendek, anda akan melakukan lebih banyak; apabila anda melewati garis rata-rata jangka panjang di bawah garis rata-rata jangka pendek, anda akan melakukan lebih banyak.
Strategi ini menggunakan parameter input untuk menetapkan purata bergerak sederhana dengan dua panjang kitaran yang berbeza. Garis kitaran pendek dikenali sebagai garis cepat dan garis jangka panjang dikenali sebagai garis perlahan. Garis cepat bertindak balas terhadap perubahan harga dengan lebih cepat, menangkap trend jangka pendek. Garis perlahan bertindak balas terhadap perubahan harga dengan lebih perlahan, menyaring kebisingan pasaran jangka pendek, menangkap trend utama.
Secara khusus, strategi menggunakan fungsi sma () untuk mengira dua garis rata-rata dan memberikan nilai pengiraan kepada xSMA () dan garis cepat. Strategi menggunakan harga dekat untuk mengira garis rata-rata. Apabila harga dekat melewati xSMA, lakukan lebih banyak; apabila harga dekat melewati xSMA, lakukan kosong.
Tetapkan titik berhenti kehilangan untuk setiap perdagangan, dan segera berhenti kehilangan apabila titik berhenti kehilangan dicapai. Pada masa yang sama, strategi menunjukkan hubungan harga dengan garis lambat melalui fungsi barcolor pada garis K: apabila lebih banyak, garis K adalah hijau; apabila kosong, garis K adalah merah; apabila kosong, garis K adalah biru.
Risiko boleh dikurangkan dengan menyesuaikan parameter garis rata-rata, mengoptimumkan strategi stop loss, membatalkan had masa atau menetapkan tempoh perdagangan yang lebih munasabah. Anda juga boleh mempertimbangkan untuk menggabungkan indikator lain sebagai syarat penapisan, untuk mengelakkan terlalu banyak isyarat palsu.
Strategi perdagangan berbalik dua garis rata secara keseluruhan adalah strategi pengesanan trend yang mudah dan praktikal. Ia memanfaatkan sepenuhnya fungsi lancar garis rata untuk mengenal pasti arah trend, dan bekerjasama dengan garis rata yang cepat dan perlahan untuk menghasilkan isyarat perdagangan. Strategi ini mudah dilaksanakan, jelas, sesuai untuk pemula. Tetapi ia mungkin menghasilkan lebih banyak isyarat palsu dan masalah lag.
/*backtest
start: 2023-09-15 00:00:00
end: 2023-10-15 00:00:00
period: 4h
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
timeinrange(res, sess) => not na(time(res, sess)) ? 1 : 0
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)
timeframe = input(title="Time Frame", defval="15")
timerange = input(title="Time Range", defval="2300-0800")
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 and timeinrange(timeframe, timerange))
strategy.entry("Long", strategy.long)
if (possig == -1 and timeinrange(timeframe, timerange))
strategy.entry("Short", strategy.short)
if (timeinrange(timeframe, timerange) == 0)
strategy.close_all()
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)