
Эта стратегия использует множественные прорывы и разрывы в движущихся средних для создания торговых сигналов. Когда цена пробивает среднюю вверх, делайте больше; когда цена падает ниже средней вниз, делайте больше.
В коде используются 4 различных циклов скользящих средних на 21-й, 50-й, 100-й и 200-й линии. При прорыве цены на эти средние линии ввод производится, а при падении цены на эти средние линии ввод производится. Кроме того, стратегия устанавливает стоп-лосс и стоп-стоп.
Основная идея этой стратегии заключается в том, чтобы использовать движущиеся средние для определения ценового тренда. Когда цена пересекает восходящую среднюю линию, это означает, что она находится в восходящей тенденции, и следует сделать больше; когда цена падает ниже средней линии, это означает, что она находится в нисходящей тенденции, и следует сделать пустоту. Использование средних линий с несколькими различными циклами позволяет более точно определить тенденцию, а также проверять торговые сигналы путем согласованности тенденции.
Основные преимущества этой стратегии:
Основные риски этой стратегии:
Эти риски могут быть снижены путем корректировки среднелинейных параметров и оптимизации стратегии стоп-стоп.
Эта стратегия может быть оптимизирована в следующих аспектах:
Стратегия в целом является типичной стратегией отслеживания тенденций. Преимущества заключаются в том, что идея ясна, ее легко понять и реализовать; недостатки заключаются в том, что она может легко создавать ошибочные сигналы.
/*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)