定量取引のための移動平均戦略を持つフィボナッチ平均キャンドル

作者: リン・ハーンチャオチャン開催日:2024年1月19日 14:36:45
タグ:

img

概要

この戦略は,ロングポジションのみとショートポジションなしでの定量的な取引を実施するために,フィボナッチ配列に基づいて平均キャンドルと移動平均を構築する.初期テストでは,この戦略がより大きなタイムフレームでより良いパフォーマンスを示す.

戦略原則

この戦略の主なステップは以下の通りです.

  1. 最新の10回のフィボナッチサイクルの 平均的な閉店,高値,低値,開場価格を計算して平均的なキャンドルを構成します

  2. 長期と緊縮条件を設定する: 平均キャンドルが上昇傾向を示すとき (オープン以上閉じる,上昇傾向が続く) オープン・ロングポジションを閉じて, 平均 EMA を上回ると閉じる; 平均キャンドルが低下傾向を示すとき (オープン以下閉じる,低下傾向が続く) 閉じて,平均 EMA を下回る ロングポジションを閉じる.

価格変動をフィルタリングするための平均キャンドルを計算し,移動平均指標と組み合わせて取引信号を生成することで,この戦略はトレンドを効果的に特定し,取引リスクを制御することができます.

利点

  1. フィボナッチ配列に基づく平均的なキャンドルは ランダムな価格ノイズを効果的にフィルターし トレンド信号を識別します

  2. 複数の EMA の平均値は,サポート/レジスタンスレベルの安定性を高め,信号品質を改善します.

  3. ロングポジションだけが取引の数を削減し,取引コストとスリップ効果を低下させる.

  4. 長期間の取引に適した 長期間の取引に適した 長期間の取引に適した

リスク

  1. 長期戦略のみは,下落市場で大きな損失を伴う可能性があります.

  2. EMA線は遅滞しやすいので 最良のエントリーポイントを逃す可能性があります

  3. 長い時間枠を 過剰に追求すると 短い時間枠で 機会を逃すかもしれません

  4. パラメータ最適化空間が限られているため,実際の取引パフォーマンスはバックテスト結果に劣る可能性があります.

強化 分野

  1. 損失が増加すると,適切なストップロスを出口ポジションに追加してテストできます.

  2. ATR のような変動指標を組み合わせて ポジションのサイズを動的に調整できます

  3. ダウントレンドの際に適切なショートポジションを取って 利益を上げることをテストできます

  4. 最適な組み合わせを見つけるために EMA 期間パラメータを最適化できます

結論


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © SoftKill21

//@version=4
strategy("Fibonacci candle", overlay=false  )


//plot of our fibonacci candle
// Fibonacci 
// Fn = Fn-1 + Fn-2
// F10 = 55
// 0 1 2 3 5 8 13 21 34 55

avg_close = (close[0] + close[1] + close[2] + close[3] +close[5] + close[8] + close[13]+ close[21] + close[34] + close[55]) / 10
avg_high = (high[0] + high[1] + high[2] + high[3] +high[5] + high[8] + high[13]+ high[21] + high[34] + high[55]) / 10
avg_low = (low[0] + low[1] + low[2] + low[3] +low[5] + low[8] + low[13]+ low[21] + low[34] + low[55]) / 10
avg_open = (open[0] + open[1] + open[2] + open[3] +open[5] + open[8] + open[13]+ open[21] + open[34] + open[55]) / 10


src = avg_close//input(avg_close, title="Source")


out55 = ema(src, 55)
out1 = ema(src, 1)
out2 = ema(src, 2)
out3 = ema(src, 3)
out5 = ema(src, 5)
out8 = ema(src, 8)
out13 = ema(src, 13)
out21 = ema(src, 21)
out34 = ema(src, 34)

avg_ema = (out55 + out1 + out2 + out3+ out5 + out8 + out13 + out21 + out34)/9

plot(avg_ema)

plotcandle(avg_open, avg_high, avg_low, avg_close, title='Title', color = avg_open < avg_close ? color.green : color.red, wickcolor=color.white)

long = avg_open < avg_close and avg_close > avg_close[1] and avg_high > avg_high[1] and  avg_close[1] > avg_close[2] and avg_high[1] > avg_high[2]
short = avg_open > avg_close and avg_close < avg_close[1] and avg_low < avg_low[1] and avg_close[1] < avg_close[2] and avg_low[1] < avg_low[2]

strategy.entry("long",1,when=long and avg_close > avg_ema)
strategy.close('long',when=short and avg_close < avg_ema)


もっと