Торговая стратегия, основанная на модели пик-к-пик

Автор:Чао Чжан, Дата: 2024-02-20 15:40:58
Тэги:

img

Обзор

Стратегия называется Peak-to-Peak Pattern Based Trading Strategy. Она в основном использует модель от пика до пика в графиках свечей для определения входов и выходов.

Принцип стратегии

Стратегия определяет поднимающийся пик (upFractal) и падающий пик (downFractal) для определения модели от пика до пика в графиках свечей.

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

Логика суждения для падения пика такова: низ текущего свечника является самым низким из последних n свечников, и низ последующих свечников не опускается ниже текущего.

Здесь используются булевые переменные и петли для определения взаимосвязи между предыдущими n и более поздними n свечей высоким/низким и текущим, и в конечном итоге выявления восходящих и падающих пиков.

Следовательно, основная логика этой стратегии заключается в следующем:

  1. Определить поднимающиеся и падающие вершины
  2. Долго на восходящих вершинах и коротко на падающих вершинах

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

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

  1. Узоры от вершины к вершине легко определить, легко управлять
  2. Основываясь на технической модели, на которую не влияют фундаментальные факторы
  3. Возможные меньшие вычеты

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

Эта стратегия также сопряжена с некоторыми рисками:

  1. Неточное определение модели пик-по-пик, может пропустить лучшее время входа
  2. Трудно установить стоп-лосс, когда рынок сильно движется.
  3. Опирается только на модели, игнорирует другие факторы.

Противодействие:

  1. Настройка параметров пиковой модели для оптимизации логики
  2. Комбинировать с другими индикаторами для определения позиции стоп-лосса
  3. Использование вместе с фундаментальным или другим анализом

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

Некоторые направления для оптимизации стратегии:

  1. Увеличить параметры настроения вариантов для лучшего выявления пик-по-пик моделей
  2. Добавить логику остановки потери
  3. Рассмотреть объем торговли, волатильность и другие показатели
  4. Сочетание различных временных анализа

Резюме

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


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("sanju parmar", shorttitle="sanju trading empire", overlay=true)

// Define "n" as the number of periods and keep a minimum value of 2 for error handling.
n = input.int(title="Periods", defval=2, minval=2)

// UpFractal
bool upflagDownFrontier = true
bool upflagUpFrontier0 = true
bool upflagUpFrontier1 = true
bool upflagUpFrontier2 = true
bool upflagUpFrontier3 = true
bool upflagUpFrontier4 = true

for i = 1 to n
    upflagDownFrontier := upflagDownFrontier and (high[n-i] < high[n])
    upflagUpFrontier0 := upflagUpFrontier0 and (high[n+i] < high[n])
    upflagUpFrontier1 := upflagUpFrontier1 and (high[n+1] <= high[n] and high[n+i + 1] < high[n])
    upflagUpFrontier2 := upflagUpFrontier2 and (high[n+1] <= high[n] and high[n+2] <= high[n] and high[n+i + 2] < high[n])
    upflagUpFrontier3 := upflagUpFrontier3 and (high[n+1] <= high[n] and high[n+2] <= high[n] and high[n+3] <= high[n] and high[n+i + 3] < high[n])
    upflagUpFrontier4 := upflagUpFrontier4 and (high[n+1] <= high[n] and high[n+2] <= high[n] and high[n+3] <= high[n] and high[n+4] <= high[n] and high[n+i + 4] < high[n])
flagUpFrontier = upflagUpFrontier0 or upflagUpFrontier1 or upflagUpFrontier2 or upflagUpFrontier3 or upflagUpFrontier4

upFractal = (upflagDownFrontier and flagUpFrontier)


// downFractal
bool downflagDownFrontier = true
bool downflagUpFrontier0 = true
bool downflagUpFrontier1 = true
bool downflagUpFrontier2 = true
bool downflagUpFrontier3 = true
bool downflagUpFrontier4 = true

for i = 1 to n
    downflagDownFrontier := downflagDownFrontier and (low[n-i] > low[n])
    downflagUpFrontier0 := downflagUpFrontier0 and (low[n+i] > low[n])
    downflagUpFrontier1 := downflagUpFrontier1 and (low[n+1] >= low[n] and low[n+i + 1] > low[n])
    downflagUpFrontier2 := downflagUpFrontier2 and (low[n+1] >= low[n] and low[n+2] >= low[n] and low[n+i + 2] > low[n])
    downflagUpFrontier3 := downflagUpFrontier3 and (low[n+1] >= low[n] and low[n+2] >= low[n] and low[n+3] >= low[n] and low[n+i + 3] > low[n])
    downflagUpFrontier4 := downflagUpFrontier4 and (low[n+1] >= low[n] and low[n+2] >= low[n] and low[n+3] >= low[n] and low[n+4] >= low[n] and low[n+i + 4] > low[n])
flagDownFrontier = downflagUpFrontier0 or downflagUpFrontier1 or downflagUpFrontier2 or downflagUpFrontier3 or downflagUpFrontier4

downFractal = (downflagDownFrontier and flagDownFrontier)

plotshape(downFractal, style=shape.triangleup, location=location.belowbar, offset=-n, color=#18f523, size = size.small)
plotshape(upFractal, style=shape.triangledown, location=location.abovebar, offset=-n, color=#cf3d11, size = size.small)

// Strategy Conditions
longCondition = upFractal
shortCondition = downFractal

// Strategy Entry and Exit
if (longCondition)
    strategy.entry("Buy", strategy.long)
if (shortCondition)
    strategy.entry("Sell", strategy.short)


Больше