この戦略は,異なる期間の2つのEMAラインを使用して,入口と出口信号として交差点を通じてトレンド逆転を識別します.この戦略はシンプルで実行が簡単です.
この戦略は,短期間で10の長さ,長期のトレンドで20の長さを持つ2つのEMA線をta.emaを使用して計算する.入口と出口点を決定するためにta.crossoverとta.crossunderを使用してEMAクロスオーバーとクロスアンダーを識別する.短期間EMAが長いEMAを横切ると,それは長い.短期間EMAが長いEMAの下を横切ると,それは短い.この方法でEMAクロスオーバーはトレンドのターニングポイントを捕捉するために使用されます.
この戦略は,繰り返し信号を避けるため,最後のクロスオーバーの時間を記録する変数lastCrossTimeも使用する.各有効なクロスオーバーで,すべての現在のポジションを最初に閉じて,クロスオーバーの方向に新しいポジションを開く.ポジションを開いた後,利益とストップロスは終了するように設定される.
戦略の論理は シンプルで明快で 分かりやすく実行できます
EMAのクロスオーバーを使用してトレンド逆転点を特定することは,一般的に使用される効果的な技術指標戦略です.
異なる期間の EMA を採用することで 短期間の動きに対する感受性が向上し,同時に大きなトレンドを把握できます
利益とストップロスは,それぞれの取引のリスクと報酬を制御するのに役立ちます.
lastCrossTime変数は,重複信号をフィルターし,不必要な取引を回避します.
EMAのクロスオーバーは 偽信号を発生させることもあり
固定 TP と SL は,変化する市場状況に適応できない可能性があります.動的レベルを使用する必要があります.
EMAクロスオーバーのみを頼りにするシステムは,様々な市場で損失を被る可能性があります.
スプレッドなどの取引コストは考慮されません. これは実際の業績に影響します.
この戦略は市場を走行するよりも 走行する方が上手です
TP/SLを最適化したり,フィルターを追加したり,他の指標を組み合わせたりなどにより改善が可能です. 厳格なリスク管理と大きなシングルトレード損失を回避することは,ライブトレードにとって不可欠です.
EMA期間をテストして最適化して より良い組み合わせを見つけます
KDJ,MACDなどの指標を追加して信号の質を向上させ 低迷を回避します
トレンドに沿ったストップなど ダイナミックな利益とストップ損失を使用します
信号の確認のために 取引量を考慮してください
信号を強化するためにブレイクアウトのような価格行動パターンを組み込む.
スプレッドなどの取引コストを考慮し,それに応じて 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)