Эта стратегия относится к стратегии отслеживания трендов, которая реализует перекрестный плюс и перекрестный минус двойных равнозначных линий, рассчитывая различные типы скользящих средних. В то же время, стратегия также вводит третий пункт скользящих средних, чтобы оценить тренд, чтобы контролировать риск.
Вычислить две средние линии: MA1 и MA2, можно выбрать различные типы, такие как SMA, EMA, VWMA, а также пользовательскую длину.
Судить о скрещивании MA1 и MA2: когда MA1 наносит MA2, делать больше; когда MA1 наносит MA2 ниже, равновесно держать позицию.
(опционально) вычислить третий средний ряд MA3, длина обычно принимает более длинный цикл, например 50
Вышеуказанные правила в сочетании с отсчетными периодами завершают формирование стратегического торгового сигнала.
Помимо прочего, на перекрёстках используются дополнительные цветовые зоны, чтобы создать визуальную помощь.
Эта стратегия сочетает в себе идею отслеживания тенденций в движущихся средних и перекрестного многооборота, а также вводит третью линию для контроля риска, которая может гибко адаптироваться к различным рыночным циклам с помощью параметровой корректировки.
Используя двойную равнолинейную скрещивание, можно определить направление тренда и эффективно отслеживать его.
Поддерживает комбинацию из нескольких типов усредненных линий, которые могут быть оптимизированы для различных циклов рынка.
Введение третьей равной линии для контроля риска позволяет сократить ненужные потери.
Визуализированная перекрестная окраска улучшает опыт просмотра транзакций.
Параметры могут быть изменены и оптимизированы для различных циклов.
Правила простые, понятные и легко применяемые.
Двухлинейная стратегия может привести к потере при шокирующих ситуациях и обратном тренде. Риск может быть уменьшен путем оптимизации параметров.
Двойная равнолиния иногда приводит к ошибочным сигналам или передовым реакциям. Можно соответствующим образом увеличить цикл равнолинии или оптимизировать параметры.
Третья средняя линия может пропустить более сильный импульс. Можно проверить, как правильно сократить третью среднюю линию, чтобы уменьшить упущенную возможность получения прибыли.
Нельзя гарантировать прибыль с каждой сделки, поэтому нужно хорошо управлять убытками.
Испытание комбинаций различных типов средних линий и различных периодических параметров для поиска оптимальной пары параметров.
Оптимизация циклических параметров третьей равной линии, балансировка контроля риска и захвата прибыли.
Присоединяйтесь к стратегии Stop Loss, чтобы контролировать убытки.
Можно рассмотреть возможность использования алгоритмов машинного обучения для поиска оптимальных параметров с помощью обучения большим объемам данных.
Фильтрация и проверка сигналов в сочетании с другими показателями, такими как KD, MACD и т. д.
Двойная сбалансированная многотипная стратегия пересечения движущихся средних, интегрирующая множество функций, таких как отслеживание тенденций, контроль риска, оптимизация параметров и визуальная помощь, является очень классической и практической стратегией тренда.
/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-12 22:00:00
period: 1m
basePeriod: 1m
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/
// © HAMIDBOX
//@version=4
strategy("Multi-X by HAMID-BOX", overlay=true)
maType(source , length, type) =>
type == "SMA" ? sma(source , length) :
type == "EMA" ? ema(source , length) :
type == "RMA" ? rma(source, length) :
type == "WMA" ? wma(source, length) :
type == "VWMA" ? vwma(source, length) :
na
////////////////////////////////////////////////////////////////////////////////
colorup = #11ff00
colordn = #e91e63
/////////////////////////// MOVING AVERAGE №1 INPUTS ///////////////////////////
ma1_show = input(title="MA №1", defval=true, type=input.bool, inline="ma1")
ma1type = input(title="", defval="EMA", options=["SMA","EMA","RMA","WMA","VWMA"], inline="ma1")
ma1src = input(title="", defval=close, type=input.source, inline="ma1")
ma1Len = input(title="", defval=9, type=input.integer, inline="ma1")
ma1col = input(colorup, "", type=input.color, inline="ma1")
ma1 = maType(ma1src, ma1Len, ma1type)
ma1p = plot(ma1_show ? ma1 : na, linewidth=1, color=color.new(ma1col , 50))
/////////////////////////// MOVING AVERAGE №2 INPUTS ///////////////////////////
ma2_show = input(title="MA №2", defval=true, type=input.bool, inline="ma2")
ma2type = input(title="", defval="SMA", options=["SMA","EMA","RMA","WMA","VWMA"], inline="ma2")
ma2src = input(title="", defval=close, type=input.source, inline="ma2")
ma2Len = input(title="", defval=21, type=input.integer, inline="ma2")
ma2col = input(colordn, "", type=input.color, inline="ma2")
ma2 = maType(ma2src, ma2Len, ma2type)
ma2p = plot(ma2_show ? ma2 : na, linewidth=1, color=color.new(ma2col , 50))
/////////////////////////// MOVING AVERAGE №3 INPUTS ///////////////////////////
read = input(title="For Safe Side = Read This >>>", defval=true, tooltip="If you want to play on the safe side, Check ON Moving Average № 3, MA №3 shows the major trend, its work as a Trend-Zone,\nRule: Do not open trades if the market is below MA № 3, WHY? because Trend is Bearish and it will make more Down, NOTE:: It is possible after adding MA № 3, it will give you a small profit. But the great advantage of that, it will reduce your loss and it will also increase your Profit Factor.\nAnd if you not have any issue with Risk then you can Leave Moving Average No 3")
ma3_show = input(title="MA №3", defval=false, type=input.bool, inline="ma3")
ma3type = input(title="", defval="SMA", options=["SMA","EMA","RMA","WMA","VWMA"], inline="ma3")
// ma3srcH = input(title="", defval=high, type=input.source, inline="ma3")
// ma3srcL = input(title="", defval=low, type=input.source, inline="ma3")
ma3Len = input(title="", defval=50, type=input.integer, inline="ma3")
ma3col = input(colordn, "", type=input.color, inline="ma3")
ma3H = maType(high, ma3Len, ma3type)
ma3L = maType(low, ma3Len, ma3type)
ma3p = plot(ma3_show ? ma3H : na, linewidth=1, color=color.new(ma3col , 50))
ma3p2 = plot(ma3_show ? ma3L : na, linewidth=1, color=color.new(ma3col , 50))
Bigcross_zone_color = if ma3_show and close > ma3H
color.new(colorup , 90)
else
if ma3_show and close < ma3L
color.new(colordn , 90)
fill(ma3p , ma3p2, color=Bigcross_zone_color, title="Cross Background Color")
BigCrossSignal = close > ma3H
ZoneCrossover = crossover(close , ma3H)
///////////////////////////// BACK TESTING INPUTS //////////////////////////////
startTime = input(title="Start Time", type=input.time, defval= timestamp("01 Jan 2021"))
endTime = input(title="End Time", type=input.time, defval= timestamp("01 Jan 2100"))
inDateRange = true
//////////////////////////// PLOTING AND COOLORING /////////////////////////////
Cross = input(true, "Cross Sign ON/OFF")
maCrossOver = crossover(ma1 , ma2)
maCrossUnder = crossunder(ma1 , ma2)
cross_zone_color = ma1 > ma2 ? color.new(colorup , 85) : color.new(colordn , 85)
plotshape(Cross ? maCrossOver : na, title="CrossUP Sign", style=shape.triangleup, location=location.belowbar, color=color.white, size=size.tiny)
plotshape(Cross ? maCrossUnder : na, title="CrossDN Sign", style=shape.xcross, location=location.abovebar, color=#e91e63, size=size.tiny)
fill(ma1p , ma2p, color=cross_zone_color, title="Cross Background Color")
///////////////////////////////// (CONDITIONS) /////////////////////////////////
if maCrossOver and inDateRange
if ma3_show
strategy.entry("BUY", strategy.long, when=BigCrossSignal)
else
strategy.entry("BUY", strategy.long)
if ma3_show
strategy.entry("BUY", strategy.long, when=ZoneCrossover)
if maCrossUnder and inDateRange
strategy.close("BUY", comment="Exit")
if (not inDateRange)
strategy.close_all()