Эта стратегия использует двойные скользящие средние для определения тренда, чтобы дать сигнал о покупке и продаже. Когда быстрая скользящая средняя пересекает медленную скользящую среднюю снизу, появляется золотая скользящая средняя и покупается. Когда быстрая скользящая средняя пересекает медленную скользящую среднюю снизу, появляется мертвая скользящая средняя и продается.
Стратегия состоит из следующих частей:
Оцилляторная величина рассчитывается в виде процента от цены. Значение оциллятора - это процент от цены минус среднее значение. Среднее значение рассчитывается, например, как среднее значение 20-дневного максимума и минимума.
Вычислите скользящие средние значения колебателей, например, 20-дневные скользящие средние для корпуса.
Вычислить значение задержки для скользящей средней, например, задержка на 12 дней.
Определение того, будет ли движущаяся средняя наклонена или наклонена, задерживает движущуюся среднюю, появляется сигнал золотой или мертвой вилки.
Сигналы покупки и продажи.
В частности, стратегия сначала рассчитывает значение колебателя цены, затем рассчитывает скользящее среднее колебателя, а затем рассчитывает значение задержки этого скользящего среднего.
Когда колебатель пересекает задержанную скользящую среднюю на скользящей средней, он создает золотое форкирование, делая больше; когда колебатель пересекает задержанную скользящую среднюю ниже скользящей средней, он создает мертвое форкирование, делая пустоту.
Таким образом, можно определить направление торговли, судя по пересечению двойных скользящих средних.
Эта стратегия имеет следующие преимущества:
Использование двойных скользящих средних фильтрует ложные сигналы, повышая надежность сигнала.
Используйте комбинацию быстрой и медленной средней линии, чтобы уловить среднюю тенденцию. Быстрая средняя линия чувствительна к изменениям цены, медленная средняя линия имеет запаздывание, комбинация может быть использована для удаления краткосрочного шума и одновременного захвата средней тенденции.
Использование колебателей позволяет выделить прорывные точки и создать более четкие торговые сигналы.
Настраиваемые алгоритмы и параметры для подхода к различным рыночным условиям.
Стратегическая логика проста, понятна, легко понятна и реализуема, подходит для начинающих.
Также существуют следующие риски:
Крушение двойных скользящих средних приводит к задержке сигнала и может привести к пропуску оптимальной точки входа.
Двойная подвижная средняя может привести к ошибочным сигналам в рыночной системе.
По словам эксперта, “после нескольких недель ожидания, мы не сможем определить, насколько сильна или слаба тенденция, и, возможно, мы уйдем раньше времени в бычьем рынке”.
PARAMETERS имеет слишком много регулируемых параметров, что затрудняет оптимизацию для поиска оптимальной комбинации параметров.
Нет механизмов по сдерживанию убытков, нет возможности контролировать убытки.
Эта стратегия может быть оптимизирована в следующих аспектах:
Оптимизация типов и параметров движущихся средних для тестирования стабильности различных комбинаций на различных рынках.
Добавление трендовых индикаторов, таких как ADX, чтобы избежать ненужных сделок из-за ошибочных сигналов.
Добавление стоп-стратегий, таких как движущийся стоп или стоп-проценты, для контроля одиночных потерь.
В сочетании с другими показателями, такими как энергия объема торговли, RSI и т. Д., улучшается качество торговых сигналов.
Автоматическая оптимизация параметров с использованием методов машинного обучения, чтобы получить более стабильные параметры.
Рассмотреть возможность соответствующего смягчения условий входа, чтобы уменьшить вероятность пропусков.
Двойная подвижная средняя стратегия, использующая комбинацию быстрого и медленного средних линий, захватывает переломные моменты среднесрочного тренда цены, отсеивая в то же время краткосрочный рыночный шум, чтобы создать торговый сигнал. Преимущества этой стратегии просты, легко реализовать, легко понять, дружественны новичкам. Но есть и недостатки, такие как создание ошибочных сигналов, невозможность определить силу тренда.
/*backtest
start: 2023-09-06 00:00:00
end: 2023-10-06 00:00:00
period: 4h
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/
// © EvoCrypto
//@version=4
strategy("Distance Oscillator Strategy- evo", shorttitle="Distance Oscillator Strategy")
// INPUTS {
na_1 = input(false, title="────────────{ Oscillator }──────────────")
// Osc_Src = input(close, title="Oscillator Source ")
Example_Length = input(20, title="Example Length", minval=1)
Osc_Src = (highest(Example_Length) + lowest(Example_Length)) / 2
// Strategy can not let you choose a Moving Average to connect with like the study version, so I use the MA above as example
Osc_Format = input("Percent",title="Oscillator Format", options=["Percent", "Currency"])
na_2 = input(false, title="─────────────{ Average }──────────────")
Average_Type = input("Hull", title="Average Type", options=["Hull", "Sma", "Ema", "Wma"])
Length = input(50, title="Average Length", minval=1)
Lagg = input(12, title="Average Lagg", minval=1)
Display_MA = input(true, title="Display Average")
// }
// SETTINGS {
Osc_Sum =
Osc_Format == "Percent" ? (close - Osc_Src) / close * 100 :
Osc_Format == "Currency" ? (close - Osc_Src) : na
Osc_MA = Display_MA == false ? na:
Average_Type == "Hull"? hma(Osc_Sum, Length) :
Average_Type == "Sma" ? sma(Osc_Sum, Length) :
Average_Type == "Ema" ? ema(Osc_Sum, Length) :
Average_Type == "Wma" ? wma(Osc_Sum, Length) : na
Osc_MA_1 = Osc_MA[Lagg]
Cross_Up = crossover( Osc_MA, Osc_MA_1)
Cross_Down = crossunder(Osc_MA, Osc_MA_1)
Osc_Color = Osc_Sum > 0 ? color.new(#bbdefb, 70) : Osc_Sum < 0 ? color.new(#000000, 70) : na
Average_Color = Osc_MA > Osc_MA_1 ? color.new(#311b92, 100) : Osc_MA < Osc_MA_1 ? color.new(#b71c1c, 100) : na
// }
// PLOT {
plot(Osc_Sum, title="Oscillator", color=Osc_Color, style=plot.style_histogram, linewidth=2)
Plot_0 = plot(Osc_MA, title="Osc Average",color=#b71c1c, linewidth=2)
Plot_1 = plot(Osc_MA_1, title="Osc Average",color=#311b92, linewidth=2)
fill(Plot_0, Plot_1, title="Average", color=Average_Color)
plotshape(Cross_Up ? Osc_MA_1 : na, title="Cross Up", color=#bbdefb, location=location.absolute, size=size.tiny, style=shape.circle)
plotshape(Cross_Down ? Osc_MA_1 : na, title="Cross Down", color=#000000, location=location.absolute, size=size.tiny, style=shape.circle)
// }
// STRATEGY {
if (Cross_Up)
strategy.entry("Long", strategy.long)
if (Cross_Down)
strategy.entry("Short", strategy.short)
// }