設定可能なマルチ移動平均投票取引戦略


作成日: 2023-09-23 15:52:06 最終変更日: 2023-09-23 15:52:06
コピー: 2 クリック数: 646
1
フォロー
1617
フォロワー

概要

この戦略は,配置によって複数の快速・ゆっくり平均線の組み合わせを設定し,すべての快速線上での遅い線を横切るときに多めにする.少なくとも1つの快速線下での遅い線を横切るときに平仓する.この戦略は,複数の平均線の優位性を充分に活用し,より強いポジションの決定システムを形成する.

戦略原則

戦略の主要要素と規則は以下の通りです.

  1. 複数のグループ・ラスト・ラスト・平均線:SMA,WMA,VWMAなどの複数の平均線指標を使用する.

  2. 信号を多発する:全ての高速線で遅線を横切る際の多発.

  3. 平仓信号:任意の快線下を通過すると平仓.

  4. ストップストロップ:ATR値で固定ストップストロップポイントを設定する.

  5. コンフィギュレーション:多グループ均線参数を柔軟に構成する.

多均線組合せ立场投票方式により入場し,信号の信頼性を有効に強化することができる.多均線パラメータはカスタマイズ可能な配置であり,柔軟性がある.

優位分析

単一の均線戦略と比較して,この戦略は以下の利点があります.

  1. 多平均線配列は,より全面的なトレンド判断を可能にします.

  2. 投票の仕方は,騒音取引を誤解しないようにする.

  3. 平均線パラメータを自由に配置でき,最適化スペースは大きい。

  4. 複数の平均線指標をサポートし,使用の柔軟性があります.

  5. ストップ・ストップ・ストップ・ポイントを設定し,単発の損益を制御する.

  6. 長いサイクルの使用はより効果があり,曲線振動を減らすことができる.

  7. 計算はシンプルで直感的で,実行し操作しやすい.

  8. 平均線よりも安定性と持続性が優れている.

リスク分析

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

  1. 戦略の複雑さを高めます.

  2. パラメータを過度に最適化するリスクがある.

  3. 平均線は本質的にトレンドの変化の遅滞認識である.

  4. 取引量も考慮していないため,

  5. ストップ・ストップ・損失の設定は,恣意的であり,不必要な平仓を引き起こす可能性があります.

  6. 市場環境の変化により影響が大きく変動する.

  7. 利回り率に注目し,曲線が太くならないようにしましょう.

  8. パラメータを複数の品種で安定性をチェックする.

最適化の方向

分析の結果,この戦略は以下の側面から強化される:

  1. テスト平均線パラメータは,異なる品種における健壮性である.

  2. 取引量や変動率の検証を増加させる

  3. ストップ・ストップ・損失パラメータを最適化する.

  4. 設定した最大撤回許容度

  5. ダイナミックポジション管理機構の構築

  6. 機械学習の導入の効果を評価する

  7. 利回り曲線の最大引出と収縮に注意してください.

  8. 繰り返しの戦略で,過度に最適化されないようにする.

要約する

この戦略は,配置化により多均等線配合を設定し,より安定したポジション保持決定機構を形成する.しかし,いかなる戦略も,過適合を防止し,市場環境に応じて動的に調整する必要がある.継続的に最適化テスト,量化戦略のみが長期にわたって市場に適応できる.

ストラテジーソースコード
/*backtest
start: 2022-09-16 00:00:00
end: 2023-09-22 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/
// © levieux

//@version=5
strategy(title='Configurable Multi MA Crossover Voting System', shorttitle='Configurable Multi MA Crossover Voting System', initial_capital=1000, overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1)
crossoverConfig= input.string(defval="2x4,3x5,4x6", title="Crossover Config")
source= input.source(high)
maType= input.string("WMA", title="Moving Average Type", options=["WMA","SMA","VWMA"])
atrPeriod= input(14, title="ATR Period")
profitAtr = input(10, title="Profit ATR x")
lossAtr = input(5, title="Loss ATR x")


ma(src,length,type) => 
    float ma = switch type
	    "SMA" => ta.sma(src, length)
	    "WMA" => ta.wma(src, length)
	    "VWMA" => ta.vwma(src, length)

crossoverGroups= str.split(crossoverConfig, ",")
crossoverCount= array.size(crossoverGroups)
crossovers= array.new_string(crossoverCount)
positions= array.new_int(crossoverCount, 0)
longVotes= 0
for i= 0 to crossoverCount-1
    crossover= str.tostring(array.get(crossoverGroups, i))
    crossoverBoundaries= str.split(crossover, "x")
    int fastLength= math.round(str.tonumber(array.get(crossoverBoundaries, 0)))
    int slowLength= math.round(str.tonumber(array.get(crossoverBoundaries, 1)))
    wmaFast= ma(source,fastLength,maType)
    wmaSlow= ma(source,slowLength,maType)
    if wmaFast>wmaSlow
        longVotes:= longVotes + 1
        array.set(positions, i, 1)

longCondition= longVotes==crossoverCount and strategy.position_size==0


//profitTicks = profitAtr*ta.atr(atrPeriod)/syminfo.mintick
//lossTicks = lossAtr*ta.atr(atrPeriod)/syminfo.mintick
profitPrice= close+profitAtr*ta.atr(atrPeriod)
lossPrice= close-lossAtr*ta.atr(atrPeriod)

if strategy.position_size>0
    profitPrice:= profitPrice[1]
    lossPrice:= lossPrice[1]

plot(profitPrice, color=color.green)
plot(lossPrice, color=color.red)

if longCondition and profitPrice>0
    strategy.entry("Long", strategy.long)

if longVotes<crossoverCount and strategy.position_size>0 and (high>profitPrice or low<lossPrice)
    strategy.close("Long")
    
longVotes:= 0