
Стратегия использует принцип равномерного пересечения в сочетании с RSI, чтобы определить направление тренда, совершить покупку и продажу.
Эта стратегия использует среднюю линию EMA с тремя различными периодами: быстрая, средняя и медленная. Когда быстрая линия пересекает среднюю линию, она рассматривается как сигнал покупки; когда быстрая линия пересекает среднюю линию, она рассматривается как сигнал продажи.
В то же время, эта стратегия одновременно использует показатель RSI для определения перекупа и перепродажи. RSI показывает относительную силу актива через соотношение среднего роста и среднего падения в течение одного периода. Когда RSI превышает установленную линию перекупа, считается, что он находится в состоянии перекупа; когда RSI ниже установленной линии перепродажи, считается, что он находится в состоянии перепродажи.
Приобретение этой стратегии будет осуществляться при следующих условиях:
Условия продажи:
Эта стратегия использует комбинацию стратегий трендовых торгов и обратных торгов, чтобы определить направление тенденции в сочетании с RSI и обнаружить краткосрочные возможности перекупа и перепродажи.
Эта стратегия сочетает в себе пересечение средних линий и RSI, чтобы одновременно оценивать тренд и перепродажу, и фильтрует некоторые шумные сделки, вызванные ложными прорывами. Используя три средних линии, можно более четко оценить состояние тренда.
Настройка RSI также позволяет этой стратегии использовать наиболее благоприятные входные и выходные моменты в зоне перепродажи.
Стратегия также учитывает стоимость сделки и позволяет избежать подкупа, вступая только в то время, когда цена пересекает три средние линии.
Существует риск того, что стратегия будет отслеживать завышенную адаптацию. Изменение рыночной среды в реальном мире может привести к тому, что параметры больше не будут адаптироваться к новым рыночным условиям.
В условиях волатильности данная стратегия может привести к потере средств в результате создания ложных сигналов.
Настройка параметров RSI требует корректировки в зависимости от рынка. Неправильная настройка параметров может привести к пропущенным возможностям или создать ложные сигналы.
Можно рассмотреть возможность повторной проверки сигналов на графике с более длительным временным циклом, чтобы избежать помех от шума краткосрочного рынка.
Можно попробовать, прежде чем выйти на рынок, ждать прорыва или вернуться к равновесию, чтобы вновь войти в рынок, чтобы дополнительно проверить сигнал.
Можно комбинировать сигналы с другими показателями, такими как MACD, Брин-пояса и т. д., чтобы повысить уровень поражения Entry.
Для оптимизации параметров можно использовать алгоритмы машинного обучения, чтобы сделать стратегию более адаптивной.
Можно рассмотреть возможность включения стратегии остановки убытков, чтобы своевременно прекратить убытки при неопределенности тренда.
Стратегия объединяет эквивалентный пересечение и 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)