SMAに基づくロングショート戦略


作成日: 2023-11-22 15:42:29 最終変更日: 2023-11-22 15:42:29
コピー: 2 クリック数: 596
1
フォロー
1617
フォロワー

SMAに基づくロングショート戦略

概要

この戦略は,SMA指標に基づいて簡単な多空策略を構成している.価格が20サイクル高のSMAを突破すると多空し,価格が20サイクル低のSMAを突破すると空空する.同時に,止損退出機構を設定している.

戦略原則

この策略は,20周期の最高高値と最低低値のSMAを空白の判断指標として使用します.価格が最高SMAを突破すると,現在上昇傾向にあると考えられ,空白になります.価格が最低SMAを突破すると,現在下降傾向にあると考えられ,空白になります.

具体的には,戦略は20周期highest高値とlowest低値のSMAを計算し,指標ラインを描きます. そして,次の取引論理を設定します.

多頭入場:閉盤価格で最高SMAを突破する 多頭出場:閉盤価格が0.99倍HIGHEST SMAを下回ったとき

空頭入場:閉盤価格を下回る最低SMA
空頭出場: 閉盤価格上での1.01倍LOWESTSMA

傾向に合わせて動作する多空の戦略が作られるのです.

優位分析

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

  1. SMA指数を使ってトレンドの方向を判断する簡単な実用
    1. HIGHEST SMAとLOWEST SMAは,レジスタンスラインを支える指標として重要な役割を果たします.
    2. 損失を最小限に抑えるための合理的な設計
    3. 多様な時間帯と品種で利用可能

リスク分析

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

  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()