Отслеживание стратегий медвежьего рынка


Дата создания: 2024-02-26 14:12:09 Последнее изменение: 2024-02-26 14:12:09
Копировать: 1 Количество просмотров: 955
1
Подписаться
1617
Подписчики

Отслеживание стратегий медвежьего рынка

Обзор

Следить за медвежьим рынком - это стратегия, предназначенная для захвата типичной модели поведения евро/доллара во время открытия европейского рынка. Эта стратегия использует особенности европейского рынка во время открытия европейского рынка, когда евро находится в ловушке, что вынуждает его плавать.

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

Основная логика торговли, отслеживающая стратегию медвежьего рынка, основана на следующей гипотезе: во время европейского/лондонского открытия торгов торговли трейдеры и алгоритмы, которые делают больше евро, повышают цену евро/доллара. Но если цены не смогут продолжать расти или появятся признаки падения, эти трейдеры окажутся в ловушке.

Эта стратегия использует эту теорию медвежьего рынка, чтобы поймать краткосрочные падения. В частности, она будет искать обратный кристалловый сигнал на 1-часовой линии K в европейском часовом поясе (например, 2am-7am). Критерий для определения обратного кристаллового сигнала здесь заключается в том, что цена закрытия частично закрывается ниже цены открытия, а цена закрытия не превышает полтора раза общий диапазон колебаний кристалла (то есть цена закрытия близка к кристаллической отметке).

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

  1. RSI выше линий сверхпокупок (по умолчанию 70);
  2. предыдущая K-линия закрывается выше, чем открывается ((множественный конечный сигнал);
  3. Когда высота K-линии достигает нового максимума;

После удовлетворения всех условий фильтрации, стратегия будет пустой при обратном закрытии торговой сети, стоп-лосс будет установлен выше максимума, а целевая прибыль будет ориентирована на приемлемую доходность от риска (по умолчанию доходность от риска составляет 1 к 1).

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

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

Это простая, но практичная стратегия краткосрочного позиционирования. Основные преимущества:

  1. Получается, что в некоторых случаях, например, в случае, когда у вас есть проблемы с голосом, вы можете использовать эти методы для того, чтобы выявить, что у вас есть проблемы.
  2. Стратегическая логика проста, легко понятна и оптимизирована для обратной связи;
  3. Ночная торговля, избегая рыночного шума в дневное время;
  4. Уровень риска достаточно высок, а стратегия по снижению убытков ясна.
  5. Прямое подключение к автоматической торговле MT4/5;

В целом, отслеживание “медвежьего рынка” как краткосрочной ночной арбитражной стратегии является хорошим выбором как в плане стабильности, так и в плане практичности.

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

Несмотря на определенные преимущества, торговля любыми финансовыми продуктами сопряжена с рисками, основными из которых являются:

  1. На рынке ночных дисков наблюдается слабая ликвидность, из-за чего они не могут своевременно остановить убытки.
  2. По мнению экспертов, в этом случае “проблема в том, что мы не можем контролировать ситуацию, и не можем контролировать ситуацию”.
  3. В некоторых рыночных условиях правила поведения, при которых евро находится в ловушке, могут не сработать;
  4. Для того, чтобы доказать эффективность стратегии, необходимы достаточные исторические данные.
  5. Это может быть значительно отличается от данных с реального диска.

В ответ на эти риски можно сделать следующее:

  1. корректировка величины остановки, чтобы предотвратить недействительную остановку;
  2. В качестве примера можно привести следующее:
  3. Оптимизация параметров стратегии для адаптации к более широкой рыночной среде;
  4. Использование более длительных циклов отсчета;
  5. Многократная лабораторная проверка гарантирует достоверность результатов.

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

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

  1. Проверка многовременных рамок- возможность повторной проверки обратного сигнала на 5-минутных или 15-минутных временных рамках для повышения стабильности;
  2. Фильтрация машинного обучения- внедрение алгоритмов машинного обучения, позволяющих выявлять больше моделей и отфильтровывать ложные сигналы;
  3. Динамическая остановка- в реальном времени корректировать точку остановки, чтобы предотвратить неэффективную остановку, в зависимости от степени волатильности рынка;
  4. Оптимизация управления стабильными средствами- оптимизировать стратегию управления капиталом, чтобы обеспечить стабильность прибыли путем корректировки позиций;

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

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

Исходный код стратегии
/*backtest
start: 2024-02-18 00:00:00
end: 2024-02-25 00:00:00
period: 3h
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/
// © ZenAndTheArtOfTrading / PineScriptMastery
// FTB Strategy (PineConnector Version)
// Last Updated: 21st July, 2021
// @version=4
strategy("[2021] FTB Strategy", shorttitle="FTB", overlay=true)

// Risk Settings
var g_risk      = "Risk Settings"
pips            = input(title="Stop Pips", type=input.float, defval=2.0, group=g_risk, tooltip="How many pips above high to put stop loss")
rr              = input(title="Risk:Reward", type=input.float, defval=1.0, group=g_risk, tooltip="This determines the risk:reward profile of the setup")
// Filters
var g_filter    = "Filter Settings"
timezone        = input(title="Timezone", type=input.session, defval="0200-0700", group=g_filter, tooltip="Which timezone to search for FTB signals in")
days            = input(title="Days To Trade", defval="13457", group=g_filter, tooltip="Which days to trade this strategy on (Monday & Friday disabled by default)")
useRsiFilter    = input(title="RSI OB/OS?", type=input.bool, defval=true, group=g_filter, tooltip="If true then the RSI must be considered overbought before a signal is valid")
useCloseFilter  = input(title="Previous Bar Must Be Bullish?", type=input.bool, defval=false, group=g_filter, tooltip="If true then the previous bar must have closed bullish")
useHighFilter   = input(title="High Filter", type=input.bool, defval=false, group=g_filter, tooltip="If true then the signal bar must be the highest bar over X bars")
highLookback    = input(title="High Lookback", type=input.integer, defval=10, group=g_filter, tooltip="This is for setting the High Filter lookback distance")
fib             = input(title="Candle Close %", defval=0.5, group=g_filter, tooltip="For identifying shooting star candles (0.5 = must close <= 50% mark of candle size)")
rsiLen          = input(title="RSI Length", type=input.integer, defval=3, group=g_filter, tooltip="RSI length")
rsiOB           = input(title="RSI OB", type=input.float, defval=70.0, group=g_filter, tooltip="RSI overbought threshold")
// PineConnector Settings
var g_pc        = "PineConnector Settings"
pc_id           = input(title="License ID", defval="YOUR_ID", type=input.string, group=g_pc, tooltip="This is your PineConnector license ID")
pc_risk         = input(title="Risk Per Trade", defval=1, step=0.5, type=input.float, group=g_pc, tooltip="This is how much to risk per trade (% of balance or lots)")
pc_prefix       = input(title="MetaTrader Prefix", defval="", type=input.string, group=g_pc, tooltip="This is your broker's MetaTrader symbol prefix")
pc_suffix       = input(title="MetaTrader Suffix", defval="", type=input.string, group=g_pc, tooltip="This is your broker's MetaTrader symbol suffix")
pc_spread       = input(title="Spread", defval=0.5, type=input.float, group=g_pc, tooltip="Enter your average spread for this pair (used for offsetting limit order)")
pc_limit        = input(title="Use Limit Order?", defval=true, type=input.bool, group=g_pc, tooltip="If true a limit order will be used, if false a market order will be used")

// Generate PineConnector alert string
var symbol = pc_prefix + syminfo.ticker + pc_suffix
var limit = pc_limit ? "limit" : ""
pc_entry_alert(direction, sl, tp) =>
    price = pc_limit ? "price=" + tostring(pc_spread) + "," : ""
    pc_id + "," + direction + limit + "," + symbol + "," + price + "sl=" + tostring(sl) + ",tp=" + tostring(tp) + ",risk=" + tostring(pc_risk)

// Get RSI filter
rsiValue = rsi(close, rsiLen)
rsiFilter = not useRsiFilter or rsiValue >= rsiOB

// Check high & close filter
highFilter = not useHighFilter or high == highest(high, highLookback)
closeFilter = not useCloseFilter or close[1] > open[1]

// InSession() determines if a price bar falls inside the specified session
inSession(sess) => na(time(timeframe.period, sess + ":" + days)) == false

// Calculate 50% mark of candle size
bearFib = (high - low) * fib + low

// Check filters
filters = inSession(timezone) and closeFilter and high > high[1] and rsiFilter and highFilter and open != close

// Detect valid shooting star pinbar pattern
var takenTradeAlready = false
star = true

// Calculate stops & targets
shortStopPrice = high + (syminfo.mintick * pips * 10)
shortStopDistance = shortStopPrice - close
shortTargetPrice = close - (shortStopDistance * rr)

// Save stops & targets for the current trade
var tradeStopPrice = 0.0
var tradeTargetPrice = 0.0

// If we detect a valid shooting star, save our stops & targets, enter short and generate alert
if star and barstate.isconfirmed
    tradeStopPrice := shortStopPrice
    tradeTargetPrice := shortTargetPrice
    takenTradeAlready := true
    alertString = pc_entry_alert("sell", tradeStopPrice, tradeTargetPrice)
    alert(alertString, alert.freq_once_per_bar_close)
    strategy.entry(id="Short", long=strategy.short, when=strategy.position_size == 0, comment=alertString)

// If we have exited the FTB session then reset our takenTradeAlready flag for the next session
if not inSession(timezone) and inSession(timezone)[1]
    takenTradeAlready := false
    
// If price has exceeded target then cancel limit order if it's still active
if pc_limit and low <= tradeTargetPrice and strategy.position_size == 0
    alert(pc_id + ",cancelshort," + symbol)
    tradeTargetPrice := na

// Draw stops & targets
plot(star ? tradeStopPrice : na, color=color.red, style=plot.style_linebr, title="SL")
plot(star ? shortTargetPrice : na, color=color.green, style=plot.style_linebr, title="TP")
// Draw short signals
plotshape(star ? 1 : na, style=shape.triangledown, color=color.red)
// Change background color to highlight detection zone
bgcolor(color=inSession(timezone) ? color.new(color.red,80) : na, title="Session")

// Exit trade whenever our stop or target is hit
strategy.exit(id="Short Exit", from_entry="Short", limit=tradeTargetPrice, stop=tradeStopPrice, when=strategy.position_size != 0)