フィボナッチリトレースメントとボリューム増加に基づく取引戦略


作成日: 2024-05-15 10:45:58 最終変更日: 2024-05-15 10:45:58
コピー: 0 クリック数: 694
1
フォロー
1617
フォロワー

フィボナッチリトレースメントとボリューム増加に基づく取引戦略

概要

この戦略は,取引量増加 ((Delta Volume) とフィボナッチ逆転 ((Fibonacci Retracement)) に基づく取引戦略である.これは,購入者と販売者の取引量を比較して,市場動向を判断し,フィボナッチ逆転線を使用して出口を決定する.購入者が取引量を上回り,価格は61.8%のフィボナッチ逆転線を突破したときに,購入者が取引量を上回り,価格は38.2%のフィボナッチ逆転線を突破したときに,平衡する.

戦略原則

  1. 指定周期内の買取者取引量と売り手取引量を計算し,配列に保存する.
  2. 取引量増加 ((Delta Volume) を計算する.つまり,買い手による取引量減算した売り手による取引量である.
  3. 指定された周期内の最高値と最低値を計算し,それらのに基づいて38.2%と61.8%のフィボナッチ回調線を計算する.
  4. 取引量増加が0以上 (買い手取引量が売り手取引量より大きい) であり,閉盘価格が61.8%のフィボナッチ回調線以上であるとき,ポジションを開く.
  5. 取引量増加が0未満 (売り手の取引量が買い手の取引量より大きい) で,閉盘価格が38.2%のフィボナッチ回調線以下であるとき,平仓.

戦略的優位性

  1. 取引量と価格の2つの次元を組み合わせることで,市場動向をより全面的に判断できます.
  2. Fibonacci 回帰線を入力・出出口として利用し,明確な技術的なサポートがあります.
  3. 取引量増加指数は,市場における需要と供給の関係を反映する指数であり,主要な指数である.
  4. パラメータは調整可能で,異なる市場と取引品種に適用されます.

戦略リスク

  1. 波動的な市場では,頻繁に取引を繰り返すことで取引コストが高くなる可能性があります.
  2. 市場が急激に波動すると,価格がフィボナッチ回調線を素早く破り,最適な出入口を逃してしまう可能性があります.
  3. この戦略は,歴史データによる計算に依存し,新規上場された取引品種やデータの欠落が戦略の有効性を影響する可能性がある.

戦略最適化の方向性

  1. 移動平均,RSIなどの他の技術指標を導入することを検討し,トレンドと出入り点を確認することができます.
  2. 異なる市場と取引品種に対して,取引量増加とフィボナッチ回調の計算周期とパラメータを最適化することができる.
  3. 入場後,リスクを制御し,利益をロックするために,移動ストップまたはストップを設定できます.
  4. 市場情緒指数,例えばFear & Greed Index (F&G) と組み合わせて,戦略を動的に調整することができる.

要約する

この戦略は,取引量増量とフィボナッチ回調線を組み合わせて,トレンドが形成される初期に入場し,トレンドが逆転する可能性のあるときに出場し,市場の主要なトレンドを捕捉する.しかし,振動的な市場では頻繁に取引されるリスクに直面する可能性があるため,他の指標とリスク管理手段と組み合わせて最適化する必要がある.全体的に,この戦略は,考え方が明確で,論理的に厳格であり,基礎戦略としてさらなる開発と適用が可能である.

ストラテジーソースコード
/*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")