"Золотой крест"

Автор:Чао Чжан, Дата: 2023-11-01 17:02:14
Тэги:

img

Обзор

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

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

Для определения рыночной тенденции стратегия в основном использует перекресток краткосрочных и долгосрочных скользящих средних.

  1. Вычислить 3-дневную простую скользящую среднюю short_ma как краткосрочную скользящую среднюю.

  2. Вычислить 19-дневную простую скользящую среднюю long_ma как долгосрочную скользящую среднюю.

  3. Когда short_ma пересекает long_ma, генерируется длинный сигнал.

  4. Когда цена поднимается выше цены входа * (1 + % стоп-лосса), закрыть все позиции.

  5. Когда short_ma пересекается ниже long_ma, генерируется короткий сигнал.

  6. Обратные тесты в пределах определенного диапазона дат для ограничения периода действия стратегии.

  7. Торгуйте только тогда, когда 100-дневный скользящий средний trend_ma указывает на тенденцию к росту.

Стратегия использует золотой крест скользящих средних. Во время устойчивого восходящего тренда длинные сигналы, генерируемые при пересечении short_ma выше long_ma, позволяют захватывать возможности. Короткие сигналы при пересечении short_ma ниже long_ma помогают управлять рисками.

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

Преимущества этой стратегии:

  1. Простая и понятная логика, основанная на пересечении скользящих средних.

  2. Ясные правила входа и выхода, которые следуют тенденции и управляют рисками.

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

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

  5. Настраиваемые скользящие средние периоды, адаптируемые к различным рынкам.

  6. Обратные испытания в течение конкретных периодов позволяют подтвердить.

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

Риски этой стратегии:

  1. Чувствительные к настроению параметров, различные настройки влияют на производительность.

  2. Кривая приспособлена к историческим данным, неэффективна при аномалии.

  3. Невозможность справиться с ценовыми разрывами, риски превышения стоп-лосса.

  4. Склонны к тому, чтобы быть выбитыми на различных рынках.

  5. Работает только на очевидных трендовых рынках, а не на боковых.

  6. Выбор периода обратного тестирования влияет на результаты.

Возможности для расширения

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

  1. Испытывайте различные наборы параметров, чтобы найти оптимальные значения.

  2. Включите другие индикаторы, такие как MACD, полосы Боллинджера, чтобы улучшить решения.

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

  4. Оптимизируйте вход, логику выхода, как выход.

  5. Проверка надежности в различных рыночных условиях.

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

  7. Добавьте обращение с ценовыми разрывами и сценариями остановки потерь.

Заключение

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


/*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)
    



Больше