
Strategi ini menggunakan beberapa pergerakan rata-rata untuk menghasilkan isyarat dagangan. Apabila harga melampaui garis rata-rata yang naik, buatlah lebih banyak; apabila harga melampaui garis rata-rata yang turun, buatlah lebih sedikit.
Kode menggunakan 4 garis purata bergerak dengan tempoh yang berlainan iaitu 21 hari, 50 hari, 100 hari dan 200 hari. Apabila harga menembusi garis rata-rata ini, anda masuk lebih banyak, dan apabila harga jatuh ke bawah garis rata-rata ini, masuk kosong.
Idea teras strategi ini adalah menggunakan purata bergerak untuk menilai trend harga. Apabila harga melanggar garis purata naik, menunjukkan bahawa ia sedang dalam trend naik, lebih banyak harus dilakukan; apabila harga jatuh ke bawah garis purata turun, menunjukkan bahawa ia sedang dalam trend menurun, harus dihentikan. Menggunakan garis purata yang berbeza untuk tempoh yang berbeza, trend dapat ditentukan dengan lebih tepat, dan juga dapat mengesahkan isyarat perdagangan melalui keserasian trend.
Keuntungan utama dari strategi ini ialah:
Risiko utama strategi ini ialah:
Risiko ini boleh dikurangkan dengan menyesuaikan parameter garis purata dan mengoptimumkan strategi stop loss.
Strategi ini boleh dioptimumkan dalam beberapa aspek:
Strategi ini secara keseluruhannya adalah strategi pengesanan trend yang tipikal. Kelebihannya adalah idea yang jelas, mudah difahami dan dilaksanakan; Kelemahannya adalah mudah menghasilkan isyarat yang salah.
/*backtest
start: 2022-11-15 00:00:00
end: 2023-11-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("DolarBasar by AlperDursun", shorttitle="DOLARBASAR", overlay=true)
// Input for Moving Averages
ma21 = ta.sma(close, 21)
ma50 = ta.sma(close, 50)
ma100 = ta.sma(close, 100)
ma200 = ta.sma(close, 200)
// Calculate the lowest point of the previous candle for stop loss
lowestLow = ta.lowest(low, 2)
// Calculate the highest point of the previous candle for stop loss
highestHigh = ta.highest(high, 2)
// Calculate take profit levels
takeProfitLong = lowestLow - 3 * (lowestLow - highestHigh)
takeProfitShort = highestHigh + 3 * (lowestLow - highestHigh)
// Entry Conditions
longCondition = ta.crossover(close, ma21) or ta.crossover(close, ma50) or ta.crossover(close, ma100) or ta.crossover(close, ma200)
shortCondition = ta.crossunder(close, ma21) or ta.crossunder(close, ma50) or ta.crossunder(close, ma100) or ta.crossunder(close, ma200)
// Stop Loss Levels
stopLossLong = lowestLow * 0.995
stopLossShort = highestHigh * 1.005
// Exit Conditions
longExitCondition = low < stopLossLong or high > takeProfitLong
shortExitCondition = high > stopLossShort or low < takeProfitShort
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.entry("Short", strategy.short)
if (longExitCondition)
strategy.exit("Long Exit", from_entry="Long", stop=stopLossLong, limit=takeProfitLong)
if (shortExitCondition)
strategy.exit("Short Exit", from_entry="Short", stop=stopLossShort, limit=takeProfitShort)