
Стратегия представляет собой систему скользящих средних, основанную на 4 различных циклах SMMA (сглаженных скользящих средних) и 1 показателе EMA. Она объединяет в себе несколько инструментов технического анализа ценных бумаг для формирования торговой стратегии с помощью определения тенденций.
Стратегия использует 4 различных параметра SMMA ((3, 6, 9, 50) и 1 EMA ((200) для построения многоуровневой системы движущихся средних. Показатель SMMA эффективно фильтрует рыночный шум и определяет направление тенденции. Показатель EMA обнаруживает долгосрочные тенденции. Конкретная логика торговли:
Сигнал покупки возникает, когда короткие периодические движущиеся средние (например, 3-х циклические SMMA) пересекают более длинные периодические движущиеся средние (например, 200-циклические EMA). Сигнал продажи возникает, когда короткие периодические движущиеся средние пересекают более длинные периодические движущиеся средние (например, 200-циклические EMA).
Кроме того, в стратегии определены точки остановки для контроля риска.
Эта стратегия имеет следующие преимущества:
Многоуровневая структура скользящих средних позволяет эффективно определять направление тренда и уменьшать ложные сигналы.
Индекс SMMA эффективно отфильтровывает рыночный шум, индикатор EMA обнаруживает длинные тренды.
Применение высоколиверинговых счетов позволяет увеличить прибыль от торгов.
Установленная точка остановки убытков позволяет эффективно контролировать риск.
Оптимизированы торговые разновидности (EURUSD) и циклы (15 минут), что делает их более выгодными.
Также существуют следующие риски:
При использовании большого количества скользящих средних, можно упустить возможность краткосрочного обратного хода.
Высокий леверинг увеличивает убытки и прибыль.
К моменту появления сигнала движущейся средней, краткосрочная тенденция может быть уже перевернута.
На фоне резких колебаний курса EUR/USD возникает еще большая опасность.
Для этих рисков можно соответствующим образом скорректировать коэффициент леверинга, оптимизировать параметры для скользящих средних, ввести другие показатели, чтобы определить обратный тренд, и т. Д.
Основными направлениями оптимизации стратегии являются:
Оценка эффективности различных сортов и циклов, выбор оптимальных параметров
Тестирование различных комбинаций и количеств скользящих средних.
Увеличение объема сделок или показатель колебаний определяет кратковременную переломную точку.
Динамическая настройка для увеличения stop loss amplitude.
Вступление в состав ENU стало поворотным моментом.
Благодаря многостороннему тестированию и оптимизации можно значительно повысить стабильность и прибыльность стратегии.
Эта стратегия сочетает в себе преимущества среднелинейных индикаторов и создает прочную систему определения тенденций. Она оптимизирует торговые сорта и периоды, что идеально подходит для торговли в течение высокоуправляемых дней. С помощью параметрической корректировки и оптимизированного тестирования эта стратегия может стать эффективной и надежной алгоритмической торговой стратегией.
/*backtest
start: 2023-10-24 00:00:00
end: 2023-11-23 00:00:00
period: 1h
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/
// © SoftKill21
//@version=4
strategy("Money maker EURUSD 15min" )
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 = 2000, title = "From Year", minval = 1970)
// To Date Inputs
toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 8, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
len = input(3, minval=1, title="Length")
src = input(hl2, title="Source")
smma = 0.0
sma1 = sma(src, len)
smma := na(smma[1]) ? sma1 : (smma[1] * (len - 1) + src) / len
len2 = input(6, minval=1, title="Length")
src2 = input(hl2, title="Source")
smma2 = 0.0
sma2 = sma(src2, len2)
smma2 := na(smma2[1]) ? sma2 : (smma2[1] * (len2 - 1) + src2) / len2
len3 = input(9, minval=1, title="Length")
src3 = input(hl2, title="Source")
smma3 = 0.0
sma3 = sma(src3, len3)
smma3 := na(smma3[1]) ? sma3 : (smma3[1] * (len3 - 1) + src3) / len3
len4 = input(50, minval=1, title="Length")
src4 = input(close, title="Source")
smma4 = 0.0
sma4 = sma(src4, len4)
smma4 := na(smma4[1]) ? sma4 : (smma4[1] * (len4 - 1) + src4) / len4
len5 = input(200, minval=1, title="Length")
src5 = input(close, title="Source")
out5 = ema(src5, len5)
timeinrange(res, sess) => time(res, sess) != 0
london=timeinrange(timeframe.period, "0300-1045")
londonEntry=timeinrange(timeframe.period, "0300-0845")
extraEntry =timeinrange(timeframe.period, "0745-1030")
time_cond = true
//time_cond2 = time >= startDate and time <= finishDate and extraEntry
//
longCond = close > out5 and close > smma4 and close > smma3 and close > smma2 and close > smma and smma > smma2 and smma2>smma3 and smma3>smma4 and smma4>out5 and time_cond
shortCond = close < out5 and close < smma4 and close < smma3 and close < smma2 and close < smma and smma < smma2 and smma2<smma3 and smma3<smma4 and smma4<out5 and time_cond
//longCond = close > out5 and close > smma4 and close > smma3 and close > smma2 and close > smma and smma > smma2 and smma2>smma3 and smma3>smma4 and smma4>out5 and time_cond2
//shortCond = close < out5 and close < smma4 and close < smma3 and close < smma2 and close < smma and smma < smma2 and smma2<smma3 and smma3<smma4 and smma4<out5 and time_cond2
//longCond2 = crossover(close,out5) and crossover(close,smma4) and crossover(close,smma3) and crossover(close,smma2) and crossover(close,smma) and time_cond
//shortCond2 = crossunder(close,out5) and crossunder(close,smma4) and crossunder(close,smma3) and crossunder(close,smma2) and crossunder(close,smma) and time_cond
tp=input(300,title="tp")
sl=input(300,title="sl")
strategy.initial_capital = 50000
//MONEY MANAGEMENT--------------------------------------------------------------
balance = strategy.netprofit + strategy.initial_capital //current balance
floating = strategy.openprofit //floating profit/loss
risk = input(1,type=input.float,title="Risk %")/100 //risk % per trade
//Calculate the size of the next trade
temp01 = balance * risk //Risk in USD
temp02 = temp01/sl //Risk in lots
temp03 = temp02*100000 //Convert to contracts
size = temp03 - temp03%1000 //Normalize to 1000s (Trade size)
if(size < 1000)
size := 1000 //Set min. lot size
dataL = (close-out5)*100000
dataS = (out5-close)*100000
minDistanceL = (smma4 - out5)*100000
minDistanceS= (out5 - smma4)*100000
strategy.entry("long",1,1,when=longCond )
strategy.exit("closelong","long", profit=tp,loss=sl)
strategy.entry("short",0,1,when=shortCond )
strategy.exit("closeshort","short", profit=tp,loss=sl)
strategy.close_all(when = not london, comment="london finish")
//strategy.close_all(when = not extraEntry, comment="london finish")
// maxEntry=input(2,title="max entries")
// strategy.risk.max_intraday_filled_orders(maxEntry)