Стратегия перемещающегося среднего выхода

Автор:Чао Чжан, Дата: 2023-11-28 13:50:49
Тэги:

img

Обзор

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

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

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

В частности, он определяет источник (недавняя цена закрытия) и длину скользящей средней в стратегии для получения последовательности данных скользящей средней. Затем он устанавливает два условия: создать длинный ордер, когда цена пересекает пересечение над скользящей средней; создать короткий ордер, когда цена пересекает пересечение ниже скользящей средней. После создания ордеров он также устанавливает прием прибыли и стоп-лосс: он закрывает часть позиции, когда ордер достигает установленного коэффициента прибыли, и закрывает всю позицию, когда ордер достигает предварительно установленной цены получения прибыли или стоп-лосса.

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

Это простая и практичная стратегия, которая имеет следующие преимущества:

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

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

Хотя стратегия имеет много преимуществ, все же есть некоторые риски:

  1. Движущиеся средние, как правило, отстают и могут пропустить краткосрочные реверсии.
  2. Она не учитывает общую рыночную среду и склонна к тому, чтобы попасть в ловушку.
  3. Никакая оптимизация параметров не может повлиять на эффективность стратегии.
  4. Он может иметь некоторые ложные сигналы, поскольку для фильтрации не используются другие показатели.

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

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

Стратегия может быть оптимизирована в следующих аспектах:

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

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

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

  4. Используйте алгоритмы, такие как случайный лес и LSTM, в сочетании с несколькими факторами для определения направления тренда.

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

Резюме

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


/*backtest
start: 2023-11-20 00:00:00
end: 2023-11-22 08:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//  |-- Initialize Strategy Parameters:
strategy( 
     // |-- Strategy Title.
     title='[Tutorial][RS]Working with orders', 
     // |-- if shorttitle is specified, it will overwrite the name on the chart window.
     shorttitle='WwO', 
     // |-- if true it overlays current chart window, otherwise it creates a drawer to display plotting outputs.
     overlay=true, 
     // |-- Strategy unit type for default quantity, possible arguments: (strategy.cash, strategy.fixed, strategy.percent_of_equity)
     default_qty_type=strategy.cash, 
     // |-- Value to use for default trade size
     default_qty_value=1000, 
     // |-- Default Account size 
     initial_capital=100000, 
     // |-- Account Currency parameter
     currency=currency.USD
     )

//  |-- Strategy Profit/loss parameters:
profit = input(defval=5000, title='Take Profit')
loss = input(defval=5000, title='Stop Loss')
ratio = input(defval=2.0, title='Ratio at wich to take out a percentage off the table (take profit / ratio).')
percent = input(defval=50.0, title='Percentage of position to take profit.')
//  |-- Signal Parameters:
//  |
//  |-- Moving Average input source and length parameters.
src = input(defval=close)
length = input(defval=100)
//  |-- Moving Average Data series.
ma = sma(src, length)

//  |-- Condition for triggering a buy(long) order(trade).
if crossover(src, ma)
    //  |-- Create the order.
    strategy.order(id='Buy', long=true)
    //  |-- Issue a exit order to close a percentage of the trade when a specified ratio(take profit / ratio) is reached.
    strategy.exit(id='Buy Half Exit', from_entry='Buy', qty_percent=percent, profit=profit/ratio)
    //  |-- Issue a exit order to close the full position, when take profit or stop loss's are reached.
    strategy.exit(id='Buy Full Exit', from_entry='Buy', qty_percent=100, profit=profit, loss=loss)
if crossunder(src, ma)
    //  |-- Create the order.
    strategy.order(id='Sell', long=false)
    //  |-- Issue a exit order to close a percentage of the trade when a specified ratio(take profit / ratio) is reached.
    strategy.exit(id='Sell Half Exit', from_entry='Sell', qty_percent=percent, profit=profit/ratio)
    //  |-- Issue a exit order to close the full position, when take profit or stop loss's are reached.
    strategy.exit(id='Sell Full Exit', from_entry='Sell Half Exit', qty_percent=100, profit=profit, loss=loss)

//  |-- Output Functions.
plot(series=ma, title='MA', color=black)


Больше