
La stratégie utilise les ruptures et les rebondissements de multiples moyennes mobiles pour générer des signaux de négociation. Lorsque le prix franchit la moyenne ascendante, faites plus; lorsque le prix tombe sous la moyenne descendante, faites moins.
Le code utilise 4 moyennes mobiles de différentes périodes: la ligne 21, la ligne 50, la ligne 100 et la ligne 200. L’entrée est plus élevée lorsque le prix franchit ces lignes moyennes et vide lorsque le prix tombe sous ces lignes moyennes.
L’idée centrale de cette stratégie est d’utiliser des moyennes mobiles pour déterminer la tendance des prix. Lorsque les prix franchissent la ligne moyenne ascendante, cela signifie qu’ils sont actuellement en tendance à la hausse, il faut faire plus; lorsque les prix franchissent la ligne moyenne descendante, cela signifie qu’ils sont actuellement en tendance à la baisse, il faut faire moins.
Les principaux avantages de cette stratégie sont:
Les principaux risques de cette stratégie sont les suivants:
Ces risques peuvent être atténués en ajustant les paramètres de la moyenne et en optimisant les stratégies de stop-loss.
Cette stratégie peut être optimisée dans les domaines suivants:
Cette stratégie est une stratégie de suivi de tendance typique. L’avantage est que l’idée est claire, facile à comprendre et à mettre en œuvre. L’inconvénient est qu’il est facile de générer de faux signaux.
/*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)