
MADEFlex - это гибкая стратегия количественного трейдинга, основанная на движущейся средней конверсии и задержке за средним реальным диапазоном. Эта стратегия объединяет показатели движущейся средней конверсии и механизм задержки за средним реальным диапазоном, обеспечивая гибкое и контролируемое решение количественного трейдинга.
В основе этой стратегии лежит индикатор MADE. MADE формирует EMA путем умножения на процентное значение перемещения. Когда цена выходит на трейлер, она создает сигнал продажи. Когда цена падает на трейлер, она создает сигнал покупки.
В частности, индикатор MADE содержит 3 параметра: период, процент на верхней линии Ab и процент на нижней линии Bl. Период определяет длину цикла EMA. Диапазон расстояния от EMA на верхней и нижней линии контролируется с помощью процентного фактора.
В конечном итоге, в сочетании с сигналом индикатора MADE и фильтрацией условий остановки ATR, образуются сигналы покупки и продажи. Обратная операция может быть осуществлена с помощью переключателя обратного ввода для обратной торговли.
MADEFlex имеет следующие преимущества:
В сочетании с индикаторными сигналами и механизмом остановки, более надежно. Сама по себе MADE-индикатор может создавать ошибочные сигналы. В сочетании с ATR следовым остановкой может эффективно отфильтровывать часть шума.
Настраиваемые параметры, гибкий контроль. Можно настроить параметры показателя MADE и параметры ATR, контролировать количество и качество сигнала.
Поддержка обратной операции. С помощью обратного переключателя можно совершать обратную торговлю, обогащая сценарии использования стратегии.
Визуализация стоппера интуитивно. Нарисуйте стоп-линию, чтобы интуитивно оценить эффект стоп-потери.
Также существуют риски, связанные со стратегией MADEFlex:
Неправильные параметры MADE-индексатора могут привести к большому количеству ошибочных сигналов. Требуется тщательное тестирование для определения правильных параметров.
ATR-остановка слишком мягкая, может пропустить возможность остановки. Рекомендуется тестирование для определения подходящего ATR-множителя.
Обратная операция рискованна, особенно в условиях высокой волатильности. Обратная операция может увеличить риск потери.
Отсутствие стоп-пакета может привести к большим убыткам. В крайних случаях отсутствие стоп-пакета может привести к большим убыткам.
Стратегия MADEFlex может быть оптимизирована в следующих направлениях:
Оптимизация MADE-параметров, улучшение качества сигнала. Можно тестировать различные циклические, процентные параметры, чтобы найти более надежные комбинации параметров.
Оптимизация параметров ATR-остановки для достижения лучших эффектов. Можно проверить циклы ATR и кратность ATR, чтобы определить более подходящую комбинацию.
Добавление дополнительных условий фильтрации для дальнейшего уменьшения ошибочного сигнала. Например, дополнительная фильтрация сигнала в сочетании с показателем волатильности.
Добавление стратегии хранения прибыли, вывод прибыли после достижения определенного уровня. Можно блокировать прибыль, контролировать риск.
Параметры динамической оптимизации в сочетании с методами машинного обучения. Параметры оптимизации в реальном времени с использованием методов, таких как усиленное обучение, делают стратегию более гибкой.
Стратегия MADEFlex успешно объединяет торговые сигналы показателя мобильной средней конвертируемой стоимости и методы стоп-лосса в среднем по реальному диапазону. Благодаря регулируемым параметрам реализуется гибкое и управляемое решение для количественной торговли. Стратегия обладает высокой надежностью, обладает высокой управляемостью и подходит для использования и оптимизации пользователями с определенной количественной базой.
/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 27/09/2022
// Moving Average Displaced Envelope. These envelopes are calculated
// by multiplying percentage factors with their displaced expotential
// moving average (EMA) core.
// How To Trade Using:
// Adjust the envelopes percentage factors to control the quantity and
// quality of the signals. If a previous high goes above the envelope
// a sell signal is generated. Conversely, if the previous low goes below
// the envelope a buy signal is given.
//
// Average True Range Trailing Stops Strategy, by Sylvain Vervoort
// The related article is copyrighted material from Stocks & Commodities Jun 2009
//
// ATR TS used by filter for MADE signals.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title='Moving Average Displaced Envelope & ATRTS', shorttitle='MADE+ATR', overlay=true)
tradeDirection = input.string('Both', title='Trade Direction', options=['Both', 'Long', 'Short'])
Price = input(title='Source', defval=close)
Period = input.int(defval=9, minval=1)
perAb = input.float(title='Percent above', defval=.5, minval=0.01, step=0.1)
perBl = input.float(title='Percent below', defval=.5, minval=0.01, step=0.1)
disp = input.int(title='Displacement', defval=13, minval=1)
nATRPeriod = input(15)
nATRMultip = input(2)
useATR = input(false, title='ATR Filter')
reverse = input(false, title='Trade reverse')
longAllowed = tradeDirection == 'Long' or tradeDirection == 'Both'
shortAllowed = tradeDirection == 'Short' or tradeDirection == 'Both'
pos = 0
sEMA = ta.ema(Price, Period)
top = sEMA[disp] * ((100 + perAb) / 100)
bott = sEMA[disp] * ((100 - perBl) / 100)
xATR = ta.atr(nATRPeriod)
xHHs =ta.sma(ta.highest(nATRPeriod), nATRPeriod)
xLLs =ta.sma(ta.lowest(nATRPeriod),nATRPeriod)
nSpread = (xHHs - xLLs) / 2
nLoss = nATRMultip * xATR
var xATRTrailingStop = 0.0
xATRTrailingStop := close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0) ? math.max(nz(xATRTrailingStop[1]), close - nLoss) :
close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0) ? math.min(nz(xATRTrailingStop[1]), close + nLoss) :
close > nz(xATRTrailingStop[1], 0) ? close - nLoss : close + nLoss
ATRLong = close > xATRTrailingStop ? true : false
ATRShort = close < xATRTrailingStop ? true : false
iff_1 = close > top ? 1 : pos[1]
pos := close < bott ? -1 : iff_1
iff_2 = reverse and pos == -1 ? 1 : pos
possig = reverse and pos == 1 ? -1 : iff_2
clr = strategy.position_size
if possig == 1
if longAllowed and ATRLong
strategy.entry('Long', strategy.long)
else
if ATRLong or strategy.position_size > 0
strategy.close_all()
if possig == -1
if shortAllowed and ATRShort
strategy.entry('Short', strategy.short)
else
if ATRShort or strategy.position_size < 0
strategy.close_all()
if possig == 0
strategy.close_all()
plot(xATRTrailingStop[1], color=color.blue, title='ATR Trailing Stop')
barcolor(clr < 0 ? #b50404 : clr > 0 ? #079605 : #0536b3)