Стратегия покупки/продажи по ценовому курсу

Автор:Чао Чжан, Дата: 2024-01-08 11:11:18
Тэги:

img

Обзор

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

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

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

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

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

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

  • Простая и понятная идея стратегии, легкая для понимания и реализации
  • Используйте свечи для определения направления тренда
  • Для контроля риска имеется механизм стоп-лосса и прибыли

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

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

Руководство по оптимизации

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

Резюме

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


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







Больше