ピボット逆転は長時間のみにアップグレード - 二重モメンタム戦略

作者: リン・ハーンチャオチャン, 日付: 2023年12月25日 17:47:11
タグ:

img

概要

これは,ピボットポイント逆転と最小正方形移動平均戦略の利点を組み合わせた長時間のみの定量的な取引戦略である.牛市中の主要なトレンドをフォローし,ピボットポイント上部レールを観察した後,リバース信号を決定し,ロングに行く.同時に,ストラテジーをより安定させるために,ロングポジションを開く前に閉じる価格が最小正方形移動平均以上である必要があります.

戦略の論理

この戦略は,ピボットポイント逆転と最小正方形移動平均戦略を統合している.ピボットポイント逆転戦略は,上方および下方レールを取得するために,一定数の取引日間の最高値と最低値を計算する.価格が上方レールを突破すると,逆転信号として判断される.最小正方形移動平均は,価格をより接近できる傾向判断指標である.この戦略は,ピボットポイント上方レールが形成され,閉値が最小正方形線よりも高くなったときに長い.

この戦略は,上方および下部のピボットポイントレールを取得するために,最初に最後の3バーの最高価格と最後の16バーの最低価格を計算します.上部レールが形成されたときに長引きます.次の下部レールが形成されたとき,ポジションを閉じる.同時に,ロングポジションを開く前に閉じる価格が20日最小平方移動平均値よりも高くなる必要があります.

利点

  1. より安定し信頼性の高い取引決定のための2つの戦略の強みを組み合わせます

  2. ピボットポイント戦略は反転点を判断し,LSMAは偽のブレイクをフィルターし,取引リスクを軽減します

  3. ほとんどの人たちの心理的な期待に合致する

  4. シンプルで明確な戦略論理,理解し最適化しやすい

  5. 中長期取引に適した中程度の取引頻度

リスク分析

  1. 急速に減少する機会を把握できない

  2. ある程度の遅れがある 昇進の機会を逃すかもしれない

  3. 市場の傾向が逆転すると損失が増える

解決策:

  1. 遅延を減らすために計算サイクルを適切に短縮する

  2. 参加を最適化するために MA パラメータを調整する

  3. 単一の損失を減らすためにストップ損失を追加

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

  1. 精度を高めるために複数の傾向指標を追加します

  2. 機械学習の予測を組み込み,意思決定を導く

  3. 波動性指標を組み合わせてポジションサイズを制御する

  4. 勝率を向上させるパラメータを最適化

  5. 安定性を確認するために,より長いタイムフレームデータをテストする.

概要

この戦略は,トレンド逆転を判断する際にリスクを制御するためのピボットポイント逆転とLSMA戦略の強みを統合している. 簡単な構造で,簡単に理解し,テストするために,初心者にとって学び,実践するのに最適である. しかし,長サイドのみアプローチは,大きな制限である市場の減少から利益を得ることを妨げている. より多くの指標とマシンの学習最適化により,安定性と追跡能力のさらなる改善を達成することができる.


/*backtest
start: 2022-12-18 00:00:00
end: 2023-12-24 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//@author exlux99

strategy(title = "Pivot Reversal Upgraded long only", overlay = true,  pyramiding=1,initial_capital = 100, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.1)
/////////////
//time

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 = 2010, 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 = 2031, title = "To Year", minval = 1970)

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

length = input(title="Length MA", type=input.integer, defval=20)
offset = 0//input(title="Offset", type=input.integer, defval=0)
src = input(close, title="Source")
lsma = linreg(src, length, offset)

//LSMA
leftBars = input(3)
rightBars = input(16)
swh = pivothigh(leftBars, rightBars)
swl = pivotlow(leftBars, rightBars)
swh_cond = not na(swh)
hprice = 0.0
hprice := swh_cond ? swh : hprice[1]
le = false
le := swh_cond and time_cond? true : (le[1] and high > hprice ? false : le[1])
//leverage
multiplier=input(1.0, step=0.5)
g(v, p) => round(v * (pow(10, p))) / pow(10, p)
risk     = input(100)
leverage = input(1.0, step = 0.5)
c = g((strategy.equity * leverage / open) * (risk / 100), 4)

//entry
strategy.entry("long", strategy.long,c, when=le and close > lsma, comment="long", stop=(hprice + syminfo.mintick) * multiplier)

    
swl_cond = not na(swl)
lprice = 0.0
lprice := swl_cond ? swl : lprice[1]
se = false
se := swl_cond ? true : (se[1] and low < lprice ? false : se[1])
strategy.close("long", when=se)




もっと