フィボナッチ移動平均のインプット戦略

作者: リン・ハーンチャオチャン,日付: 2023年11月1日 16時42分41秒
タグ:

img

概要

フィボナッチ移動平均の入力戦略は,移動平均クロスオーバーまたはクロスアンダー信号をベースに,取引信号を生成する.短期移動平均が長期移動平均を上回ると,高騰した黄金クロス信号が生成される.短期移動平均が長期移動平均を下回ると,下落した死亡クロス信号が生成される.一般的に使用される移動平均は50日および200日移動平均である.

フィボナッチ移動平均入力 (FibMAI) 戦略は,あなたの上昇または下落のクロスのために任意の値を選択することを可能にします.視覚表示のために,私はキャンドルストークを隠しながら1,2,3,5,8,13,21,34,55,89,144,233,377,610,987を含むフィボナッチ移動平均をプロットしました. しかし,この指標を使用するには,私は注目すべきクロスオーバーまたはクロスアンダーパターンが存在するかどうかを確認するために,いくつかのMAを有効にし,それらの値をFibMAI戦略のLongまたはShort設定入力にバックテストします.

たとえば,このNQ1!日表のLongまたはShort設定の入力値は:

上昇する = FibEMA34 クロスオーバー FibEMA144 について

低迷する = FibEMA55 について クロスアンダー FibSMA144

4つの異なるMA値を組み合わせることができます. 演算数または単純です.

デフォルトの色設定: 値上昇 = 緑色 値が下がる = 赤色

デフォルトのVIBMA設定: FibEMA 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181 治療法について

デフォルトのVisual MA設定: SMA 50, 100, 150, 200

デフォルトの長または短設定: 上昇する = FibEMA34 クロスオーバー FibEMA144 について

低迷する = FibEMA55 について クロスアンダー FibSMA144

原則

この戦略の基本的な論理は,2つの移動平均値間のクロスオーバー信号をベースにして取引信号を生成するものです.

移動平均は,市場の動向を分析するために使用される技術指標である.それらは一定の期間における平均閉店価格を計算し,市場の変動を効果的にフィルターすることができる.移動平均は2種類 - シンプル移動平均 (SMA) と指数的な移動平均 (EMA) が存在する.

SMAは,一期間の閉値の単純な算術平均値である. EMAは,閉値に指数的な平滑を適用し,最近の価格により重さを与える. EMAは価格変化により迅速に対応する.

短期移動平均線が長期移動平均線を超えると,上昇傾向の変化をシグナル化し,購入信号を生成する.これは"黄金十字"と呼ばれる.逆に,短期移動平均線が長期移動平均線を下回ると,下落傾向の変化をシグナル化し,販売信号を生成する.これは"死十字"と呼ばれる.

この戦略の柔軟性は,4つの移動平均値のパラメータを手動で設定する能力にあります.デフォルトパラメータは,バリーシグナルでは34期EMAが144期EMAを超越し,ベアシグナルでは55期SMAが144期EMAを下回る.これらのパラメータは入力ボックスで自由に調整できます.

さらに,この戦略は,異なるタイムフレームで複数のフィボナッチ順序移動平均をプロットする.50日,100日,150日,200日などの一般的な移動平均もプロットされている.これらは参照として機能する.鍵は,ロング/ショート設定に入力されたクロスオーバー移動平均である.

利点

この移動平均のクロスオーバー戦略の利点は以下の通りである.

  1. 移動平均値を使用することで,市場の騒音をフィルターし,トレンドの方向性を特定します

  2. 交差信号 は ある程度 の 信頼性 が ある

  3. パラメータ最適化のための長短移動平均の組み合わせをカスタマイズできる

  4. 傾向を特定するための複数のタイムフレームを組み込む

  5. 楽器の特徴に基づいて,EMAとSMAの両方を使用できます.

  6. 視覚的に直感的な 色の移動平均のクロス

  7. 分かりやすく,初心者向けに適しています

  8. 汎用性のある異なる楽器に柔軟に適用できます

リスク

この戦略にはいくつかのリスクもあります:

  1. 市場 が 動揺 し て いる 時 に ワイプソウ の 信号 が 過剰 に 多くなり,過剰 な 取引 に 繋がる

  2. 不適切な移動平均の組み合わせを使用した場合の誤った信号

  3. 極端なトレンド逆転時の信号の遅延,価格の変化を時間的に反映できない

  4. 移動平均の交差は完全に損失を避けることはできません.合理的なストップ損失が必要です.

  5. 過剰な最適化により 曲線が適している パラメーターは 市場の周期を通して 安定する必要があります

  6. パラメータは,異なる計測器で微調整が必要かもしれません.

オプティマイゼーションの方向性

この戦略を最適化する方法:

  1. バックテストを使用して最適なパラメータを見つけるために,異なる長および短移動平均の組み合わせをテストする

  2. 移動平均の種類を調整し,SMAとEMAのパフォーマンスを比較してみてください.より明確なトレンドを持つインstrumentに対してSMAと,より不安定なインstrumentに対してEMAを使用してください.

  3. KDJ,MACDなどの他の指標を組み込み 偽信号をフィルターし,品質を改善します

  4. ストップ・ロスの戦略を追加し,ストップ・ロスの追跡など,単一の取引での損失を制御します.

  5. 資金管理戦略を最適化します. 引き上げに基づいてポジションサイズ調整など.

  6. 耐久性を評価するための異なる計測器と時間枠における試験パラメータの安定性

結論

一般的に,フィボナッチ移動平均入力戦略は,信頼できるトレンドフォローシステムである. 貿易信号のためにシンプルで直感的な移動平均をクロスし,パラメータ最適化によって異なる楽器に適応することができる. 適切なストップ損失とマネーマネジメントにより,リスクは制御できる. 過度な最適化と遅れのトレンド逆転信号は避けるべきである. 適切に選択されたパラメータと取引規律により,これは効率的で安定した利益を生み出す戦略である.


/*backtest
start: 2022-10-25 00:00:00
end: 2023-10-31 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Options360 : Fibonacci MAI (Moving Averages Input) beta 10/15/22
// © Options360 original public release = 2/25/23
// * This script uses altered pieces of code from my @Options360 "Fibonacci MA7" indicator*
// 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811
////
strategy(title="Fibonacci Moving Averages Input", shorttitle = "FibMAI", overlay=true)

src = input(ohlc4, 'source')
//
string  GRP = "Long or Short Settings"
exponential1 = input(true, title="long EMA or SMA", tooltip="EMA checked or SMA unchecked", group = GRP)
long = input.int(34, minval=1, title="long", tooltip="Signal Moving average long input")
long1 = exponential1 ? ta.ema(src, long) : ta.sma(src, long)

exponential2 = input(true, title="crossover EMA or SMA", tooltip="EMA checked or SMA unchecked")
longer = input.int(144, minval=1, title="crossover", tooltip="Crossed over Moving average long input")
long2 = exponential2 ? ta.ema(src, longer) : ta.sma(src, longer)

exponential3 = input(true, title="short EMA or SMA", tooltip="EMA checked or SMA unchecked")
short = input.int(55, minval=1, title="short", tooltip="Signal Moving average short input")
short1 = exponential3 ? ta.ema(src, short) : ta.sma(src, short)

exponential4 = input(false, title="crossunder EMA or SMA", tooltip="EMA checked or SMA unchecked")
shorter = input.int(144, minval=1, title="crossunder", tooltip="Crossed under Moving average short input")
short2 = exponential4 ? ta.ema(src, shorter) : ta.sma(src, shorter)
//
string  GRP2 = "Visual FibMA Settings"
exponential = input(true, title="Fib EMA or SMA", tooltip="EMA checked or SMA unchecked", group = GRP2)
//
smaplot11 = input (true, title="MA1")
len11 = input.int(1, minval=1, title="ma Length")
out11 = exponential ? ta.ema(src, len11) : ta.sma(src, len11)
up11 = out11 > out11[1]
down11 = out11 < out11[1]
mycolor11 = up11 ? #3cfe12 : down11 ? #ff0202 : #008eff
plot(out11 and smaplot11 ? out11 :na, title="1", color=mycolor11, linewidth=1)

smaplot18 = input (true, title="MA2")
len18 = input.int(2, minval=1, title="ma Length")
out18 = exponential ? ta.ema(src, len18) : ta.sma(src, len18)
up18 = out18 > out18[1]
down18 = out18 < out18[1]
mycolor18 = up18 ? #3cfe12 : down18 ? #ff0202 : #008eff
plot(out18 and smaplot18 ? out18 :na , title="2", color=mycolor18, linewidth=1)

smaplot13 = input (true, title="MA3")
len13 = input.int(3, minval=1, title="ma Length")
out13 = exponential ? ta.ema(src, len13) : ta.sma(src, len13)
up13 = out13 > out13[1]
down13 = out13 < out13[1]
mycolor13 = up13 ? #3cfe12 : down13 ? #ff0202 : #008eff
plot(out13 and smaplot13 ? out13 :na , title="3", color=mycolor11, linewidth=1)

smaplot9 = input (true, title="MA5")
len9 = input.int(5, minval=1, title="ma Length")
out9 = exponential ? ta.ema(src, len9) : ta.sma(src, len9)
up9 = out9 > out9[1]
down9 = out9 < out9[1]
mycolor9 = up9 ? #3cfe12 : down9 ? #ff0202 : #008eff
plot(out9 and smaplot9 ? out9 :na , title="5", color=mycolor9, linewidth=1)

smaplot8 = input (true, title="MA8")
len8 = input.int(8, minval=1, title="ma Length")
out8 = exponential ? ta.ema(src, len8) : ta.sma(src, len8)
up8 = out8 > out8[1]
down8 = out8 < out8[1]
mycolor8 = up8 ? #3cfe12 : down8 ? #ff0202 : #008eff
plot(out8 and smaplot8 ? out8 :na , title="8", color=mycolor8, linewidth=1)

smaplot7 = input (true, title="MA13")
len7 = input.int(13, minval=1, title="ma Length")
out7 = exponential ? ta.ema(src, len7) : ta.sma(src, len7)
up7 = out7 > out7[1]
down7 = out7 < out7[1]
mycolor7 = up7 ? #3cfe12 : down7 ? #ff0202 : #008eff
plot(out7 and smaplot7 ? out7 :na , title="13", color=mycolor7, linewidth=1)

smaplot = input (true, title="MA21")
len = input.int(21, minval=1, title="ma Length")
out = exponential ? ta.ema(src, len) : ta.sma(src, len)
up = out > out[1]
down = out < out[1]
mycolor = up ? #3cfe12 : down ? #ff0202 : #008eff
plot(out and smaplot ? out :na, title="21", color=mycolor, linewidth=1)

smaplot2 = input (true, title="MA34")
len2 = input.int(34, minval=1, title="ma Length")
out2 = exponential ? ta.ema(src, len2) : ta.sma(src, len2)
up2 = out2 > out2[1]
down2 = out2 < out2[1]
mycolor2 = up2 ? #3cfe12 : down2 ? #ff0202 : #008eff
plot(out2 and smaplot2 ? out2 :na , title="34", color=mycolor2, linewidth=1)

smaplot3 = input (true, title="MA55")
len3 = input.int(55, minval=1, title="ma Length")
out3 = exponential ? ta.ema(src, len3) : ta.sma(src, len3)
up3 = out3 > out3[1]
down3 = out3 < out3[1]
mycolor3 = up3 ? #3cfe12 : down3 ? #ff0202 : #008eff
plot(out3 and smaplot3 ? out3 :na, title="55", color=mycolor3, linewidth=1)

smaplot4 = input (true, title="MA89")
len4 = input.int(89, minval=1, title="ma Length")
out4 = exponential ? ta.ema(src, len4) : ta.sma(src, len4)
up4 = out4 > out4[1]
down4 = out4 < out4[1]
mycolor4 = up4 ? #3cfe12 : down4 ? #ff0202 : #008eff
plot(out4 and smaplot4 ? out4 :na , title="89", color=mycolor4, linewidth=1)

smaplot5 = input (true, title="MA144")
len5 = input.int(144, minval=1, title="ma Length")
out5 = exponential ? ta.ema(src, len5) : ta.sma(src, len5)
up5 = out5 > out5[1]
down5 = out5 < out5[1]
mycolor5 = up5 ? #3cfe12 : down5 ? #ff0202 : #008eff
plot(out5 and smaplot5 ? out5 :na, title="144", color=mycolor5, linewidth=1)

smaplot6 = input (true, title="MA233")
len6 = input.int(233, minval=1, title="ma Length")
out6 = exponential ? ta.ema(src, len6) : ta.sma(src, len6)
up6 = out6 > out6[1]
down6 = out6 < out6[1]
mycolor6 = up6 ? #3cfe12 : down6 ? #ff0202 : #008eff
plot(out6 and smaplot6 ? out6 :na , title="233", color=mycolor6, linewidth=1)

smaplot10 = input (true, title="MA377")
len10 = input.int(377, minval=1, title="ma Length")
out10 = exponential ? ta.ema(src, len10) : ta.sma(src, len10)
up10 = out10 > out10[1]
down10 = out10 < out10[1]
mycolor10 = up10 ? #3cfe12 : down10 ? #ff0202 : #008eff
plot(out10 and smaplot10 ? out10 :na , title="377", color=mycolor10, linewidth=1)

smaplot14 = input (true, title="MA610")
len14 = input.int(610, minval=1, title="ma Length")
out14 = exponential ? ta.ema(src, len14) : ta.sma(src, len14)
up14 = out14 > out14[1]
down14 = out14 < out14[1]
mycolor14 = up14 ? #3cfe12 : down14 ? #ff0202 : #008eff
plot(out14 and smaplot14 ? out14 :na , title="610", color=mycolor14, linewidth=1)

smaplot15 = input (true, title="MA987")
len15 = input.int(987, minval=1, title="ma Length")
out15 = exponential ? ta.ema(src, len15) : ta.sma(src, len15)
up15 = out15 > out15[1]
down15 = out15 < out15[1]
mycolor15 = up15 ? #3cfe12 : down15 ? #ff0202 : #008eff
plot(out15 and smaplot15 ? out15 :na , title="987", color=mycolor15, linewidth=1)

smaplot16 = input (true, title="MA1597")
len16 = input.int(1597, minval=1, title="ma Length")
out16 = exponential ? ta.ema(src, len16) : ta.sma(src, len16)
up16 = out16 > out16[1]
down16 = out16 < out16[1]
mycolor16 = up16 ? #3cfe12 : down16 ? #ff0202 : #008eff
plot(out16 and smaplot16 ? out16 :na , title="1597", color=mycolor16, linewidth=1)

smaplot17 = input (true, title="MA2584")
len17 = input.int(2584, minval=1, title="ma Length")
out17 = exponential ? ta.ema(src, len17) : ta.sma(src, len17)
up17 = out17 > out17[1]
down17 = out17 < out17[1]
mycolor17 = up17 ? #3cfe12 : down17 ? #ff0202 : #008eff
plot(out17 and smaplot17 ? out17 :na , title="2584", color=mycolor17, linewidth=1)

smaplot19 = input (true, title="MA4181")
len19 = input.int(4181, minval=1, title="ma Length")
out19 = exponential ? ta.ema(src, len19) : ta.sma(src, len19)
up19 = out19 > out19[1]
down19 = out19 < out19[1]
mycolor19 = up19 ? #3cfe12 : down19 ? #ff0202 : #008eff
plot(out19 and smaplot19 ? out19 :na , title="4181", color=mycolor19, linewidth=1)
//
string  GRP3 = "Visual MA Settings"
exponential5 = input(false, title="EMA or SMA", tooltip="EMA checked or SMA unchecked", group = GRP3)

smaplot50 = input (true, title="MA50")
len50 = input.int(50, minval=1, title="ma Length")
ma50 = exponential5 ? ta.ema(src, len50) : ta.sma(src, len50)
up50 = ma50 > ma50[1]
down50 = ma50 < ma50[1]
mycolor50 = up50 ? #3cfe12 : down50 ? #ff0202 : #008eff
plot(ma50 and smaplot50 ? ma50 :na , title="50", color=mycolor50, linewidth=1)

smaplot100 = input (true, title="MA100")
len100 = input.int(100, minval=1, title="ma Length")
ma100 = exponential5 ? ta.ema(src, len100) : ta.sma(src, len100)
up100 = ma100 > ma100[1]
down100 = ma100 < ma100[1]
mycolor100 = up100 ? #3cfe12 : down100 ? #ff0202 : #008eff
plot(ma100 and smaplot100 ? ma100 :na , title="100", color=mycolor100, linewidth=1)

smaplot150 = input (true, title="MA150")
len150 = input.int(150, minval=1, title="ma Length")
ma150 = exponential5 ? ta.ema(src, len150) : ta.sma(src, len150)
up150 = ma150 > ma150[1]
down150 = ma150 < ma150[1]
mycolor150 = up150 ? #3cfe12 : down150 ? #ff0202 : #008eff
plot(ma150 and smaplot150 ? ma150 :na , title="150", color=mycolor150, linewidth=1)

smaplot200 = input (true, title="MA200")
len200 = input.int(200, minval=1, title="ma Length")
ma200 = exponential5 ? ta.ema(src, len200) : ta.sma(src, len200)
up200 = ma200 > ma200[1]
down200 = ma200 < ma200[1]
mycolor200 = up200 ? #3cfe12 : down200 ? #ff0202 : #008eff
plot(ma200 and smaplot200 ? ma200 :na , title="200", color=mycolor200, linewidth=1)
//
if (ta.crossover(long1, long2))
	strategy.entry("maL", strategy.long, comment="maLong")
if (ta.crossunder(short1, short2))
	strategy.entry("maS", strategy.short, comment="maShort")
////

もっと