Эта стратегия сочетает в себе индикаторы скользящей средней, индекс относительной силы (RSI) и модели поглощения для проведения длинных и коротких сделок с золотом.
Стратегия принимает торговые решения на основе следующих аспектов:
Кроссовер скользящей средней
Кроссовер между 21-дневным MA и 200-дневным MA используется в качестве основного индикатора для определения обратного тренда.
Индикатор RSI
RSI должна быть ниже уровня перекупленности для длинного сигнала и выше уровня перепроданности для короткого сигнала, чтобы избежать покупки пиков и продажи долин.
Подтверждение поглощающей модели
Для длинного сигнала, когда происходит золотой крест, требуется бычий, а для короткого сигнала, когда происходит смертельный крест - медвежий.
Торговые сигналы генерируются при выполнении всех трех вышеперечисленных условий.
Наибольшее преимущество заключается в всеобъемлющем использовании нескольких параметров и индикаторов для принятия решений, что хорошо отфильтровывает неправильные сигналы и уменьшает ненужные стоп-лосс.
Сама стратегия скользящей средней имеет относительно хорошую стабильность.
Настройки RSI предотвращают покупку пиков и продажу долины.
Подтверждение паттернов поглощения повышает надежность суждения об изменении тренда.
Меньшее количество стоп-лосса эффективно контролирует риски.
Хотя эта стратегия превосходит все в области фильтрации сигналов и контроля рисков, она все еще содержит некоторые недостатки и риски:
Сложная настройка параметров требует значительных усилий для поиска оптимальной комбинации.
Строгие сигналы могут упустить хорошие возможности.
В условиях чрезвычайно волатильной рыночной конъюнктуры будет определенное отставание.
Долгосрочная стабильность и эффективность требуют дальнейшей проверки.
Для решения вышеупомянутых рисков мы можем отрегулировать параметры, оптимизировать логические потоки, включить другие показатели и т. д. для улучшения стратегии.
Несмотря на хорошие результаты в объединении нескольких индикаторов, эта стратегия все еще имеет место для оптимизации:
Далее найти оптимальные наборы параметров с помощью большего обратного тестирования. Оценить влияние различных параметров на результаты для определения лучшей комбинации параметров.
Включить другие индикаторы, такие как MACD, KD и т. Д., чтобы помочь в оценке времени обратного движения тренда.
Улучшить и усовершенствовать механизмы стоп-лосса.Оценить, могут ли более высокие проценты стоп-лосса уменьшить ненужные изменения позиций.
Проверьте более длинные исторические наборы данных для проверки долгосрочной валидности стратегии.
В заключение, эта стратегия использует набор инструментов технического анализа, таких как скользящие средние, RSI и охватывающие шаблоны для проведения длинных коротких торговых операций с золотом. Благодаря конфигурации параметров и фильтрации сигналов она устанавливает относительно строгую систему контроля рисков в некоторой степени. Однако ни одна стратегия не может быть абсолютно идеальной. Эта стратегия все еще имеет много возможностей для оптимизации и улучшения направления. В целом она предоставляет значимые ссылки для количественной торговли, но все же следует использовать ее дискретно с прагматическими корректировками при применении на практике.
/*backtest start: 2024-02-01 00:00:00 end: 2024-02-29 23:59:59 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Gold Trading with Simons Strategy", overlay=true) // Parameters length21 = input(21, minval=1, title="Length for 21 MA") length50 = input(50, minval=1, title="Length for 50 MA") length200 = input(200, minval=1, title="Length for 200 MA") rsiLength = input(14, minval=1, title="RSI Length") rsiOverbought = input(70, title="RSI Overbought Level") rsiOversold = input(30, title="RSI Oversold Level") takeProfitPercent = input(4, title="Take Profit %") stopLossPercent = input(1, title="Stop Loss %") // Moving Averages ma21 = sma(close, length21) ma50 = sma(close, length50) ma200 = sma(close, length200) // RSI rsi = rsi(close, rsiLength) // Engulfing Pattern isBullishCandle(c) => close[c] > open[c] isBearishCandle(c) => close[c] < open[c] bearishEngulfing = isBullishCandle(1) and isBearishCandle(0) and close < open[1] and open > close[1] bullishEngulfing = isBearishCandle(1) and isBullishCandle(0) and close > open[1] and open < close[1] // Calculate Take Profit and Stop Loss Levels takeProfitLevel(entryPrice) => entryPrice * (1 + takeProfitPercent / 100) stopLossLevel(entryPrice) => entryPrice * (1 - stopLossPercent / 100) // Entry Conditions longCondition = crossover(ma21, ma200) and close > ma21 and close > ma50 and rsi < rsiOverbought and bullishEngulfing shortCondition = crossunder(ma21, ma200) and close < ma21 and close < ma50 and rsi > rsiOversold and bearishEngulfing // Entry if (longCondition) entryPrice = close strategy.entry("Long", strategy.long) strategy.exit("Take Profit", "Long", limit=takeProfitLevel(entryPrice)) strategy.exit("Stop Loss", "Long", stop=stopLossLevel(entryPrice)) if (shortCondition) entryPrice = close strategy.entry("Short", strategy.short) strategy.exit("Take Profit", "Short", limit=takeProfitLevel(entryPrice)) strategy.exit("Stop Loss", "Short", stop=stopLossLevel(entryPrice)) // Plotting plot(ma21, color=color.blue, title="21 MA") plot(ma50, color=color.orange, title="50 MA") plot(ma200, color=color.red, title="200 MA") hline(rsiOverbought, "RSI Overbought", color=color.green) hline(rsiOversold, "RSI Oversold", color=color.red) plot(rsi, "RSI", color=color.purple)