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


Дата создания: 2023-11-28 13:50:49 Последнее изменение: 2023-11-28 13:50:49
Копировать: 2 Количество просмотров: 697
1
Подписаться
1617
Подписчики

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

Обзор

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

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

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

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

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

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

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

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

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

  1. Подвижная средняя линия легко отстает и может пропустить кратковременный рыночный поворот.
  2. “Я не могу позволить себе, чтобы кто-то из моих друзей был в тюрьме, потому что я не хочу, чтобы кто-то был в тюрьме.
  3. Недопустимые параметры могут повлиять на эффективность стратегии.
  4. Некоторые из этих показателей не были отфильтрованы в сочетании с другими показателями.

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

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

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

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

  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)