Эта стратегия генерирует торговые сигналы, основанные на золотом кресте краткосрочных и долгосрочных скользящих средних для определения точек входа и устанавливает точки остановки потери для выхода из позиций.
Для определения рыночной тенденции стратегия в основном использует перекресток краткосрочных и долгосрочных скользящих средних.
Вычислить 3-дневную простую скользящую среднюю short_ma как краткосрочную скользящую среднюю.
Вычислить 19-дневную простую скользящую среднюю long_ma как долгосрочную скользящую среднюю.
Когда short_ma пересекает long_ma, генерируется длинный сигнал.
Когда цена поднимается выше цены входа * (1 + % стоп-лосса), закрыть все позиции.
Когда short_ma пересекается ниже long_ma, генерируется короткий сигнал.
Обратные тесты в пределах определенного диапазона дат для ограничения периода действия стратегии.
Торгуйте только тогда, когда 100-дневный скользящий средний trend_ma указывает на тенденцию к росту.
Стратегия использует золотой крест скользящих средних. Во время устойчивого восходящего тренда длинные сигналы, генерируемые при пересечении short_ma выше long_ma, позволяют захватывать возможности. Короткие сигналы при пересечении short_ma ниже long_ma помогают управлять рисками.
Преимущества этой стратегии:
Простая и понятная логика, основанная на пересечении скользящих средних.
Ясные правила входа и выхода, которые следуют тенденции и управляют рисками.
Остановите убытки, чтобы закрепить прибыль, когда тенденция изменится.
Торгуйте только тогда, когда общая тенденция повышается, чтобы избежать ложных сигналов.
Настраиваемые скользящие средние периоды, адаптируемые к различным рынкам.
Обратные испытания в течение конкретных периодов позволяют подтвердить.
Риски этой стратегии:
Чувствительные к настроению параметров, различные настройки влияют на производительность.
Кривая приспособлена к историческим данным, неэффективна при аномалии.
Невозможность справиться с ценовыми разрывами, риски превышения стоп-лосса.
Склонны к тому, чтобы быть выбитыми на различных рынках.
Работает только на очевидных трендовых рынках, а не на боковых.
Выбор периода обратного тестирования влияет на результаты.
Стратегия может быть улучшена в следующих аспектах:
Испытывайте различные наборы параметров, чтобы найти оптимальные значения.
Включите другие индикаторы, такие как MACD, полосы Боллинджера, чтобы улучшить решения.
Используйте динамические стоп-лосы для лучшего контроля рисков.
Оптимизируйте вход, логику выхода, как выход.
Проверка надежности в различных рыночных условиях.
Исследуйте машинное обучение для настройки параметров и генерации сигнала.
Добавьте обращение с ценовыми разрывами и сценариями остановки потерь.
Эта простая и эффективная стратегия улавливает восходящие тренды с использованием пересечений скользящих средних и управляет рисками с помощью стоп-лосса. Она хорошо работает на сильных трендовых рынках, но имеет ограничения. Для улучшения надежности необходима дальнейшая оптимизация и тестирование. В целом она имеет четкую логику, легко понимается и реализуется, подходит для обучения новичков.
/*backtest start: 2023-10-01 00:00:00 end: 2023-10-31 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Ta3MooChi //@version=5 strategy("전략", overlay=true,process_orders_on_close = true, pyramiding = 100) short_ma = ta.sma(close,input.int(3, "단기 이평", minval = 1)) long_ma = ta.sma(close, input.int(19,"장기 이평", minval = 1)) trend_ma = ta.sma(close, input.int(100," 추세 이평", minval = 20, group = "추세 이평")) up_trend = (trend_ma > trend_ma[1]) use_trend_ma = input.bool(true, title = "추세용 이평 사용", group = "추세 이평" ) inTrendMa = not use_trend_ma or up_trend useDateFilter = input.bool(true, title = "특정 기간 백테스트", group = "기간 백테스트") backtestStartDate = input(timestamp("1 Jan 2021"), title = "시작날짜", group = "기간 백테스트") backtestEndDate = input(timestamp("1 Jan 2022"), title = "종료날짜", group = "기간 백테스트") inTradeWindow = true longStopPerc = 1 + input.float(3, "최소수익률%", minval = 1)*0.01 longcondition = ta.crossover(short_ma, long_ma) shortcondition = ta.crossunder(short_ma, long_ma) if (longcondition) and inTradeWindow and inTrendMa strategy.entry("long", strategy.long) if (shortcondition) and (close > strategy.position_avg_price*longStopPerc) and inTradeWindow strategy.close_all() if not inTradeWindow and inTradeWindow[1] strategy.cancel_all() strategy.close_all(comment = "매매 종료") plot(short_ma,color = color.yellow) plot(long_ma,color = color.blue) plot(trend_ma,color = color.gray)