Стратегия двойной скользящей средней

Автор:Чао Чжан, Дата: 2024-02-21 14:43:26
Тэги:

img

Обзор

Эта стратегия использует двойные скользящие средние для формирования канала и улавливания направления тренда. Торговые сигналы генерируются, когда цена прорывается через канал. Индикатор RSI также включен для фильтрации ложных прорывов. Он торгуется только во время Лондонской сессии с максимум 5 сделками в день и максимум 2% ежедневных потерь.

Логика стратегии

Стратегия использует две скользящие средние длины 5, одна из которых рассчитывается от самой высокой цены и другая от самой низкой цены, для формирования ценового канала.

Чтобы избежать ложного прорыва, индикатор RSI добавляется для измерения уровней перекупленности/перепроданности.

Кроме того, стратегия торгуется только в течение Лондонской сессии (3 утра - 11 утра), с максимум 5 ордеров в день и максимум 2% потери капитала в день.

Анализ преимуществ

Поймать тенденцию

Двойной канал MA может эффективно обнаружить направление тренда цены.

Уменьшить ложный прорыв

Использование фильтра RSI перекупленный/перепроданный уменьшает некоторые ложные сигналы прорыва, вызванные колебаниями цен.

Эффективное управление рисками

Торговля только во время основного сеанса и наличие максимальных заказов в день ограничивают частоту торговли.

Анализ рисков

Фальшивый прорыв с волатильностью

Значительное колебание цен может вызвать некоторые ложные сигналы прорыва, что приводит к ненужным потерям.

Фиксированный риск SL/TP

Использование фиксированных пунктов для SL/TP рискует привести к прекращению/пропущению прибыли на волатильном рынке.

Ограниченный риск торговой сессии

Открытие позиций только во время фиксированных сессий рискует привести к упущению потенциальных сделок в другие часы.

Руководство по оптимизации

Настройка параметров

Оптимизируйте такие параметры, как длина MA, показатели RSI, фиксированные SL / TP и т. Д., Чтобы найти лучшую комбинацию.

дополнительные фильтры

Добавить больше показателей или условий для проверки сигналов, например, более высокий объем, уменьшенная ширина BB и т. д., чтобы избежать ложных прорывов.

Динамическая SL/TP

Использовать стоп-лосс на основе процентов или динамический стоп-лосс/прибыль вместо фиксированных пипсов для лучшего управления односторонними движениями рынка.

Ручная проверка

Ручно проверяйте сигналы или вводите только после подтверждения, чтобы не попасть в ловушку.

Заключение

Стратегия довольно проста и практична в целом, используя двойной канал MA для определения тренда и RSI для фильтрации ложных прорывов. Управление рисками через часы торговли и лимит потери также определяет толерантность к риску.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-16 23:59:59
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(title="Moving Average", shorttitle="MA", overlay=true)
timeinrange(res, sess) => time(res, sess) != 0
len = input(5, minval=1, title="Length")
src = input(high, title="Source")
offset = input(title="Offset", type=input.integer, defval=0, minval=-500, maxval=500)
out = sma(src, len)
plot(out, color=color.white, title="MA", offset=offset)

len2 = input(5, minval=1, title="Length")
src2 = input(low, title="Source")
offset2 = input(title="Offset", type=input.integer, defval=0, minval=-500, maxval=500)
out2 = sma(src2, len2)
plot(out2, color=color.white, title="MA", offset=offset2)

length = input( 5 )
overSold = input( 10 )
overBought = input( 80 )
price = input(close, title="Source RSI")

vrsi = rsi(price, length)

longcond= close > out and close > out2 and vrsi > overBought
shortcont = close < out and close < out2 and vrsi < overSold
tp=input(150,title="tp")
sl=input(80,title="sl")


strategy.entry("long",1,when=longcond)
//strategy.close("long",when= close < out2)
strategy.exit("long_exit","long",profit=tp,loss=sl)

strategy.entry("short",1,when=shortcont)
//strategy.close("short",when=close >out)
strategy.exit("short_exit","short",profit=tp,loss=sl)

// maxOrder = input(6, title="max trades per day")
// maxRisk = input(2,type=input.float, title="maxrisk per day")
// strategy.risk.max_intraday_filled_orders(maxOrder)

// strategy.risk.max_intraday_loss(maxRisk, strategy.percent_of_equity)


// strategy.close_all(when =not timeinrange(timeframe.period, "0300-1100"))






Больше