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


Дата создания: 2024-02-21 14:43:26 Последнее изменение: 2024-02-21 14:43:26
Копировать: 0 Количество просмотров: 606
1
Подписаться
1617
Подписчики

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

Обзор

Эта стратегия использует двойную подвижную среднюю для формирования каналов, чтобы улавливать направление тренда. Выпускает торговый сигнал, когда цена пробивает каналы. При этом в сочетании с индикатором RSI фильтрует ложные прорывы.

Стратегический принцип

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

Для фильтрации фальшивых прорывов, также введены показатели RSI для определения перекупа и перепродажи. Сделайте больше, когда RSI выше 80, и делайте пустоту, когда RSI ниже 20.

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

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

Поймать тренд

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

Снижение ложных прорывов

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

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

Стратегия заключает сделки только в основные активные торговые периоды, при этом частота торгов эффективно контролируется максимум 5 ордерами в день; установка максимального убытка в 2% позволяет контролировать максимальные убытки в течение одного дня в пределах допустимого диапазона.

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

Риск ложного прорыва в условиях резких колебаний цен

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

фиксированный стоп-убыток предотвращает риск

Стратегия использует фиксированное количество точек для остановки убытков. При значительных колебаниях цены остановки убытков с фиксированным количеством точек могут быть сняты, в ответ на это используются процентные или динамические стопы убытков.

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

Стратегия открывает позиции только в фиксированный торговый период, и если в этот период не будет генерироваться сигнал, то будет пропущена потенциальная торговая возможность в другие периоды времени. Можно рассмотреть возможность соответствующего расширения времени торговли или динамической корректировки в соответствии с реальными обстоятельствами.

Направление оптимизации

Параметры оптимизации

Можно оптимизировать длину скользящей средней, параметры RSI, число фиксированных стоп-стоп и т. д., чтобы найти оптимальную комбинацию параметров.

Добавить условия фильтрации

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

Динамическая остановка повреждений

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

В сочетании с искусственным суждением

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

Подвести итог

Эта стратегия в целом довольно проста и практична, с помощью двойной подвижной средней построен канал для определения направления тенденции; в то же время показатель 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"))