移動平均のクロスオーバー中点戦略

作者: リン・ハーンチャオチャン, 日付: 2023年12月13日 17:38:23
タグ:

img

概要

移動平均クロスオーバーミッドポイント戦略は,トレンドフォローする戦略である. 移動平均線とミッドポイント指標のクロスオーバーポイントと移動平均線を組み合わせ,価格がクロスオーバーポイントを突破すると取引信号を生成する.

戦略の論理

この戦略の核心指標はミッドポイント指標である.ミッドポイント指標は,主要なサポートとレジスタンスレベルを特定するために,一定の期間の最高値と最低価格の平均値を採ります.

さらに,平らな価格データに移動平均を導入し,トレンド方向を決定します.

価格が中間点と移動平均のクロスオーバーポイントを超えると買い信号が生成され,価格がクロスオーバーポイントを下回ると売り信号が生成されます.

この戦略の論理によれば,中間点と移動平均のクロスオーバーエリアのブレイクを捕まえることで,トレンドをよく追いつき,引き下げ時に逆転取引を行うことができます.

利点分析

この戦略は,中点指標と移動平均の利点を組み合わせ,以下の利点を有します.

  1. 中点インジケーターは主要なサポート/レジスタンスレベルを正確に位置付け,移動平均値はトレンド方向を決定します.この組み合わせは信頼性を向上させます.

  2. クロスオーバーの状況で逆転を判断すると 誤った突破の可能性が減ります

  3. 双線クロスオーバーを採用することで,単一の指標による誤解を防ぐことができます.

  4. 戦略のアイデアはシンプルで明快で 分かりやすく実装され アルゴリズム取引に適しています

リスク分析

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

  1. 市場が急激に波動するときに 中間値と移動平均値が失敗する可能性があります

  2. クロスオーバーが起こると 引き戻しプレッシャーがあり ストップ・ロスのリスクが生じます

  3. この戦略は中期取引に重点を置くが,長期取引には適用されない.

対応するリスク管理測定には,次のものがあります.

  1. 移動平均のパラメータを最適化して 流暢性を高める

  2. ストップ・ロスの範囲を適切に拡大して 引き戻し圧力に対応します

  3. 利得とストップ損失を 適時に引き出すため 保持期間を短縮する

オプティマイゼーションの方向性

この戦略は,次の側面でも最適化できます.

  1. 最適なパラメータの組み合わせを見つけるために,ミッドポイント指標と移動平均の期間を最適化します.

  2. MACDやRSIなどのインディケーターを フィルタリングに追加して 信号の質を向上させます

  3. 取引量の確認を追加して,低取引量の偽ブレイクを避ける.

  4. 市場変動に基づいてストップと収益のレベルを調整するための変動指標を組み込む.

  5. 異なる市場や製品での適用性をテストする.

結論

移動平均クロスオーバーミッドポイント戦略は,ミッドポイント指標と移動平均の利点を統合し,主要なサポート/レジスタンスレベルのブレイクを判断することによってトレンド逆転を捉える.この戦略には最適化のための大きな余地があり,安定した利益を達成することが期待されています.


/*backtest
start: 2023-11-12 00:00:00
end: 2023-12-12 00:00:00
period: 1h
basePeriod: 15m
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/
// © MGULHANN
//@version=5
strategy('Forex Midpoint Stratejisi For Nasdaq ', overlay=true)
BPeriod = input(131, 'Başlangıç Period')
kaydirma = input(14, 'Kaydırma Seviyesi')
yuzdeseviyesi = input.float(0.0006, 'Yüzde Seviyesi', step=0.0001)
len = input.int(44, minval=1, title="Length")
src = input(close, title="Source")
out = ta.sma(src, len)

ma(source, length, type) =>
    switch type
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

typeMA = input.string(title = "Method", defval = "EMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Smoothing")
smoothingLength = input.int(title = "Length", defval = 53, minval = 1, maxval = 100, group="Smoothing")
smoothingLine = ma(out, smoothingLength, typeMA)
//plot(smoothingLine, title="Smoothing Line", color=color.red, linewidth = 2)

//zararDurdurmaYuzde = input.float(0.2, title='Zarar Durdurma %', step=0.01) / 100
//karAlmaYuzde = input.float(0.5, title='Kar Alma %', step=0.01) / 100


//MIDPOINT HESAPLA
midpoint1 = ta.highest(high, BPeriod) + ta.lowest(low, BPeriod)
midpoint2 = midpoint1 / 2
midyuzdeseviyesi = midpoint2 * yuzdeseviyesi
midtopdeger = midyuzdeseviyesi + midpoint2

//GİRİŞ KOŞULLARI
buycross = ta.crossover(smoothingLine, midtopdeger[kaydirma]) //? aort > ta.sma(close,50) : na
sellcross = ta.crossover(midtopdeger[kaydirma], smoothingLine) // ? aort < ta.sma(close,50) : na

//LONG GİRİŞ
if (buycross)
    strategy.entry("BUY", strategy.long)
    //longKarAl = strategy.position_avg_price * (1 + karAlmaYuzde)
    //longZararDurdur = strategy.position_avg_price * (1 - zararDurdurmaYuzde)
    //strategy.exit("Long Exit","Long", stop=longZararDurdur)
    
   
//SHORT GİRİŞ    
if (sellcross)
    strategy.entry("SELL", strategy.short)
    //shortKarAl = strategy.position_avg_price * (1 - karAlmaYuzde)
    //shortZararDurdur = strategy.position_avg_price * (1 + zararDurdurmaYuzde)
    //strategy.exit("Short Exit","Short", stop=shortZararDurdur)
   
//plot(midtopdeger, offset=kaydirma, linewidth=2, color=color.blue)


もっと