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

Автор:Чао Чжан, Дата: 2024-02-19 14:21:10
Тэги:

img

Обзор

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

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

Основная логика заключается в расчете двух скользящих средних с разными периодами, один из которых является 9-дневной простой скользящей средней, а другой - 21-дневной взвешенной скользящей средней.

После получения сигнала, заказы размещаются в соответствии с установленными коэффициентами стоп-лосса и прибыли. Например, если коэффициент стоп-лосса установлен на 5%, то цена стоп-лосса будет установлена на 95% от цены входа. Если коэффициент прибыли составляет 5%, то цена прибыли будет установлена на 105% от цены входа. Это реализует слияние динамических факторов (движущийся средний кроссовер, определяющий время входа и выхода) и статических факторов (фиксированные коэффициенты стоп-лосса и прибыли).

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

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

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

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

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

Во-вторых, риск того, что фиксированные стоп-лосс и прибыль не могут адаптироваться к экстремальным рыночным условиям.

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

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

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

  1. Испытать различные комбинации параметров для определения оптимальных параметров;

  2. Добавить условия фильтрации для предотвращения недействительных сигналов;

  3. Применение адаптивных алгоритмов стоп-лосса для продвижения с рынком;

  4. Включить другие показатели для оценки силы тренда, избегая рынков с ограниченным диапазоном;

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

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

Резюме

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


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("WMA vs MMA Crossover Strategy with SL/TP", shorttitle="WMA_MMA_Cross_SL_TP", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// Définition des périodes pour les moyennes mobiles
wmaLength = input.int(9, title="WMA Length")
mmaLength = input.int(21, title="MMA Length")

// Paramètres de Stop Loss et Take Profit en pourcentage
stopLossPercentage = input.float(5, title="Stop Loss (%)") / 100
takeProfitPercentage = input.float(5, title="Take Profit (%)") / 100

// Calcul des moyennes mobiles
wmaValue = ta.wma(close, wmaLength)
mmaValue = ta.sma(close, mmaLength)

// Conditions pour les signaux d'achat et de vente
buySignal = ta.crossover(wmaValue, mmaValue)
sellSignal = ta.crossunder(wmaValue, mmaValue)

// Génération des ordres en fonction des signaux
if buySignal
    strategy.entry("Buy", strategy.long)
    strategy.exit("Exit Buy", "Buy", stop=strategy.position_avg_price * (1 - stopLossPercentage), limit=strategy.position_avg_price * (1 + takeProfitPercentage))

if sellSignal
    strategy.entry("Sell", strategy.short)
    strategy.exit("Exit Sell", "Sell", stop=strategy.position_avg_price * (1 + stopLossPercentage), limit=strategy.position_avg_price * (1 - takeProfitPercentage))

// Affichage des moyennes mobiles sur le graphique
plot(wmaValue, color=color.blue, title="WMA")
plot(mmaValue, color=color.red, title="MMA")

// Affichage des signaux sur le graphique pour référence
plotshape(series=buySignal, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal", text="BUY")
plotshape(series=sellSignal, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal", text="SELL")


Больше