移動平均のクロスオーバー取引戦略

作者: リン・ハーンチャオチャン, 日付: 2023-11-27 17:25:36
タグ:

img

概要

移動平均クロスオーバー取引戦略は,短期間の移動平均値と長期間の移動平均値が交差するときに買い売り信号を生成する.これは技術分析に基づく取引戦略に属する.この戦略はシンプルで,資金効率が高く,引き下げが小さく,中長期取引に適している.

戦略の論理

この戦略は20期と50期指数関数移動平均 (EMA) を計算する.20期 EMAが50期 EMAを超えるとロングポジションを起動する.20期 EMAが50期 EMAを下回るとショートポジションを起動する.

EMAは最近のデータに重みを付けています.

EMA今日 = (今日の価格 * k) + EMA昨日 * (1-k)

k = 2/(期間の数 + 1)

短期EMAが長期EMAを横切ると,上昇傾向の価格がLONGに移動することを示します.低値に突入すると,下落傾向の価格がSHORTに逆転することを示します.

利点

この戦略の利点は:

  1. シンプルな論理,理解し実行しやすい
  2. 必要な資本が少なく,引き上げが少なく
  3. 異なる市場のための柔軟なパラメータ調整
  4. スカルピングまたはトレンド取引のためのすべてのツールに適用されます.

リスク と 改善

リスクには以下が含まれます.

  1. 価格変動の際に頻繁に取引信号を フィルターで表示する
  2. ストップ・ロスは 罠にはまらないようにする
  3. パラメータ最適化には もっと歴史的なデータが必要です

改善点:

  1. 偽信号を減らすためにボリンジャー帯のようなフィルターを追加します
  2. ストップ・ロスト/テイク・プロフィットを追加して,罠にはまらないようにする
  3. 異なる機器のための最適なパラメータセットを見つける
  4. 音量と組み合わせて信号を確認する

結論

移動平均クロスオーバー戦略は,市場によって証明されたシンプルで効果的な技術戦略である.パラメータ調整,フィルター追加などによってリスク制御と強度に関するさらなる改善を達成することができる.それは定量取引の基本的な構成要素として機能する.


/*backtest
start: 2022-11-20 00:00:00
end: 2023-11-26 00:00:00
period: 1d
basePeriod: 1h
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/
// © brandlabng

//@version=5
//study(title="Holly Grail", overlay = true)
strategy('HG|E15m', overlay=true)
src = input(close, title='Source')

price = request.security(syminfo.tickerid, timeframe.period, src)
ma1 = input(20, title='1st MA Length')
type1 = input.string('EMA', '1st MA Type', options=['EMA'])

ma2 = input(50, title='2nd MA Length')
type2 = input.string('EMA', '2nd MA Type', options=['EMA'])

price1 = if type1 == 'EMA'
    ta.ema(price, ma1)

price2 = if type2 == 'EMA'
    ta.ema(price, ma2)


//plot(series=price, style=line,  title="Price", color=black, linewidth=1, transp=0)
plot(series=price1, style=plot.style_line, title='1st MA', color=color.new(#219ff3, 0), linewidth=2)
plot(series=price2, style=plot.style_line, title='2nd MA', color=color.new(color.purple, 0), linewidth=2)


longCondition = ta.crossover(price1, price2)
if longCondition
    strategy.entry('Long', strategy.long)

shortCondition = ta.crossunder(price1, price2)
if shortCondition
    strategy.entry('Short', strategy.short)

もっと