SMAイチモククロスオーバー戦略は,一般的な取引戦略である.この戦略は,移動平均の黄金クロスとデッドクロス原則を,イチモククラウドとSMAスムーズ移動平均と組み合わせて,比較的完全な取引システムを形成する.この戦略は自動的に株式ポジションを開閉することができます.
この戦略は,主にイチモク指標の変換線とベースラインの比較と,短期および長期SMA移動平均のクロスオーバーを基に株の購入と販売を判断する.
具体的には,このコードはイチモク指標の変換線,ベースライン,リードスパン1とリードスパン2を定義する.同時に,長期SMA移動平均値ma1と短期SMA移動平均値ma2が定義される.
購入を判断する際には,変換線がベースラインより低く,短期移動平均が長期移動平均より低く,つまり黄金十字が起こります.
売却を判断する際には,変換線がベースラインより高く,短期移動平均が長期移動平均より高く,つまり死角が起こります.
さらに,このコードは,前日より高い閉店価格,および傾斜を判断するために移動平均値の差と分割を使用して,いくつかの補助条件も定義しています.これは移動平均のクロスオーバーの勢いと方向を決定することができます.
この戦略は,複数の技術指標の利点を組み合わせ,以下の利点を持っています.
イチモク雲自体はトレンド判断を含んでおり,SMA移動平均値と組み合わせると強力なトレンド判断を形成することができます.
SMA移動平均値自体は価格の動向と勢いを決定することができます. 速いMAが遅いMAを横断すると取引ポイントが決定できます.
閉じる価格判断を追加することで,不必要なポジションの開閉を回避できます.
移動平均傾斜の計算は,移動平均交差点の動量についての判断を高め,誤った交差点をフィルタリングすることができます.
全体的にこの戦略は比較的正確なトレンド判断をしており,不要な取引を減らすことができ,最適化のための余地があります.
この戦略にはいくつかのリスクもあります:
イチモクとSMAの両方が遅れており,価格の変化を時間的に反映できない可能性があります.
複数の条件の組み合わせにより 複雑性とエラーの確率が増加します
この戦略は技術指標のみをベースにしており,主要なニュースの影響を判断することはできません.
ストップ・ロスの条件を設定していないため,損失が拡大するリスクがある.
この戦略は,統合などの特殊な市場条件を考慮していない.
間違ったパラメータ設定も 戦略のパフォーマンスに影響を与えます
この戦略は,次の側面で最適化できます.
ストップ・ロスの条件を設定して,損失が拡大すると自動的にストップ・ロスをします.
主要なニュースイベントに対する判断を高め その影響を避ける
取引範囲を拡大したりパラメータを調整したりなど,特殊な市場状況に対する判断を高めること.
最適なパラメータを見つけるためにパラメータの組み合わせをテストし最適化します
パラメータ最適化と市場判断のための機械学習アルゴリズムを導入する.
偽の突破を避けるために 動力指標を追加します
ボリュームの変化など もっと基本的な要素を組み合わせます
概要すると,このSMAイチモククロスオーバー戦略は,イチモクとSMA移動平均の優位性を統合して比較的完全な株式取引戦略を形成する.この戦略は,トレンドを決定する強力な能力を持ち,トレンド機会を効果的に把握することができます.しかし,遅れ,高い複雑性,ストップ損失の欠如などの問題もあります.これはこの戦略を最適化するのに大きな余地があります.ストップ損失を設定し,主要なニュースイベントを判断し,パラメータを最適化し,この戦略を継続的に改善し,安定した信頼性の高い定量的な取引戦略になることができます.
/*backtest start: 2023-09-15 00:00:00 end: 2023-10-15 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 // strategy("Ichimoku+SMAsmoothed", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills= true, calc_on_every_tick=true, pyramiding=0) // conversionPeriods = input(9, minval=1, title="Conversion Line Periods"), basePeriods = input(26, minval=1, title="Base Line Periods") laggingSpan2Periods = input(52, minval=1, title="Lagging Span 2 Periods"), displacement = input(26, minval=1, title="Displacement") SMA1=input(title="SMA LONG",defval=21) SMA2=input(title="SMA SHORT",defval=19) p=ohlc4[1] donchian(len) => avg(lowest(len), highest(len)) conversionLine = donchian(conversionPeriods) baseLine = donchian(basePeriods) leadLine1 = avg(conversionLine, baseLine) leadLine2 = donchian(laggingSpan2Periods) //plot(conversionLine, color=#0496ff, title="Conversion Line") //plot(baseLine, color=#991515, title="Base Line") //plot(close, offset = -displacement, color=#459915, title="Lagging Span") //p1 = plot(leadLine1, offset = displacement, color=green, // title="Lead 1") //p2 = plot(leadLine2, offset = displacement, color=red, // title="Lead 2") //fill(p1, p2, color = leadLine1 > leadLine2 ? green : red) ma1=sma(p, SMA1) ma2=sma(p, SMA2) p_a = ma1*2 p_b = ma1 p_c = p_a - p_b p_d = p_c/24 p_e = ma2*2 p_f = ma2 p_g = p_e - p_f p_h = p_g/24 closelong = ohlc4<ohlc4[SMA1] and ohlc4<ohlc4[1]// and leadLine1<leadLine2 and p_h<p_d if (closelong) strategy.close("Long") closeshort = ohlc4>ohlc4[SMA1] and ohlc4>ohlc4[1]// and leadLine1>leadLine2 and p_h>p_d if (closeshort) strategy.close("Short") longCondition = ohlc4>ohlc4[1] and leadLine1>leadLine2 and p_h>p_d if (longCondition) strategy.entry("Long",strategy.long) shortCondition = ohlc4<ohlc4[1] and leadLine1<leadLine2 and p_h<p_d if (shortCondition) strategy.entry("Short",strategy.short)