Эта стратегия использует принцип экспоненциальной скользящей средней (EMA), в сочетании с индикатором RSI, для определения направления тренда для входов и выходов.
Стратегия использует 3 линии EMA с различными периодами - быстрые, средние и медленные линии. Сигнал покупки генерируется, когда быстрая EMA пересекает среднюю EMA, а сигнал продажи генерируется, когда быстрая EMA пересекает среднюю EMA.
Стратегия также включает в себя индикатор RSI для измерения условий перекупленности и перепродажи. RSI рассчитывает соотношение средних дней роста к средним дням падения за период, чтобы показать относительную силу актива. Значения выше перекупленного порога сигнализируют о перекупленных условиях, а значения ниже перепроданного порога сигнализируют о перепроданных условиях.
Условия покупки стратегии:
Условия продажи:
Используя перекрестки EMA для определения направления тренда в сочетании с RSI для выявления краткосрочных возможностей реверсии, эта стратегия использует как следующие за трендом, так и средние концепции реверсии.
Эта стратегия сочетает в себе перекрестки EMA и RSI для измерения как тренда, так и уровня перекупа/перепродажи, фильтруя ложные прорывы и шумные сделки.
Настройки RSI позволяют стратегии сопоставлять входы и выходы в выгодных зонах перекупленности/перепроданности.
Требование к цене пересечь все 3 линии EMA перед входом в торговлю помогает избежать обмана.
Как и все стратегии с обратным тестированием, эта стратегия подвергается риску перенапряжения обратного тестирования.
На рынках с различными показателями стратегия может генерировать ложные сигналы и приносить убытки.
Плохая настройка параметров RSI может привести к упущенным возможностям или ложным сигналам.
Подумайте о добавлении проверки в более длительные сроки, чтобы избежать шума.
Дождитесь повторного тестирования линий EMA, прежде чем вводить сделки для подтверждения сигнала.
Включите другие индикаторы, такие как MACD, полосы Боллинджера для подтверждения комбинированного сигнала.
Используйте машинное обучение для оптимизации параметров надежности.
Подумайте о добавлении стоп-лосса для быстрого выхода из неопределенных трендов.
Эта стратегия сочетает в себе EMA кроссоверы и RSI для выявления тренда, используя при этом краткосрочные обратные тенденции. Она эффективно использует как концепции следующего тренда, так и концепции реверсии среднего значения. Существует возможность оптимизации с помощью проверки сигналов, настройки параметров, остановки потерь и т. Д. Но необходимо учитывать перенапряжение бэкстеста и оценивать производительность в режиме реального времени. В целом, это служит полезным ориентиром для обучения, но требует дальнейшей проверки на живых рынках.
/*backtest start: 2023-09-24 00:00:00 end: 2023-10-24 00:00:00 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/ // © chadsadachai //@version=5 strategy("EMA Cross V1", overlay= true) //rsi length = input.int(title = "Rsi Lenght" , defval=26 , minval=1, maxval=50) overS = input.int(title = "Rsi OVS line" , defval=30 , minval=1, maxval=40) overB = input.int(title = "Rsi OVB line" , defval=70 , minval=1, maxval=100) mLine = input.int(title = "Rsi Medium line" , defval=42 , minval=1, maxval=60) price = close vrsi = ta.rsi(price, length) co = vrsi >= mLine and vrsi < overB cu = ta.crossunder(vrsi, overB) //ema F = input.int(title = "EMA Fast" , defval=17 , minval=1, maxval=50) M = input.int(title = "EMA Medium" , defval=35, minval=1, maxval=100) S = input.int(title = "EMA Slow" , defval=142, minval=1, maxval=200) emaF = ta.ema(price , F) emaM = ta.ema(price , M) emaS = ta.ema(price , S) //plot plot(emaF , color = color.green , linewidth=1) plot(emaM , color = color.yellow , linewidth=1) plot(emaS , color = color.red , linewidth=1) //Time Stamp start = timestamp(input.int(title = "Start Year" , defval=2011 , minval=2011, maxval=2025), input.int(title = "Start Month" , defval=1 , minval=1, maxval=12), input.int(title = "Start Day" , defval=1 , minval=1, maxval=31), 0, 0) end = timestamp(input.int(title = "End Year" , defval=2025 , minval=2011, maxval=2025), input.int(title = "End Month" , defval=1 , minval=1, maxval=12), input.int(title = "End Day" , defval=1 , minval=1, maxval=31), 0, 0) // years = input.int(title = "Year" , defval=2018 , minval=2011, maxval=2025) // months = input.int(title = "Month" , defval=1 , minval=1, maxval=12) // days = input.int(title = "Day" , defval=1 , minval=1, maxval=31) //longCondition Default // longCondition1 = EMA_Fast >= EMA_Slow and EMA_Fast >= EMA_Medium//ta.crossover(EMA_Fast, EMA_Slow) EMA_Fast > EMA_Slow and EMA_Medium > EMA_Slow // longCondition3 = price >= EMA_Medium and price > EMA_Slow // longCondition2 = vrsi >= overSold and vrsi <= overBought //longCondition & shortCondition ETHUSD // 1.price > emaF > emaM > emaS // 2.rsi overcross overS longC1 = price > emaF and price > emaM and price > emaS // longC1 = ta.crossover(emaF, emaM) longC2 = if longC1 co // shortC1 = EMA_Fast < EMA_Medium //and EMA_Fast < EMA_Slow and EMA_Medium < EMA_Slow //and cu // shortC2 = overBought > vrsi //and vrsi < overBought //overSold < vrsi and vrsi < mediumLine // exitLong Condition // 1.price < emaF < emaM < emaS // 2.rsi overcross mediumLine exitLong1 = ta.crossunder(emaF, emaM) //or emaF < emaM//and price < emaM and price < emaF exitLong2 = ta.crossunder(vrsi,mLine) //exitLong3 = price < emaM //strategy.entry if time >=start and time <=end strategy.entry("Buy", strategy.long , when = longC1 and longC2) // if(exitLong1 or exitLong2) strategy.close("Buy" , when = exitLong1 or exitLong2) // exitShort1 = EMA_Fast > EMA_Medium // //exitShort2 = ta.crossover(vrsi , mediumLine) // exitShort2 = ta.crossunder (vrsi,mediumLine) // strategy.close("Short" , when = exitShort1 or exitShort2) // //shortCondition = cu // //if (shortCondition1 and shortCondition2) // //strategy.entry("My Short Entry Id", strategy.short)