
La stratégie est un système de trading intelligent basé sur le flux d’ordres institutionnels, qui prédit les points potentiels de retournement de prix en identifiant les blocs d’ordres sur le marché. Le système adopte une solution de gestion dynamique de sous-entrepôt pour optimiser la gestion des positions via des positions cibles à trois niveaux afin de maximiser les profits. Le cœur de la stratégie consiste à capturer les traces de prix générées par le comportement de trading institutionnel et à identifier les niveaux de prix importants grâce à une analyse statistique des points hauts et bas.
La stratégie repose sur plusieurs éléments clés :
Cette stratégie construit un système de trading complet grâce à l’analyse des flux d’ordres institutionnels et à la gestion dynamique des entrepôts. Grâce à l’identification de blocs d’ordres et à la définition de stop-profit à plusieurs niveaux, nous pouvons saisir des opportunités pour des opérations de capital importantes et obtenir un contrôle efficace des risques. Il est recommandé aux traders de prêter attention au choix de l’environnement de marché dans le trading réel et d’ajuster les paramètres en fonction des circonstances spécifiques.
/*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)