Эта стратегия является торговой стратегией, основанной на дельта-объеме и ретракции Фибоначчи. Она определяет рыночную тенденцию путем сравнения объема покупателей и продавцов в течение определенного периода времени, используя линии ретракции Фибоначчи для определения точек входа и выхода. Когда объем покупателя превышает объем продавца и цена проходит через линию ретракции Фибоначчи на 61,8%, он входит в длинную позицию; когда объем продавца превышает объем покупателя и цена падает ниже линии ретракции Фибоначчи на 38,2%, он закрывает позицию.
Сочетая линии дельта-объема и фибоначчи-ретрассемента, эта стратегия входит, когда формируется тенденция, и выходит, когда тенденция может измениться, чтобы захватить основную тенденцию рынка. Однако она может столкнуться с риском частой торговли на колеблющемся рынке, поэтому ее необходимо оптимизировать с другими индикаторами и мерами контроля риска. В целом стратегия ясна в мышлении, логически строга и может использоваться в качестве базовой стратегии для дальнейшего развития и применения.
/*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")