
Strategi ini adalah strategi perdagangan berdasarkan peningkatan jumlah transaksi ((Delta Volume) dan Fibonacci Retracement (Fibonacci Retracement). Ia menilai trend pasaran dengan membandingkan jumlah transaksi pembeli dan penjual dalam jangka masa tertentu, sambil menggunakan garis penyesuaian Fibonacci untuk menentukan titik masuk.
Strategi ini menggunakan kombinasi kenaikan jumlah dan Fibonacci retracement line, masuk pada awal pembentukan trend, dan keluar ketika trend mungkin berbalik, untuk menangkap trend utama di pasaran. Tetapi risiko perdagangan yang kerap mungkin berlaku di pasaran yang bergolak, dan oleh itu perlu dioptimumkan dalam kombinasi dengan petunjuk lain dan alat kawalan risiko.
/*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")