移動平均のクロスオーバー戦略に続く傾向

作者: リン・ハーンチャオチャン,日付: 2023年11月1日 17:18:13
タグ:

img

概要

この戦略は,トレンドの識別と追跡を支援するために,移動平均の黄金十字と死亡十字の原則を組み合わせて利用する.短期移動平均が長期移動平均を超えると長引く.短期移動平均が長期移動平均を下回ると短引く.これは典型的なトレンドフォロー戦略である.

戦略の論理

戦略は以下の原則に基づいています.

  1. 最新の価格変動をより良く反映し,ブレイクに迅速に対応するために,SMAの代わりに EMAを使用します.

  2. ダブル移動平均クロスオーバーシステム:短期EMAが長期EMAより上を突破すると,長期EMAより下を突破すると,短期EMAが短入をシグナルします.これはトレンド逆転を決定するために黄金十字と死亡十字の原則を使用します.

  3. RSIインジケーターは,過剰購入/過剰売却の条件をシグナルすることによって,偽のブレイクアウトをフィルタリングするのに役立ちます.

  4. 複数の移動平均値が並べられています. 短期信号の55期 EMA,中期トレンドの100期 EMA,長期トレンドフィルタリングの200期 EMA.

  5. リスクをコントロールするために合理的なストップ・ロストと収益設定を行う.

主な取引論理は:

  1. 長期間の EMAが 100 期間の EMAを超え,12 期間の EMAが 200 期間の EMAを超えると,長期間の EMAが 55 期間の EMAを超え,12 期間の EMAが 200 期間の EMAを超えると,長期間の EMAが 100 期間の EMAを超えると,長期間の EMAが 100 期間の EMAを超えると,長期間の EMAが 100 期間の EMAを超え,12 期間の EMAが 200 期間の EMAを超えると,長期間の EMAが 100 期間の EMAを超えると,長期間の EMAが 100 期間の EMAを超えると,長期間の EMAが 100 期間の EMAを超えると,長期間の EMAが 100 期間の EMAを超えると,長期間の EMA が 100 期間の EMAを超え,長期間の EMAが 100 期間の EMAを超えると,長期間の EMAが 100 期間の EMAが 100 期間の EMAを超え,長期間の EMAが 100 期間の EMAを超え,長期間の EMAが 100 期間の EMA

  2. 100期間のEMAが200期間のEMAを下回るときにショートに入ります.

  3. ストップ・ロスを設定し 収益を最適化するために 入力後に利益を取ります

  4. RSIが過買い/過売りを示したときに,リバースリスクを避けるために,長/短ポジションを閉じる.

  5. 複数の移動平均期間の組み合わせは,トレンド追跡と逆転の確認の両方を説明し,主要なトレンドを追跡しながら長期的 konsolidiation に囚われないようにします.

利点

この戦略の主な利点は以下の通りです.

  1. 簡単な論理で 移動平均のクロスオーバーに基づいています 分かりやすく実行できます

  2. 価格変化やトレンド逆転に対して EMA を使って迅速な反応をします

  3. 複数の移動平均期間の割合は,トレンド追跡と逆転の識別の両方に対応します.

  4. RSIは偽のブレイクをフィルタリングし 信号の精度を高めます

  5. デフォルトのストップ・ロスト/テイク・プロフィートパラメータは,取引リスクを効果的に制御します.

  6. 移動平均期間の調整,ストップ損失/収益率などにより高度に調整できます

リスク

この戦略の主なリスクは,

  1. 波動的な市場では 圧倒される傾向があり 過剰な不活性信号を生み出します

  2. デフォルトパラメータはすべての製品やタイムフレームに適合しない可能性があり,最適化が必要です.

  3. 純粋に技術的な信号を駆動し 根本的な変化や 出来事のリスクに敏感です

  4. インデックスが上がるが 市場幅が異なれば 業績が低下する可能性があります

  5. 利益が早すぎるリスクがあり 傾向の動きをほとんど見逃します

これらのリスクに対処するために,次の最適化を行うことができます:

  1. 音量などのフィルターを追加して 偽のブレイクを避ける

  2. 各製品に最適なパラメータを見つけるためのバックテストです

  3. ストップ・ロストと利益の引き上げを厳しくし 市場を幅広くするリスクを制限する.

  4. 重要な出来事の前に信号を避けるために 基本的なフィルターを組み込む

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

戦略は以下の側面で最適化できます.

  1. 移動平均期を最適化して,機械学習などにより 最適の短期,中期,長期間の組み合わせを見つけます

  2. テスト 閉じる価格と 典型的な価格の性能

  3. 音量フィルターを追加して,音量バーのみの信号を受け取る.

  4. ストップ・ロスト/テイク・プロフィートの比率を最適化して 精度を上げます

  5. ストキャスティックス,MACD,ボリンジャーバンドなどの指標を組み合わせて 性能を向上させるのです

  6. 耐久性に関する異なる製品,時間枠,市場条件のバックテスト

  7. マシン学習を多次元パラメータ最適化に活用する

結論

これは,単純な移動平均クロスオーバー論理に基づいた戦略に従うトレンドを理解しやすいものです. 容易な実装,信頼性,高いカスタマイズ可能性などの利点があります. しかし,バックテスト結果に基づいてパラメータとモジュールの継続的な最適化が必要です. 戦略をより堅牢で知的なものにするために. 基本的な研究と技術分析を組み合わせることで,その完全性と信頼性をさらに向上させることができます.


/*backtest
start: 2023-10-24 00:00:00
end: 2023-10-31 00:00:00
period: 15m
basePeriod: 5m
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/
// © pernath

//@version=5
strategy("TREND_CATCHER", overlay=true, commission_value=0.05, commission_type=strategy.commission.percent, initial_capital=1000)

//#####variables##############
profit_short=input(title='profit_short', defval=27)
stop_short=input(title='stop_short', defval=2)

stop_long=input(title='stop_long', defval=3)
profit_long=input(title='profit_long', defval=35)


media_1=input(title='media_1', defval=55)
media_2=input(title='media_2', defval=100)
resta_medias=input(title='resta_medias', defval=0)
resta_medias2=input(title='resta_medias2', defval=0)

RSI_periodos=input(title='RSI_periodos', defval=42)
//###############VARIABLES###################




//#####Alert#####
id_bot = ""
email_token = ""
long_open =""
long_close =""
short_open =""
short_close =""
//#  {{strategy.order.alert_message}}


//#############################
//#############################

//###############EMA##############/
//plot(ta.ema(close, 1), title='ema 5', color=color.white)
plot(ta.ema(close, 12), title='ema 12', color=color.white)
plot(ta.ema(close, 25), title='ema 25', color=color.white)
plot(ta.ema(close, 30), title='ema 30', color=color.white, linewidth=1)
plot(ta.ema(close, 40), title='ema 40', color=color.white, linewidth=1)
plot(ta.ema(close, 55), title='ema 55', color=color.orange, linewidth=1)
plot(ta.ema(close, 100), title='ema 100', color=color.red, linewidth=1)
plot(ta.ema(close, 200), title='ema 200', color=color.white, linewidth=3)

//#############################/





//######VISUAL#############
EMA50 = ta.ema(close, 55)
EMA100 = ta.ema(close, 100)


estado_medias=EMA50-EMA100




a = plot(EMA50, title="EMA(50)", color=color.orange, linewidth=1 ) 
b = plot(EMA100, title="EMA(100)", color=color.red, linewidth=1 )


var color col = na
col := estado_medias>resta_medias ? color.green : color.red
fill(a,b,color=col,transp=40)


//######VISUAL#############





Go_Short=(ta.crossunder(ta.ema(close,100),ta.ema(close,200)))
Go_Long=((ta.crossover(ta.ema(close,55),ta.ema(close,100))and(ta.ema(close,12)>ta.ema(close,200))))


strategy.close("enter long", (Go_Short),alert_message=long_open)

cancelar_short=((ta.crossunder(ta.ema(close,25),ta.ema(close,6))))



if Go_Short
    strategy.entry("enter short", strategy.short,1, alert_message=short_open) 
  
strategy.exit("cerrar short", "enter short", 1, profit=close*profit_short/100/syminfo.mintick, loss=close*stop_short/100/syminfo.mintick, alert_message=short_close)




strategy.close("enter short", (Go_Long),alert_message=short_close)
cancelar=((ta.crossunder(ta.ema(close,12),ta.ema(close,30))))



if Go_Long
    strategy.entry("enter long", strategy.long,1,alert_message=long_open)

strategy.exit("cerrar long", "enter long", 1, profit=close*profit_long/100/syminfo.mintick, loss=close*stop_long/100/syminfo.mintick, alert_message=long_close)




strategy.close("enter short", (cancelar_short),alert_message=short_close)

strategy.close("enter long", (cancelar),alert_message=long_close)


//posiciones abiertas
bgcolor((strategy.position_size > 0 or strategy.position_size < 0) ? color.blue : na, transp=70)









もっと