移動平均ロングとショートバランス取引戦略


作成日: 2023-11-13 17:59:42 最終変更日: 2023-11-13 18:00:09
コピー: 1 クリック数: 641
1
フォロー
1617
フォロワー

移動平均ロングとショートバランス取引戦略

概要

均線多空平衡取引戦略は,異なる周期の移動平均の golden と death の交差を利用して多空平衡取引を行う戦略である.この戦略は,K線表示色,背景色,形状マーカーなどの複数の視覚効果を組み合わせて,傾向の変化を観察するのに役立つ.この戦略は,移動均線理論に慣れている中級トレーダーに適している.

戦略原則

この戦略は,まず,ユーザが調整できる2つのパラメータを定義します.アクティブ平均周期len1とベース平均周期len2.アクティブ平均周期は,短期的なトレンドの変化を捉えるために短く,ベース平均周期は,短期的な市場のノイズをフィルターするために長くなります.ユーザは,5種類の異なる移動平均を自由に選択できます.

短期平均線上での長期平均線を横切るときに金叉信号を生じ,多項を開きます.短期平均線下での長期平均線を横切るときにデッドフォーク信号を生じ,空項を開きます.多項の平衡取引は,利益を得る機会を増やすものです.さらに,K線の色は,現在の多項のトレンド状況を示します.

形状マークは,金叉と死叉の位置を直観的に示す.背景の色は,トレンドの方向性を判断するのに役立ちます.この戦略は,同時に,多空平衡と多頭のみの2つの取引モードが選択できます.

戦略的優位性

  1. 平均線が多種多様な指標を組み合わせることで,取引シグナルがより信頼性が高くなります.
  2. 多空バランス取引,利益の拡大
  3. 異なる市場環境に対応するためにカスタマイズ可能な平均線型と周期長
  4. 視覚効果を組み合わせて,直観的な判断のトレンドの変化
  5. コード構造が明確で,理解し易く,二次開発

リスクと解決策

  1. 平均線が誤った信号を出すリスク

    • 異なる周期均線組み合わせを用いて,誤導信号を低減する
    • ストップ・ロズラインのような他のエクジット・エクジット条件を追加する
  2. 特定のサイクルが戦略に適したリスク

    • 異なる周期パラメータをテストし,最適な周期を見つける
    • 周期パラメータを動的に調整できるようにコードを最適化
  3. 多空取引は損失のリスクを高めます

    • ポジション管理を適切に調整する
    • 複数の取引のみを選択します.

最適化の方向

  1. 単一損失を抑えるため,ストップラインを増やす.
  2. 市場復帰の条件を追加する
  3. ポジション管理戦略の最適化
  4. 波動性指数などの新しい取引シグナルを探索する
  5. 動的最適化サイクルパラメータ
  6. 移動平均の種類を最適化する

要約する

均線多空平衡取引戦略は均線指標の優位性を統合し,多空平衡取引を実現する.この戦略は視覚的に効果が豊富で,市場動向を掌握しやすくする.パラメータはカスタマイズでき,適応力が強い.しかし,誤導信号とポジション管理の問題に注意する必要がある.この戦略は中高級トレーダーにカスタマイズ可能で最適化可能な参照フレームワークを提供する.

ストラテジーソースコード
/*backtest
start: 2023-10-13 00:00:00
end: 2023-11-12 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("MASelect Crossover Strat", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
av1 = input(title="Active MA", defval="EMA", options=["EMA", "SMA", "WMA", "DEMA", "VWMA"])
av2 = input(title="Base MA", defval="EMA", options=["EMA", "SMA", "WMA", "DEMA", "VWMA"])
len1 = input(20, "Active Length")
len2 = input(100, "Base Length")
src = input(close, "Source")
strat = input(defval="Long+Short", options=["Long+Short", "Long Only"])

ema1 = ema(src, len1)
ema2 = ema(src, len2)
sma1 = sma(src, len1)
sma2 = sma(src, len2)
wma1 = wma(src, len1)
wma2 = wma(src, len2)
e1 = ema(src, len1)
e2 = ema(e1, len1)
dema1 = 2 * e1 - e2
e3 = ema(src, len2)
e4 = ema(e3, len2)
dema2 = 2 * e3 - e4
vwma1 = vwma(src, len1)
vwma2 = vwma(src, len2)

ma1 = av1 == "EMA"?ema1:av1=="SMA"?sma1:av1=="WMA"?wma1:av1=="DEMA"?dema1:av1=="VWMA"?vwma1:na
ma2 = av2 == "EMA"?ema2:av2=="SMA"?sma2:av2=="WMA"?wma2:av2=="DEMA"?dema2:av2=="VWMA"?vwma2:na

co = crossover(ma1, ma2)
cu = crossunder(ma1, ma2)
barcolor(co?lime:cu?yellow:na)
col = ma1 >= ma2?lime:red
bgcolor(co or cu?yellow:col)
plotshape(co, style=shape.triangleup, location=location.belowbar)
plotshape(cu, style=shape.triangledown)
plot(ma1, color=col, linewidth=3), plot(ma2, style=circles, linewidth=1)

strategy.entry("Buy", strategy.long, when=co)
if strat=="Long+Short"
    strategy.entry("Sell", strategy.short, when=cu)
else
    strategy.close("Buy", when=cu)