Это стратегия трейдинга, основанная на скользящих средних. Она рассчитывает среднюю цену за определенный период как скользящую среднюю. Когда цена пробивается через скользящую среднюю, генерируются торговые сигналы.
Стратегия основана в основном на индикаторе скользящей средней. Она использует функцию sma для расчета средней цены закрытия за период, чтобы получить скользящую среднюю. Когда последняя цена закрытия проходит через скользящую среднюю вверх, генерируется сигнал покупки. Когда последняя цена закрытия проходит через скользящую среднюю вниз, генерируется сигнал продажи.
В частности, он определяет источник (недавняя цена закрытия) и длину скользящей средней в стратегии для получения последовательности данных скользящей средней. Затем он устанавливает два условия: создать длинный ордер, когда цена пересекает пересечение над скользящей средней; создать короткий ордер, когда цена пересекает пересечение ниже скользящей средней. После создания ордеров он также устанавливает прием прибыли и стоп-лосс: он закрывает часть позиции, когда ордер достигает установленного коэффициента прибыли, и закрывает всю позицию, когда ордер достигает предварительно установленной цены получения прибыли или стоп-лосса.
Это простая и практичная стратегия, которая имеет следующие преимущества:
Хотя стратегия имеет много преимуществ, все же есть некоторые риски:
Чтобы контролировать эти риски, мы можем оптимизировать их путем сочетания других индикаторов для фильтрации, внедрить краткосрочное суждение о тенденциях рынка или использовать методы машинного обучения для поиска оптимальных комбинаций параметров.
Стратегия может быть оптимизирована в следующих аспектах:
Добавьте другие технические индикаторы для суждения, чтобы построить торговую систему и улучшить показатель выигрыша.
Добавьте механизмы остановки потери. Используйте отслеживание остановки потери или временную остановку потери, чтобы зафиксировать прибыль и избежать более крупных потерь.
Провести оптимизацию параметров. Изменить параметр скользящей средней периодичности, чтобы найти лучшую комбинацию. Различные типы скользящих средних также могут быть протестированы.
Используйте алгоритмы, такие как случайный лес и LSTM, в сочетании с несколькими факторами для определения направления тренда.
Оптимизируйте логику входа и выхода. Установите условия фильтрации тренда, чтобы избежать сделок против тренда в конце.
В целом, эта стратегия прорыва скользящей средней очень подходит как начинающая квантовая стратегия торговли. Она имеет простую логику, легкую для понимания и эксплуатации, с некоторыми практическими эффектами. В то же время, она оставляет много места для дальнейшего тестирования и оптимизации. Мы можем представить больше технических индикаторов и моделей на этой основе для разработки лучших квантовых стратегий.
/*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)