この戦略は,エントリーポイントを決定するために短期間の移動平均値と長期間の移動平均値の黄金十字に基づいて取引信号を生成し,出口ポジションにストップ損失ポイントを設定する.これは典型的なトレンドフォロー戦略である.明らかな上昇傾向を持つ市場に適しており,トレンドをフォローし,上昇勢いで利益を得ることができ,トレンドが逆転すると迅速に退出することができます.
この戦略は,主に短期および長期移動平均のクロスオーバーを使用して市場の傾向を決定します.論理は以下のとおりです.
3日間の単純な移動平均を短期間移動平均として計算します.
19日間の単純な移動平均 long_ma を長期移動平均として計算する.
short_ma が long_ma の上を横切ると,long 信号が生成されます.
価格がエントリー価格以上上昇すると * (1 + ストップ損失%),すべてのポジションを閉じる.
short_ma が long_ma の下を横切ると,ショート信号が生成されます.
戦略の運用期間を制限するために,特定の日付範囲内でバックテストします.
100日間の移動平均トレンド_maが上昇傾向を示している場合にのみ取引する.
この戦略は,移動平均の黄金十字を利用する.持続的な上昇傾向の間,ショート_マがロング_マを越えると生成されるロング・シグナルが機会を掴むことを可能にします.ショート_マがロング_マを下回るときのショート・シグナルがリスクを管理するのに役立ちます.
この戦略の利点は
移動平均のクロスオーバーに基づいた シンプルで理解しやすい論理です
トレンドを追及しリスクを管理する 明確なエントリー・アウトリースルール
トレンドが逆転するときに 利益を確保するために ストップ損失をします
誤った信号を避けるため,全体的なトレンドが上がったときにのみ取引します.
調整可能な移動平均期間,異なる市場に対応できる.
特定の期間におけるバックテストにより検証が可能になります.
この戦略のリスクは
パラメータ調整に敏感で 異なる設定がパフォーマンスに影響します
曲線は過去データに合わせた 異常では効果がない
価格格差を処理できず ストップロスを超えるリスクがあります
市場では 売れやすい
明らかにトレンドする市場でのみ機能する 横向的な市場ではダメだ
バックテスト期間選択が結果に影響を与える
戦略は以下の点で改善できる:
異なるパラメータセットをテストして最適な値を見つけます
意思決定を改善するためにMACDやボリンジャー帯などの他の指標を組み込みます
リスクをコントロールするために ダイナミックストップロスを使います
入口を最適化して 出口を論理化して
異なる市場条件で耐久性をテストする
パラメータ調整と信号生成のための機械学習を探求します
価格格差とストップ・ロスト・ウィップソーシナリオの処理を追加します
このシンプルで効果的な戦略は,移動平均のクロスを使って上昇傾向を捉え,ストップロスを通してリスクを管理する. 強いトレンド市場ではうまく機能するが,限界がある. 安定性を向上させるためにさらなる最適化とテストが必要である. 全体的に,明確な論理があり,理解し,実装しやすく,初心者が学ぶのに適している.
/*backtest start: 2023-10-01 00:00:00 end: 2023-10-31 00:00:00 period: 1h basePeriod: 15m 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/ // © Ta3MooChi //@version=5 strategy("전략", overlay=true,process_orders_on_close = true, pyramiding = 100) short_ma = ta.sma(close,input.int(3, "단기 이평", minval = 1)) long_ma = ta.sma(close, input.int(19,"장기 이평", minval = 1)) trend_ma = ta.sma(close, input.int(100," 추세 이평", minval = 20, group = "추세 이평")) up_trend = (trend_ma > trend_ma[1]) use_trend_ma = input.bool(true, title = "추세용 이평 사용", group = "추세 이평" ) inTrendMa = not use_trend_ma or up_trend useDateFilter = input.bool(true, title = "특정 기간 백테스트", group = "기간 백테스트") backtestStartDate = input(timestamp("1 Jan 2021"), title = "시작날짜", group = "기간 백테스트") backtestEndDate = input(timestamp("1 Jan 2022"), title = "종료날짜", group = "기간 백테스트") inTradeWindow = true longStopPerc = 1 + input.float(3, "최소수익률%", minval = 1)*0.01 longcondition = ta.crossover(short_ma, long_ma) shortcondition = ta.crossunder(short_ma, long_ma) if (longcondition) and inTradeWindow and inTrendMa strategy.entry("long", strategy.long) if (shortcondition) and (close > strategy.position_avg_price*longStopPerc) and inTradeWindow strategy.close_all() if not inTradeWindow and inTradeWindow[1] strategy.cancel_all() strategy.close_all(comment = "매매 종료") plot(short_ma,color = color.yellow) plot(long_ma,color = color.blue) plot(trend_ma,color = color.gray)