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


Дата создания: 2023-10-27 16:41:24 Последнее изменение: 2023-10-27 16:41:24
Копировать: 0 Количество просмотров: 691
1
Подписаться
1617
Подписчики

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

Обзор

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

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

Эта стратегия сначала устанавливает длину быстрого движущегося среднего (maFastLength) и медленного движущегося среднего (maSlowLength). Затем вычисляются быстрое движущееся среднее (fastMA) и медленное движущееся среднее (slowMA). Быстрое движущееся среднее реагирует на изменения цены более чувствительным образом, и может быть использовано для определения текущей тенденции; медленное движущееся среднее реагирует на изменения цены медленнее, и может быть использовано для определения направления тенденции.

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

Вы можете выбрать только многостратегию longonly, только короткую стратегию shorting, или двустороннюю торговлю swapping.

При многостратегическом выборе, открывайте позицию больше, когда появляется сигнал goLong (); при сигнале killLong (), не открывайте позицию.

При использовании стратегии длинной позиции, открывайте позицию длинной позиции при появлении сигнала killLong (); при появлении сигнала goLong ().

При двусторонней торговле открывайте позиции в goLong () сигнале, а в killLong () сигнале открывайте позиции в goLong () сигнале.

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

Стратегические преимущества

  1. Стратегия проста, понятна и легко реализуема.

  2. Вы можете свободно выбирать между оптовой, дисконтной или двусторонней торговлей.

  3. Гибкость в выборе между использованием функций управления рисками, таких как остановка убытков и отслеживание убытков.

  4. Настройка сообщений о транзакциях, в режиме реального времени предупреждая о транзакциях.

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

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

Стратегический риск

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

  2. Система равнолинейной реакции не чувствительна к внезапным событиям и может упустить внезапные возможности.

  3. Требуется разумный выбор средних параметров, неправильный выбор параметров может повлиять на эффективность стратегии.

  4. Необходимо строго соблюдать стратегические сигналы, чтобы избежать произвольных сделок.

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

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

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

  2. Можно настроить функцию оптимизации параметров, чтобы автоматически искать оптимальную комбинацию параметров.

  3. Можно установить динамический стоп, чтобы закрепить прибыль, и при необходимости изменить точку стоп.

  4. Модели машинного обучения могут быть использованы для определения направления тенденций.

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

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

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

Исходный код стратегии
/*backtest
start: 2022-10-20 00:00:00
end: 2023-10-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

strategy("SMA Strategy", shorttitle="SMA Strategy", overlay=true, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// === Inputs ===
// short ma
maFastSource = input(defval=close, title="Fast MA Source")
maFastLength = input(defval=3, title="Fast MA Period", minval=1)

// long ma
maSlowSource = input(defval=close, title="Slow MA Source")
maSlowLength = input(defval=9, title="Slow MA Period", minval=1)

// Trade direction
shorting = input(defval=false, title="Short only?")
longonly = input(defval=true, title="Long only?")
swapping = input(defval=false, title="Swap orders?")
// risk management
useStop = input(defval=false, title="Use Initial Stop Loss?")
slPoints = input(defval=25, title="Initial Stop Loss Points", minval=1)
useTS = input(defval=false, title="Use Trailing Stop?")
tslPoints = input(defval=120, title="Trail Points", minval=1)
useTSO = input(defval=false, title="Use Offset For Trailing Stop?")
tslOffset = input(defval=20, title="Trail Offset Points", minval=1)

// Messages for buy and sell
message_long_entry  = input("Long entry message", title="Long entry message")
message_long_exit   = input("Long exit message", title="Long exit message")
message_short_entry = input("Short entry message", title="Short entry message")
message_short_exit  = input("Short exit message", title="Short exit message")

// Calculate start/end date and time condition
startDate  = input(timestamp("2021-01-01T00:00:00"), type = input.time)
finishDate = input(timestamp("2021-12-31T00:00:00"), type = input.time)
 
time_cond  = true
// === Vars and Series ===
fastMA = sma(maFastSource, maFastLength)
slowMA = sma(maSlowSource, maSlowLength)

plot(fastMA, color=color.blue)
plot(slowMA, color=color.purple)

goLong() =>
    crossover(fastMA, slowMA)
killLong() =>
    crossunder(fastMA, slowMA)
    
// Long only
if longonly
    strategy.entry("Buy", strategy.long, when=goLong() and time_cond, alert_message = message_long_entry)
    strategy.close("Buy", when=killLong() and time_cond, alert_message = message_long_exit)

// Short only
if shorting
    strategy.entry("Sell", strategy.short, when=killLong() and time_cond, alert_message = message_short_entry)
    strategy.close("Sell", when=goLong() and time_cond, alert_message = message_short_exit)
    
// Order Swapping
if swapping
    strategy.entry("Buy", strategy.long, when=goLong() and time_cond, alert_message = message_long_entry)
    strategy.entry("Sell", strategy.short, when=killLong() and time_cond, alert_message = message_short_entry)

if useStop
    strategy.exit("XLS", from_entry="Buy", stop=strategy.position_avg_price / 1.08, alert_message = message_long_exit)
    strategy.exit("XSS", from_entry="Sell", stop=strategy.position_avg_price * 1.08, alert_message = message_short_exit)