2つの移動平均のクロスマーケット取引戦略

作者: リン・ハーンチャオチャン,日付: 2023年10月24日 16:55:38
タグ:

img

概要

この戦略は,ハル移動平均とT3移動平均の利点を組み合わせて,クロスマーケット取引戦略を設計する.短期取引と長期トレンド追跡の両方に使用できる.ハル移動平均とT3移動平均の平均値を主な取引信号ラインとして計算することによって,方向の変化に基づいてエントリーと出口点を決定する.

戦略の論理

この戦略は主にハル移動平均とT3移動平均の計算に基づいている.

Hull Moving Average (HMA) は,市場騒音を効果的にフィルタリングし,平らな価格傾向曲線を表示するために重度の移動平均を繰り返す計算方法を使用しています. 単純な移動平均と指数的な移動平均よりも価格変化に敏感であり,偽ブレイクを効果的に抑制します.

T3移動平均は,パラメータを調整することによって遅れを軽減しながら価格変化に迅速に対応する.複数の指数的な滑らかな計算を通じて,価格変化に迅速に対応することができます.

この戦略は,この2つの平均を主要取引指標として用いており,この平均線の方向に応じてエントリータイミングを判断します.現在の期間の平均が前期よりも高い場合,それは長いエントリー信号であり,低い場合,それは短いエントリー信号です.

アクシッドルールの場合,価格がストップ・ロスを突破したり,収益を上げたりすると,アクシッド;また,移動平均の方向が変化するとアクシッドします.

利点分析

この戦略は,ハル移動平均値とT3移動平均値の利点を組み合わせて包括的な指標を生成する.次に,この戦略はサイクルパラメータを調整することによって短期および長期の取引の両方に適しています.また,動的ストップロスを採用し,利益をロックし,リスクを制御します.

リスク分析

この戦略は主に移動平均指標に依存しており,変動傾向で複数の誤った信号を生む可能性があります.また,移動平均値の遅れは,最良のエントリータイミングを逃す可能性があります.ストップ損失と取利益ポイントは,あまりにも緩やかまたはあまりにも緊密にならないように注意深く設定する必要があります.最後に,パラメータは,異なる通貨とタイムフレームに最適化する必要があります.

最適化

MA信号を検証し,誤った信号をフィルタリングするために他の指標を追加することを検討する. MA信号を最適化するために異なるMA組み合わせと重量化アルゴリズムをテストする. リスクを動的に管理するために適応型ストップ損失とトレーリング・テイク・プロフィートを追加する. 最適なパラメータセットを見つけるために異なる通貨とタイムフレームでバックテスト最適化を行う.

概要

この戦略は,トレンド指向を判断するための包括的な指標を形成するために,ハル移動平均とT3移動平均の強みを統合している.パラメータ最適化を通じて,戦略は異なる取引サイクルに柔軟に適用することができます.この戦略には一定の利点がありますが,遅れや誤った信号などの問題もあります.他の指標を追加し,パラメータとダイナミックストップを最適化することで,より良い結果のために継続的に改善することができます.


/*backtest
start: 2023-09-23 00:00:00
end: 2023-10-23 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/
// © exlux99

//@version=4


strategy(title="Swing HULL + T3 avg", shorttitle="Swing HULL T3 AVG", overlay=true)

fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2000, title = "From Year", minval = 1970)
 //monday and session 
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true



////////////////////////////GENERAL INPUTS//////////////////////////////////////

length_Ma= input(defval=50, title="Length MAs", minval=1)

//==========HMA
getHULLMA(src, len) =>
    hullma = wma(2*wma(src, len/2)-wma(src, len), round(sqrt(len)))
    hullma

//==========T3
getT3(src, len, vFactor) =>
    ema1 = ema(src, len)
    ema2 = ema(ema1,len)
    ema3 = ema(ema2,len)
    ema4 = ema(ema3,len)
    ema5 = ema(ema4,len)
    ema6 = ema(ema5,len)
    c1 = -1 * pow(vFactor,3)
    c2 = 3*pow(vFactor,2) + 3*pow(vFactor,3)
    c3 = -6*pow(vFactor,2) - 3*vFactor - 3*pow(vFactor,3)
    c4 = 1 + 3*vFactor + pow(vFactor,3) + 3*pow(vFactor,2)
    T3 = c1*ema6 + c2*ema5 + c3*ema4 + c4*ema3
    T3





hullma = getHULLMA(close,length_Ma)

t3 = getT3(close,length_Ma,0.7)


avg = (hullma+t3) /2


////////////////////////////PLOTTING////////////////////////////////////////////


colorado = avg > avg[1]? color.green : color.red

plot(avg , title="avg", color=colorado, linewidth = 4)

long=avg>avg[1]
short=avg<avg[1]

tplong=input(0.08, title="TP Long", step=0.01)
sllong=input(1.0, title="SL Long", step=0.01)

tpshort=input(0.03, title="TP Short", step=0.01)
slshort=input(0.06, title="SL Short", step=0.01)


if(time_cond)
    strategy.entry("long",1,when=long)
    strategy.exit("closelong", "long" , profit = close * tplong / syminfo.mintick, loss = close * sllong / syminfo.mintick, alert_message = "closelong")
    
    strategy.entry("short",0,when=short)
    strategy.exit("closeshort", "short" , profit = close * tpshort / syminfo.mintick, loss = close * slshort / syminfo.mintick, alert_message = "closeshort")


もっと