
Эта стратегия основана на принципе движущихся средних движущихся движущихся средних движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся движущихся
Эта стратегия использует пользовательские настройки для краткосрочных циклов движущихся средних, долгосрочных циклов движущихся средних, выхода из циклов движущихся средних, а также для расчета каждого движущегося среднего.
Когда краткосрочная скользящая средняя пересекает долгосрочную скользящую среднюю с нижнего направления, создается сигнал к покупке. Это означает, что краткосрочная тенденция превращается в восходящую тенденцию и может быть куплена.
Когда цена закрытия падает и выходит из движущейся средней, создается сигнал продажи. Это означает, что тенденция изменилась, и следует выйти из позиции.
Таким образом, торговый сигнал для стратегии исходит из пересечения краткосрочных и долгосрочных скользящих средних, а также из связи между ценой закрытия и выходом из скользящих средних.
Эта стратегия имеет следующие преимущества:
Это очень просто, легко понять и легко реализовать.
Настраиваемые параметры, адаптированные к различным рыночным условиям.
Основные тенденции фиксируются с помощью фильтрации шума с помощью скользящих средних.
Технические показатели, такие как тренд, поддержка и сопротивление, могут быть оптимизированы.
Уровень прибыли контролируется, есть механизм сдерживания убытков.
Также существуют следующие риски:
На рынке, где нет сильной тенденции, легко получить ложные сигналы.
Неправильная настройка параметров может привести к пропуску тренда или созданию слишком много недействительных сделок.
Неразумная установка стоп-позиции может увеличить убытки.
Неудачный прорыв может привести к убыткам.
Необходимо своевременно корректировать параметры, чтобы адаптироваться к изменениям рынка.
Решение риска включает в себя: оптимизацию параметров, фильтрацию сигналов в сочетании с другими показателями, корректировку стоп-позиции, определение тенденции и участие в ней.
Эта стратегия может быть оптимизирована в следующих аспектах:
Разработка механизмов определения трендов, после определения трендов создание торговых сигналов.
Фильтрация сигналов в сочетании с количеством сделок или показателями колебаний.
Динамическая оптимизация циклических параметров скользящих средних.
Оптимизация механизма остановки убытков, реализация мобильной остановки убытков.
В сочетании с поддержкой и сопротивлением, а также другими показателями, дополнительно подтверждаются торговые сигналы.
Параметры корректируются в зависимости от разных сортов и циклов.
В целом, эта стратегия является простой и практичной стратегией отслеживания тенденций. Она может корректировать параметры в зависимости от рыночных условий, чтобы уловить основные направления тенденций в трендовых ситуациях. Но также следует обратить внимание на риск, связанный с предупреждением ошибок в оценке тенденций, которые необходимо постоянно оптимизировать для адаптации к изменениям рынка.
/*backtest
start: 2022-10-30 00:00:00
end: 2023-11-05 00:00:00
period: 1d
basePeriod: 1h
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/
// © TwoChiefs
//@version=4
strategy("John EMA Crossover Strategy", overlay=true)
////////////////////////////////////////////////////////////////////////////////
// BACKTESTING RANGE
// From Date Inputs
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2020, title = "From Year", minval = 1970)
// To Date Inputs
toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)
// Calculate start/end date and time condition
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
////////////////////////////////////////////////////////////////////////////////
//CREATE USER-INPUT VARIABLES
periodShort = input(13, minval=1, title="Enter Period for Short Moving Average")
smoothingShort = input(title="Choose Smoothing Type for Short Moving Average", defval="EMA", options=["RMA", "SMA", "EMA", "WMA", "VWMA", "SMMA", "DEMA", "TEMA", "HullMA", "LSMA"])
periodLong = input(48, minval=1, title="Enter Period for Long Moving Average")
smoothingLong = input(title="Choose Smoothing Type for Long Moving Average", defval="EMA", options=["RMA", "SMA", "EMA", "WMA", "VWMA", "SMMA", "DEMA", "TEMA", "HullMA", "LSMA"])
periodExit = input(30, minval=1, title="Enter Period for Exit Moving Average")
smoothingExit = input(title="Choose Smoothing Type for Exit Moving Average", defval="EMA", options=["RMA", "SMA", "EMA", "WMA", "VWMA", "SMMA", "DEMA", "TEMA", "HullMA", "LSMA"])
src1 = close
pivot = (high + low + close) / 3
//MA CALCULATION FUNCTION
ma(smoothing, src, length) =>
if smoothing == "RMA"
rma(src, length)
else
if smoothing == "SMA"
sma(src, length)
else
if smoothing == "EMA"
ema(src, length)
else
if smoothing == "WMA"
wma(src, length)
else
if smoothing == "VWMA"
vwma(src, length)
else
if smoothing == "SMMA"
na(src[1]) ? sma(src, length) : (src[1] * (length - 1) + src) / length
else
if smoothing == "HullMA"
wma(2 * wma(src, length / 2) - wma(src, length), round(sqrt(length)))
//ASSIGN A MOVING AVERAGE RESULT TO A VARIABLE
shortMA=ma(smoothingShort, pivot, periodShort)
longMA=ma(smoothingLong, pivot, periodLong)
exitMA=ma(smoothingExit, pivot, periodExit)
//PLOT THOSE VARIABLES
plot(shortMA, linewidth=4, color=color.yellow,title="The Short Moving Average")
plot(longMA, linewidth=4, color=color.blue,title="The Long Moving Average")
plot(exitMA, linewidth=1, color=color.red,title="The Exit CrossUnder Moving Average")
//BUY STRATEGY
buy = crossover(shortMA,longMA) ? true : na
exit = crossunder(close,exitMA) ? true : na
strategy.entry("long",true,when=buy and time_cond)
strategy.close("long",when=exit and time_cond)
if (not time_cond)
strategy.close_all()