双EMA金交差戦略は,典型的なトレンド追跡戦略である.この戦略は,異なる周期の2つの平均線EMAを用い,その交差形状に応じて買取と売却の信号を生成する.短周期EMAが長周期EMAを横切ると買取信号を生成し,短周期EMAが長周期EMAを横切ると売り出信号を生成する.この戦略は,中間の長線トレンドを追跡し,トレンド開始段階で取引機会を適時に捕捉することができる.
この戦略は主に以下の部分で構成されています.
速行のEMAと遅行のEMAの長さを設定する.ここで速行のEMAは12で,遅行のEMAは26である.
計算した高速EMAと遅速EMA.高速EMA反応は速く,遅速EMA反応は安定している.
EMAの交差を判断し,取引信号を生成する. 快線 EMAがスローライン EMAを突破したとき,買い信号を生成する. 快線 EMAがスローライン EMAを突破したとき,売り信号を生成する.
シグナル入場により............
ストップ・デストポイントを設定します. 価格が落ちる前に,価格が落ちる前に,一定割合でストップ・デストポイントを設定します.
シグナル出力による. 快線EMAの下のEMAが遅線EMAを通過すると多注文を平衡する. 快線EMA上のEMAが遅線EMAを通過すると空注文を平衡する.
この戦略は単純で,両線EMAの交差によってトレンドの方向と強さを判断し,トレンドを効果的に追跡することができる.高速線EMAは短期間の価格変動に敏感で,遅い線EMAは長期間のトレンドにより安定的に反応する.両線EMAの交差は比較的古典的なトレンド変化の決定方法である.
この戦略には以下のような利点があります.
概念はシンプルで,理解し,実現しやすい.EMAと交差は,有効な技術指標と信号として認識されている.
平均線と長線のトレンドを効果的に追跡し,トレンド機会を迅速に把握します.
双 EMA 設定により,短期間の市場騒音の妨害を回避できます.
明確な入場規則,出場規則,止損規則がある場合,デッド・ハッチ・ヘビーポジションは起こらない.
パラメータの調整は簡単で,初心者の学習に適しています.
復習結果は良好で,実戦価値があります. 独立して使用したり,他の戦略の組み合わせで使用することもできます.
この戦略にはいくつかのリスクもあります:
双EMA交差は誤差信号と頻繁交差を生む易さである.パラメータを適切に調整し,無効信号をフィルタリングする.
振動区間やトレンドリバースにうまく対応できない.他の指標の補足が必要である.
双EMA戦略は,上下を容易に見つけ,ポジション規模を適切に管理するか,または停止停止を設定すべきである.
復習曲線には一定の過適性がある可能性がある. 安定性を評価するためにパラメータ敏感性試験を行うべきである.
間に合わない停止は,大きな損失を引き起こす可能性があります.合理的な停止位置を設定する必要があります.
取引費用は,実際の利益に影響を与える可能性があります. 異なる種類の手続費の要因は考慮されるべきです.
この戦略は,以下のいくつかの点で最適化することができます:
EMA周期パラメータを最適化して最適なパラメータ組み合わせを見つけます.
ADX,CCIなどの指標にトレンドフィルターを追加し,不確実なトレンドの下での誤った取引を避ける.
取引量やエネルギー潮などの量エネルギー指標を増加させることで,真の取引推進が確保される.
市場変動に応じて停止位置を自動的に調整するダイナミックストップメカニズムを設定します.
関連品種と組み合わせて,関連品種を利用してリスク調整を行う.
機械学習アルゴリズムを追加し,AIを使用してパラメータ最適化,特徴工学,シグナルフィルタリングなどを行う.
取引コストを考慮し,ストップ損失点とポジション規模を調整し,取引頻度を減らす.
異なる品種特性のデザインパラメータに対して戦略を適応させる.
安定性を高めるため,他の戦略と組み合わせた複合戦略の枠組みを設計する.
これらの最適化によって,戦略はより完璧で安定し,実際の取引でより持続的で安定した利益を得ることができます.
この戦略は,双EMAを交差して取引信号を生成し,中長線傾向を効果的に追跡することができる.この戦略の利点は,使いやすさと,回測効果が良好で,初心者の使用に適している.しかし,いくつかのリスクも存在し,注意が必要である.パラメータの最適化,補助技術指標の追加,動的停止損失の設定,取引コストの考慮などの措置によって戦略を完善することができる.この戦略は,独立して使用することも,他の戦略と組み合わせることも可能で,非常に便利である.
/*backtest start: 2022-10-23 00:00:00 end: 2023-10-29 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy(title = "EMA Cross Strategy", shorttitle = "EMA Cross",calc_on_order_fills=true,calc_on_every_tick =true, initial_capital=21000,commission_value=.25,overlay = true,default_qty_type = strategy.percent_of_equity, default_qty_value = 100) StartYear = input(2018, "Backtest Start Year") StartMonth = input(1, "Backtest Start Month") StartDay = input(1, "Backtest Start Day") UseStopLoss = input(true,"UseStopLoss") window() => time >= timestamp(StartYear, StartMonth, StartDay,00,00) ? true : false stopLoss = input(20, title = "Stop loss percentage(0.1%)") maFastSource = input(defval = open, title = "Fast MA Source") maFastLength = input(defval = 12, title = "Fast MA Period", minval = 1) // long ma maSlowSource = input(defval = open, title = "Slow MA Source") maSlowLength = input(defval = 26, title = "Slow MA Period", minval = 1) maFast = ema(maFastSource, maFastLength) maSlow = ema(maSlowSource, maSlowLength) fast = plot(maFast, title = "Fast MA", color = #7a8598, linewidth = 2, style = line, transp = 50) slow = plot(maSlow, title = "Slow MA", color = #e08937, linewidth = 2, style = line, transp = 50) longEMA = crossover(maFast, maSlow) exitLong = crossunder(maFast, maSlow) shortEMA = crossover(maSlow, maFast) exitShort = crossover(maFast, maSlow) if (longEMA) strategy.entry("LongId", strategy.long, when=window()) if (shortEMA) strategy.entry("ShortId", strategy.short, when=window()) if (UseStopLoss) strategy.exit("StopLoss", "LongId", loss = close * stopLoss / 1000 / syminfo.mintick) strategy.exit("StopLoss", "ShortId", loss = close * stopLoss / 1000 / syminfo.mintick)