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


Дата создания: 2023-10-16 15:50:35 Последнее изменение: 2023-10-16 15:50:35
Копировать: 1 Количество просмотров: 671
1
Подписаться
1617
Подписчики

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

Обзор

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

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

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

В частности, стратегия рассчитывает две средние линии с помощью функции sma () и присваивает результаты вычисления xSMA () и fast (2). Стратегия использует цену close для вычисления средней линии. Когда цена close пересекает xSMA, делайте больше; когда цена close пересекает xSMA, делайте пустое место.

Для каждой сделки устанавливается стоп-стоп, и при достижении стоп-стоп-стоп-стоп сразу же останавливается. В то же время, стратегия с помощью функции barcolor показывает связь цены с медленной линией на линии K: когда делается много, линия K является зеленой; когда делается пусто, линия K является красной; когда равновесная позиция, линия K является синей.

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

  • Использование двойной равнолинейной системы позволяет эффективно отслеживать тенденции и избегать заблуждения от шума краткосрочного рынка
  • Использование быстрого и медленного равнолинейного сочетания для улучшения качества торговых сигналов
  • Установка стоп-стоп-лосс, чтобы контролировать риск в одном транзакции
  • Ограничение временных рамок торгов позволяет избежать значительных колебаний во время крупных событий.
  • Маркировка торговых сигналов на K-линии, формирование визуальной помощи, повышение интуитивности

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

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

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

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

  • Можно тестировать комбинации различных равнолинейных периодов, чтобы найти оптимальные параметры
  • Можно рассмотреть возможность преобразования стоп-лосса в динамическое отслеживание, например, привязка к ATR
  • В качестве фильтрующих сигналов могут быть введены другие показатели, такие как MACD, KD и т. Д.
  • Оптимизация временных интервалов торгов, позволяющая поймать больше возможностей для торговли
  • Можно использовать стратегию прорыва, чтобы найти сигнал прорыва вблизи равновесия.
  • Можно создать механизм динамического выхода из игры, чтобы активно останавливать убытки, когда цена входит в диапазон

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

Двойная линейная обратная торговая стратегия Overall является простой и практичной стратегией отслеживания тенденций. Она использует в полной мере гладкое действие линейной линии для определения направления тенденции и в сочетании с быстрым и медленным линией для создания торговых сигналов.

Исходный код стратегии
/*backtest
start: 2023-09-15 00:00:00
end: 2023-10-15 00:00:00
period: 4h
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/
// © HPotter
//  Simple SMA strategy
//
// WARNING:
//      - For purpose educate only
//      - This script to change bars colors
//@version=4
timeinrange(res, sess) => not na(time(res, sess)) ? 1 : 0

strategy(title="Simple SMA Strategy Backtest", shorttitle="SMA Backtest", precision=6, overlay=true)
Resolution = input(title="Resolution", type=input.resolution, defval="D")
Source = input(title="Source", type=input.source, defval=close)
xSeries = security(syminfo.tickerid, Resolution, Source)
Length = input(title="Length", type=input.integer, defval=14, minval=2)
TriggerPrice = input(title="Trigger Price", type=input.source, defval=close)
TakeProfit = input(50, title="Take Profit", step=0.01)
StopLoss = input(20, title="Stop Loss", step=0.01)
UseTPSL = input(title="Use Take\Stop", type=input.bool, defval=false)
BarColors = input(title="Painting bars", type=input.bool, defval=true)
ShowLine = input(title="Show Line", type=input.bool, defval=true)
UseAlerts = input(title="Use Alerts", type=input.bool, defval=false)
timeframe = input(title="Time Frame", defval="15")
timerange = input(title="Time Range", defval="2300-0800")
reverse = input(title="Trade Reverse", type=input.bool, defval=false)
pos = 0
xSMA = sma(xSeries, Length)
pos := iff(TriggerPrice > xSMA, 1,
         iff(TriggerPrice < xSMA, -1, nz(pos[1], 0)))
nRes = ShowLine ? xSMA : na
alertcondition(UseAlerts == true and pos != pos[1] and pos == 1, title='Signal Buy', message='Strategy to change to BUY')
alertcondition(UseAlerts == true and pos != pos[1] and pos == -1, title='Signal Sell', message='Strategy to change to SELL')
alertcondition(UseAlerts == true and pos != pos[1] and pos == 0, title='FLAT', message='Strategy get out from position')
possig =iff(pos[1] != pos,
         iff(reverse and pos == 1, -1,
           iff(reverse and pos == -1, 1, pos)), 0)
if (possig == 1 and timeinrange(timeframe, timerange))
    strategy.entry("Long", strategy.long)
if (possig == -1 and timeinrange(timeframe, timerange))
    strategy.entry("Short", strategy.short)
if (timeinrange(timeframe, timerange) == 0) 
    strategy.close_all()

if (UseTPSL)    
    strategy.close("Long", when = high > strategy.position_avg_price + TakeProfit, comment = "close buy take profit")
    strategy.close("Long", when = low < strategy.position_avg_price - StopLoss, comment = "close buy stop loss")
    strategy.close("Short", when = low < strategy.position_avg_price - TakeProfit, comment = "close buy take profit")
    strategy.close("Short", when = high > strategy.position_avg_price + StopLoss, comment = "close buy stop loss")
nColor = BarColors ? strategy.position_avg_price != 0  and pos == 1 ? color.green :strategy.position_avg_price != 0 and pos == -1 ? color.red : color.blue : na
barcolor(nColor)
plot(nRes, title='SMA', color=#00ffaa, linewidth=2, style=plot.style_line)