Стратегии покупки и продажи на основе цен закрытия K-линии


Дата создания: 2024-01-08 11:11:18 Последнее изменение: 2024-01-08 11:11:18
Копировать: 2 Количество просмотров: 1039
1
Подписаться
1617
Подписчики

Стратегии покупки и продажи на основе цен закрытия K-линии

Обзор

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

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

Стратегический принцип

  1. Получение исторических максимумов и минимумов за определенный период времени (например, солнечный, часовой и т. д.)
  2. Расчет стоп-дистанции и стоп-дистанции
    • Стоп-далёк = наивысшая цена на верхней линии K - наименьшая цена на верхней линии K
    • Стоп-дистанция = стоп-дистанция * 3 ((установка стоп-дистанции в соотношении 1:3))
  3. Определение отношений текущей цены закрытия K-линии с максимальной и минимальной ценой предыдущей K-линии
    • Если текущая цена закрытия превышает максимальную цену на K-линии, то запускается сигнал покупки.
    • Если текущая цена закрытия < минимальная цена на K-линии, то срабатывает сигнал продажи
  4. Установка остановок и остановок после входа
    • После покупки, настройка стоп-лосса на самую низкую цену на K-линии - стоп-расстояние, стоп-блок на самую высокую цену на K-линии + стоп-расстояние
    • После продажи настройка стоп-лосса на самую высокую цену на K-линии + стоп-расстояние, стоп-линия на самую низкую цену на K-линии - стоп-расстояние

Вот основная логика этой стратегии.

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

  • Стратегическая концепция ясна, проста и понятна
  • Использование K-линейной информации для определения направления тренда
  • Контроль рисков с механизмом остановки повреждений

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

  • Суждение о K-линейной форме, основанное только на одном временном цикле, может привести к созданию большего количества ложных сигналов.
  • Не учитываются дополнительные факторы, такие как изменение объема торговли, волатильность и т.д.
  • Недостаточное положение предохранителя может привести к риску слишком большого или слишком маленького расстояния.

Направление оптимизации

  • Сигналы о входе, объединенные с другими факторами, такими как объем торгов, средняя линия и т. д.
  • Оптимизация алгоритмов остановки убытков, чтобы остановка была более рациональной и более полной
  • Параметры для разных сортов могут потребовать корректировки
  • Можно проверить эффективность более длинных циклов

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2023-12-08 00:00:00
end: 2024-01-07 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Buy/Sell on Candle Close", overlay=true)

var float prevLowest = na
var float prevHighest = na
var float slDistance = na
var float tpDistance = na

// Specify the desired timeframe here (e.g., "D" for daily, "H" for hourly, etc.)
timeframe = "D"

// Fetching historical data for the specified timeframe
pastLow = request.security(syminfo.tickerid, timeframe, low, lookahead=barmerge.lookahead_on)
pastHigh = request.security(syminfo.tickerid, timeframe, high, lookahead=barmerge.lookahead_on)

if bar_index > 0
    prevLowest := pastLow[1]
    prevHighest := pastHigh[1]

currentClose = close

if not na(prevLowest) and not na(prevHighest)
    slDistance := prevHighest - prevLowest
    tpDistance := 3 * slDistance // Adjusted for 1:3 risk-reward ratio

// Buy trigger when current close is higher than previous highest
if not na(prevLowest) and not na(prevHighest) and currentClose > prevHighest
    strategy.entry("Buy", strategy.long)
    strategy.exit("Buy TP/SL", "Buy", stop=prevLowest - slDistance, limit=prevHighest + tpDistance)

// Sell trigger when current close is lower than previous lowest
if not na(prevLowest) and not na(prevHighest) and currentClose < prevLowest
    strategy.entry("Sell", strategy.short)
    strategy.exit("Sell TP/SL", "Sell", stop=prevHighest + slDistance, limit=prevLowest - tpDistance)

plot(prevLowest, color=color.blue, title="Previous Lowest")
plot(prevHighest, color=color.red, title="Previous Highest")