トートルブレークアウト EMAクロス戦略

作者: リン・ハーンチャオチャン開催日:2023年11月7日 15:40:08
タグ:

img

概要

この戦略は,異なる期間の2つのEMAラインを使用して,入口と出口信号として交差点を通じてトレンド逆転を識別します.この戦略はシンプルで実行が簡単です.

戦略の論理

この戦略は,短期間で10の長さ,長期のトレンドで20の長さを持つ2つのEMA線をta.emaを使用して計算する.入口と出口点を決定するためにta.crossoverとta.crossunderを使用してEMAクロスオーバーとクロスアンダーを識別する.短期間EMAが長いEMAを横切ると,それは長い.短期間EMAが長いEMAの下を横切ると,それは短い.この方法でEMAクロスオーバーはトレンドのターニングポイントを捕捉するために使用されます.

この戦略は,繰り返し信号を避けるため,最後のクロスオーバーの時間を記録する変数lastCrossTimeも使用する.各有効なクロスオーバーで,すべての現在のポジションを最初に閉じて,クロスオーバーの方向に新しいポジションを開く.ポジションを開いた後,利益とストップロスは終了するように設定される.

利点

  1. 戦略の論理は シンプルで明快で 分かりやすく実行できます

  2. EMAのクロスオーバーを使用してトレンド逆転点を特定することは,一般的に使用される効果的な技術指標戦略です.

  3. 異なる期間の EMA を採用することで 短期間の動きに対する感受性が向上し,同時に大きなトレンドを把握できます

  4. 利益とストップロスは,それぞれの取引のリスクと報酬を制御するのに役立ちます.

  5. lastCrossTime変数は,重複信号をフィルターし,不必要な取引を回避します.

リスク

  1. EMAのクロスオーバーは 偽信号を発生させることもあり

  2. 固定 TP と SL は,変化する市場状況に適応できない可能性があります.動的レベルを使用する必要があります.

  3. EMAクロスオーバーのみを頼りにするシステムは,様々な市場で損失を被る可能性があります.

  4. スプレッドなどの取引コストは考慮されません. これは実際の業績に影響します.

  5. この戦略は市場を走行するよりも 走行する方が上手です

TP/SLを最適化したり,フィルターを追加したり,他の指標を組み合わせたりなどにより改善が可能です. 厳格なリスク管理と大きなシングルトレード損失を回避することは,ライブトレードにとって不可欠です.

強化

  1. EMA期間をテストして最適化して より良い組み合わせを見つけます

  2. KDJ,MACDなどの指標を追加して信号の質を向上させ 低迷を回避します

  3. トレンドに沿ったストップなど ダイナミックな利益とストップ損失を使用します

  4. 信号の確認のために 取引量を考慮してください

  5. 信号を強化するためにブレイクアウトのような価格行動パターンを組み込む.

  6. スプレッドなどの取引コストを考慮し,それに応じて TP/SL レベルを最適化します.

結論

この戦略は,EMAクロスオーバーを使用して,単純で直接的な方法でトレンド逆転を特定する. TP/SLはリスクと報酬を制御するために使用される.実装は簡単だが,EMAクロスオーバーにはウィップソーリスクがある.さらに最適化はパラメータを調節し,フィルターを追加し,他の指標を組み合わせて強度を向上させることができる. 市場範囲よりもトレンドでより良いパフォーマンスを発揮する. 厳格なリスク管理と最適な TP/SLサイジングはライブ取引にとって重要です. 全体的に,基本トレンドフォローシステムとして機能し,アルゴリズム取引教育のための良い出発点です.


/*backtest
start: 2023-10-30 00:00:00
end: 2023-11-06 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('XXXquang', overlay=true)

// Sử dụng hàm input.int() và input.float() để tạo các trường nhập liệu với giới hạn giá trị
length1 = input.int(10, title="Length EMA Short", minval=1)
length2 = input.int(20, title="Length EMA Long", minval=1)
lotSize = input.int(1, title="Lot Size", minval=1)

takeProfitLevel = input.int(600, title="Take Profit Level", minval=1)
stopLossLevel = input.int(200, title="Stop Loss Level", minval=1)

ema1 = ta.ema(close, length1)
ema2 = ta.ema(close, length2)

var float lastCrossTime = na

if ta.crossover(ema1, ema2)
    if na(lastCrossTime)
        strategy.close_all()
    strategy.entry('Buy Order', strategy.long, qty=lotSize)
    strategy.exit('Exit Buy', 'Buy Order', profit=takeProfitLevel / syminfo.pointvalue, loss=stopLossLevel / syminfo.pointvalue)
    lastCrossTime := timenow

if ta.crossunder(ema1, ema2)
    if na(lastCrossTime)
        strategy.close_all()
    strategy.entry('Sell Order', strategy.short, qty=lotSize)
    strategy.exit('Exit Sell', 'Sell Order', profit=takeProfitLevel / syminfo.pointvalue, loss=stopLossLevel / syminfo.pointvalue)
    lastCrossTime := timenow

plot(ema1, title='EMA Short', color=color.new(color.blue, 0), linewidth=2)
plot(ema2, title='EMA Long', color=color.new(color.red, 0), linewidth=2)


もっと