
Стратегия представляет собой интеллектуальную торговую систему, основанную на институциональном потоке ордеров, которая прогнозирует потенциальные точки разворота цены путем выявления блоков ордеров на рынке. Система использует динамическое решение по управлению подскладами для оптимизации управления позициями посредством трехуровневых целевых позиций с целью максимизации прибыли. Суть стратегии заключается в фиксации ценовых кривых, генерируемых институциональным торговым поведением, и выявлении важных ценовых уровней посредством статистического анализа высоких и низких точек.
Стратегия основана на нескольких ключевых элементах:
Эта стратегия создает полноценную торговую систему посредством институционального анализа потока заказов и динамического управления складом. Благодаря идентификации блоков ордеров и многоуровневой установке стоп-профита мы можем использовать возможности для крупных операций с капиталом и достигать эффективного контроля рисков. Трейдерам рекомендуется обращать внимание на выбор рыночной среды в реальной торговле и корректировать настройки параметров в соответствии с конкретными обстоятельствами.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("Institutional Order Flow Strategy", overlay=true)
// Input settings
inputSession = input("0930-1600", "Trading Session") // Trading session
lookbackPeriod = input.int(20, "Order Block Lookback Period", minval=1) // Lookback for Order Blocks
target1Pct = input.float(0.5, "Target 1 (% move)", step=0.1, minval=0.1) // First profit target
target2Pct = input.float(1.0, "Target 2 (% move)", step=0.1, minval=0.1) // Second profit target
target3Pct = input.float(1.5, "Target 3 (% move)", step=0.1, minval=0.1) // Third profit target
// Order Block identification
highestHigh = ta.highest(high, lookbackPeriod)
lowestLow = ta.lowest(low, lookbackPeriod)
orderBlockBuy = ta.valuewhen(close[1] < open[1] and close > open, highestHigh, 0)
orderBlockSell = ta.valuewhen(close[1] > open[1] and close < open, lowestLow, 0)
// Entry logic
inSession = true
longCondition = close > orderBlockBuy and inSession
shortCondition = close < orderBlockSell and inSession
// Strategy entries
if longCondition
strategy.entry("Long", strategy.long)
if shortCondition
strategy.entry("Short", strategy.short)
// Calculate targets for scaling out
longTarget1 = strategy.position_avg_price + strategy.position_avg_price * target1Pct / 100
longTarget2 = strategy.position_avg_price + strategy.position_avg_price * target2Pct / 100
longTarget3 = strategy.position_avg_price + strategy.position_avg_price * target3Pct / 100
shortTarget1 = strategy.position_avg_price - strategy.position_avg_price * target1Pct / 100
shortTarget2 = strategy.position_avg_price - strategy.position_avg_price * target2Pct / 100
shortTarget3 = strategy.position_avg_price - strategy.position_avg_price * target3Pct / 100
// Exit logic with scaling out
if strategy.position_size > 0
strategy.exit("Target 1", from_entry="Long", limit=longTarget1, qty_percent=50)
strategy.exit("Target 2", from_entry="Long", limit=longTarget2, qty_percent=30)
strategy.exit("Target 3", from_entry="Long", limit=longTarget3, qty_percent=20)
if strategy.position_size < 0
strategy.exit("Target 1", from_entry="Short", limit=shortTarget1, qty_percent=50)
strategy.exit("Target 2", from_entry="Short", limit=shortTarget2, qty_percent=30)
strategy.exit("Target 3", from_entry="Short", limit=shortTarget3, qty_percent=20)
// Visualize Order Blocks
plot(orderBlockBuy, "Order Block Buy", color=color.green, linewidth=2, style=plot.style_line)
plot(orderBlockSell, "Order Block Sell", color=color.red, linewidth=2, style=plot.style_line)