SMAに基づく二重推力戦略

作者: リン・ハーンチャオチャン, 日時: 2023-11-22 15:42:29
タグ:

img

概要

この戦略は,SMA指標に基づく単純なダブルスルーストレーテージを構築する.価格は20期間の最高SMAを超えるとロングになり,価格は20期間の最低SMAを下回るとショートになる.ストップ損失出口も設定される.

戦略の論理

この戦略は,取引の方向性を決定するために,最高高価格と最低低価格の20期SMAを使用します.価格が最高SMAを上回ると,上向きトレンドとみなされ,ロングになります.価格が最低SMAを下回ると,下向きトレンドとみなされ,ショートになります.

具体的には,この戦略はまず,最高高値と最低低値の20期SMAを計算し,インディケーターラインをプロットします.次に以下の取引論理を設定します:

ロングエントリー: 閉じる価格が最高SMAを上回る
ロング エクシート: 閉じる価格が0.99*最高SMAを下回る

短入口: 閉じる価格が最低SMAを下回る
ショートアウト: 閉じる価格が1.01 * 最低のSMAを上回る

双方向推力戦略が形成されるのです

利点分析

この戦略には以下の利点があります.

  1. トレンド方向を決定するためにSMAを使用することは単純で実用的です
  2. 最も高いSMAと最も低いSMAはサポート/レジスタンスラインとして機能します.
  3. 莫大な損失から最大限に保護するための合理的なストップ損失設計
  4. 適性があり,異なる製品と時間枠で使用できます

リスク分析

この戦略にはいくつかのリスクもあります:

  1. SMAは遅延効果があり,トレンドターニングポイントを逃す可能性があります.
  2. 市場での突然の出来事から保護されない
  3. 取引コストへの影響は考慮されていない

これらのリスクは,他の指標を組み合わせたり,ストップ損失を設定したり,パラメータを調整したりなどで制御され,軽減することができます.

改善 の 方向

この戦略は,次の側面でも改善できます.

  1. MACD,KDJなどの他の指標を組み合わせてトレンドを決定します
  2. 停止,価格制限などの突然の出来事に対する保護を追加します.
  3. SMA期間を最適化して,最適なパラメータの組み合わせを見つけます
  4. 異なる製品とタイムフレームのための最適なパラメータを見つけ
  5. 取引コストの影響を推定し,最適なストップ・ロスを設定し,利益を取ること

結論

この戦略の全体的な論理は明確で,実行が容易である.SMAを使用してトレンド方向を決定し,合理的なエントリー/エグジットルールを設定することで,良い結果が得られる.さらなる最適化のための余地があり,他の技術と組み合わせることで,長期的に追跡する価値のある有望な戦略になり得る.


/*backtest
start: 2023-11-14 00:00:00
end: 2023-11-21 00:00:00
period: 10m
basePeriod: 1m
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/
// © AlanAntony

//@version=4


strategy("ma 20 high-low",overlay=true)

//compute the indicators

smaH = sma(high, 20)
smaL = sma(low, 20)


//plot the indicators
plot(smaH,title="smaHigh", color=color.green, linewidth=2)


plot(smaL,title="smaLow", color=color.red, linewidth=2)


//trading logic
enterlong = crossover(close,smaH) //positive ema crossover
exitlong = crossunder(close,0.99*smaH)  //exiting long


entershort = crossunder(close,smaL) //negative EMA Crossover
exitshort = crossover(close,1.01*smaH) //exiting shorts


notintrade = strategy.position_size<=0
bgcolor(notintrade ? color.red:color.green)

//execution logic

start = timestamp(2015,6,1,0,0)
//end = timestamp(2022,6,1,0,0)

if time >= start
    strategy.entry( "long", strategy.long,1, when = enterlong)
    strategy.entry( "short", strategy.short,1, when = entershort) 
    
    strategy.close("long", when = exitlong)
    strategy.close("short", when = exitshort)

//if time >= end
   // strategy.close_all()

もっと