
Эта стратегия проводит длинные и короткие двунаправленные операции в торговле золотом, используя в качестве основного торгового сигнала пересечение 21-дневной, 50-дневной и 200-дневной линий, а RSI и поглощающая форма помогают фильтровать сигналы для дальнейшей оптимизации входа на рыночную точку.
Стратегия заключается в принятии решений о сделках, основанных на следующих аспектах:
Используйте золотой/мертвый форк на 21-й и 200-й день как основной индикатор для определения перехода тренда. При пересечении 200-й линии на 21-й день используйте положительный сигнал, а при пересечении 200-й линии на 21-й день используйте отрицательный сигнал.
Установите линию сверхпокупа и линию сверхпродажи RSI, когда RSI выше 70 - это сверхпокупка, а когда RSI ниже 30 - это сверхпродажа. RSI должен находиться в зоне, не являющейся сверхпокупкой, когда есть сигнал о повышении, и в зоне, не являющейся сверхпродажей, когда есть сигнал о снижении, чтобы избежать покупки высокого и продажи низкого.
При появлении сигнала-наблюдателя должна появляться поглощающая форма candle, а при появлении сигнала-наблюдателя должна появляться поглощающая форма candle, чтобы подтвердить обратный тренд.
Когда эти три условия удовлетворяются одновременно, образуются торговые сигналы и заказы, в результате чего образуется более строгий набор фильтров.
Наибольшее преимущество этой стратегии заключается в том, что она использует множество параметров и показателей для комплексного суждения, лучше фильтрует ошибочные сигналы и может уменьшить ненужные остановки. Конкретные преимущества проявляются в следующих аспектах:
Стратегия скользящих средних сама по себе обладает определенной стабильностью.
Настройка 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)