Chiến lược này là một chiến lược giao dịch dựa trên khối lượng Delta và Fibonacci Retracement. Nó xác định xu hướng thị trường bằng cách so sánh khối lượng người mua và người bán trong một khoảng thời gian, trong khi sử dụng các đường rút lại Fibonacci để xác định các điểm vào và ra. Khi khối lượng của người mua vượt quá khối lượng của người bán và giá vượt qua đường rút lại Fibonacci 61,8%, nó đi vào một vị trí dài; khi khối lượng của người bán vượt quá khối lượng của người mua và giá giảm xuống dưới đường rút lại Fibonacci 38,2%, nó đóng vị trí.
Bằng cách kết hợp các đường Delta Volume và Fibonacci Retracement, chiến lược này đi vào khi một xu hướng đang hình thành và thoát ra khi xu hướng có thể đảo ngược, để nắm bắt xu hướng chính của thị trường. Tuy nhiên, nó có thể phải đối mặt với rủi ro giao dịch thường xuyên trong thị trường dao động, vì vậy nó cần được tối ưu hóa với các chỉ số khác và các biện pháp kiểm soát rủi ro. Nhìn chung, chiến lược có suy nghĩ rõ ràng, hợp lý nghiêm ngặt và có thể được sử dụng như một chiến lược cơ bản để phát triển và áp dụng hơn nữa.
/*backtest start: 2023-05-09 00:00:00 end: 2024-05-14 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Delta Volume with Fibonacci Levels Strategy", overlay=true) // Input pour la période de calcul du volume et du delta N = input(14, title="Période du Delta Volume") fibLength = input(21, title="Fibonacci Lookback Period") // Choix de la barre pour l'entrée et la sortie des trades entryPriceType = input.string("close", title="Entry Price Type", options=["open", "close"]) exitPriceType = input.string("close", title="Exit Price Type", options=["open", "close"]) // Correction des dates de début et de fin pour le backtest startDate = input(defval = timestamp("2021-01-01"), title = "Start Date") endDate = input(defval = timestamp("2022-01-01"), title = "End Date") // Calcul des volumes des acheteurs et des vendeurs buyerVolume = array.new_float() sellerVolume = array.new_float() // Mise à jour des volumes à chaque bougie buyVol = close > open ? volume : 0 sellVol = close < open ? volume : 0 array.unshift(buyerVolume, buyVol) array.unshift(sellerVolume, sellVol) // Gardez seulement les N dernières valeurs pour le delta volume if array.size(buyerVolume) > N array.pop(buyerVolume) if array.size(sellerVolume) > N array.pop(sellerVolume) // Calcul du delta de volume sumBuyerVolume = array.sum(buyerVolume) sumSellerVolume = array.sum(sellerVolume) deltaVolume = sumBuyerVolume - sumSellerVolume // Calcul du plus haut et du plus bas pour Fibonacci highestPrice = ta.highest(high, fibLength) lowestPrice = ta.lowest(low, fibLength) // Fibonacci Levels fib382 = lowestPrice + (highestPrice - lowestPrice) * 0.5 fib618 = lowestPrice + (highestPrice - lowestPrice) * 0.786 // Vérification des dates pour le backtest bool isInDateRange = true // Conditions d'entrée et de sortie entryPrice = entryPriceType == "open" ? open : close exitPrice = exitPriceType == "open" ? open : close // Acheter quand le volume des acheteurs dépasse celui des vendeurs, le prix est au-dessus du niveau 61.8% de Fibonacci if isInDateRange and deltaVolume > 0 and entryPrice > fib618 strategy.entry("Buy", strategy.long) // Vendre quand le volume des vendeurs dépasse celui des acheteurs, le prix est en dessous du niveau 38.2% de Fibonacci if isInDateRange and deltaVolume < 0 and exitPrice < fib382 strategy.close("Buy") // Affichage des niveaux de Fibonacci et du delta de volume plot(fib382, color=color.red, title="Fibonacci 38.2%") plot(fib618, color=color.green, title="Fibonacci 61.8%") plot(deltaVolume, color=deltaVolume > 0 ? color.green : color.red, title="Delta Volume")