
Это количественная торговая стратегия, основанная на двух равнолинейных перекрестных сигналах. Стратегия использует два движущихся средних, одно как основную сигнальную линию, а другое как гладкую сигнальную линию. Для создания торговых сигналов, позволяющих отслеживать рыночные тенденции и динамику, используется мониторинг пересечения цены и гладкой сигнальной линии.
В стратегии используются два уровня подсчета скользящих средних. Сначала вычисляется базовое скользящее среднее ((дифолтный цикл - 9), затем проводится вторичная гладкая обработка этой средней (дифолтный цикл - 5). В стратегии предлагается выбор из нескольких методов подсчета средних, включая простые скользящие средние (SMA), показательные скользящие средние (EMA), плоские скользящие средние (SMMA), весовые скользящие средние (WMA) и весовые скользящие средние (VWMA).
Это улучшенная версия классической стратегии отслеживания тенденций, повышающая стабильность при сохранении простоты стратегии с помощью дизайна двойных движущихся средних. Стратегия имеет хорошую масштабируемость и гибкость, может адаптироваться к различным рыночным условиям с помощью оптимизации параметров и расширения функций. Однако пользователям необходимо следить за контролем стоимости торговли и управлять рисками.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Moving Average 1.0 Strategy", overlay=true)
// Input for Moving Average Length
len = input.int(9, minval=1, title="Length")
src = input(close, title="Source")
offset = input.int(title="Offset", defval=0, minval=-500, maxval=500)
// Calculate the Moving Average
out = ta.sma(src, len)
// Plot the Moving Average
plot(out, color=color.blue, title="MA", offset=offset)
// Function to choose the type of moving average
ma(source, length, type) =>
switch type
"SMA" => ta.sma(source, length)
"EMA" => ta.ema(source, length)
"SMMA (RMA)" => ta.rma(source, length)
"WMA" => ta.wma(source, length)
"VWMA" => ta.vwma(source, length)
// Input for Smoothing Method and Length
typeMA = input.string(title="Method", defval="SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Smoothing")
smoothingLength = input.int(title="Smoothing Length", defval=5, minval=1, maxval=100, group="Smoothing")
// Calculate the Smoothing Line
smoothingLine = ma(out, smoothingLength, typeMA)
// Plot the Smoothing Line
plot(smoothingLine, title="Smoothing Line", color=color.rgb(120, 66, 134, 35), offset=offset)
// Strategy Logic
if (ta.crossover(close, smoothingLine))
strategy.entry("Buy", strategy.long)
if (ta.crossunder(close, smoothingLine))
strategy.entry("Sell", strategy.short)