
Эта стратегия определяет тенденции и отслеживает тенденции, рассчитывая различные типы средних линий (простые скользящие средние, индексные скользящие средние, EMA, Hull Moving Average, HMA и VWMA) и находя их пересечения. Более короткие средние, которые пересекают более длинные средние сверху, генерируют сигнал покупки. Более короткие средние, которые пересекают более длинные средние сверху, генерируют сигнал продажи.
Эта стратегия основана на сравнении отношений между двумя различными средними линиями. В частности, с помощью входных параметров устанавливается тип и длина двух средних линий. Первая средняя линия имеет длинную длину и представляет собой долгосрочную тенденцию, а вторая средняя линия имеет короткую длину и представляет собой текущую краткосрочную тенденцию.
Когда краткосрочная средняя линия сверху пересекает долгосрочную среднюю линию, это означает, что краткосрочная тенденция укрепляется, и цена входит в восходящую тенденцию, поэтому на этом перекрестке посылается сигнал покупки. Напротив, когда краткосрочная средняя линия сверху пересекает долгосрочную среднюю линию, это означает, что краткосрочная тенденция ослабляется, и цена входит в нисходящую тенденцию, поэтому на этом перекрестке посылается сигнал продажи.
Это означает, что вы можете вести торговлю в соответствии с рыночными тенденциями.
Решение риска:
Эта стратегия основана на классическом подходе к определению основных тенденций с пересечением равномерных линий, гибко применяется с помощью различных комбинаций равномерных линий. Логика стратегии проста, легко реализуема и подходит для автоматизации торгов. В целом, эта стратегия имеет некоторую практическую полезность, но есть также место для оптимизации.
/*backtest
start: 2023-12-31 00:00:00
end: 2024-01-30 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
//study(title="MA Crossover Strategy", overlay = true)
strategy("MA Crossover Strategy", overlay=true)
src = input(close, title="Source")
price = request.security(syminfo.tickerid, timeframe.period, src)
ma1 = input(25, title="1st MA Length")
type1 = input("HMA", "1st MA Type", options=["SMA", "EMA", "HMA", "VWMA"])
ma2 = input(7, title="2nd MA Length")
type2 = input("HMA", "2nd MA Type", options=["SMA", "EMA", "HMA", "VWMA"])
f_hma(_src, _length)=>
_return = wma((2*wma(_src, _length/2))-wma(_src, _length), round(sqrt(_length)))
price1 = if (type1 == "SMA")
sma(price, ma1)
else
if (type1 == "EMA")
ema(price, ma1)
else
if (type1 == "VWMA")
vwma(price, ma1)
else
f_hma(price, ma1)
price2 = if (type2 == "SMA")
sma(price, ma2)
else
if (type2 == "EMA")
ema(price, ma2)
else
if (type2 == "VWMA")
vwma(price, ma2)
else
f_hma(price, ma2)
//plot(series=price, style=line, title="Price", color=black, linewidth=1, transp=0)
plot(series=price1, style=line, title="1st MA", color=blue, linewidth=2, transp=0)
plot(series=price2, style=line, title="2nd MA", color=green, linewidth=2, transp=0)
longCondition = crossover(price1, price2)
if (longCondition)
strategy.entry("Long", strategy.long)
shortCondition = crossunder(price1, price2)
if (shortCondition)
strategy.entry("Short", strategy.short)