
この戦略は,カスタマイズされた指標積分器に基づいて,価格と移動平均の距離の累積加算によって,価格トレンドの方向を判断し,トレンド追跡を実現します.
この戦略は,カスタム指数を使用して価格と移動平均の距離を累積し,具体的には以下のように実現します.
価格を計算する 距離 k=close-sma ((close,200) の長さ200の単純移動平均
累積周期s=29を定義し,最近のs周期内のkの値に累積加算する:sum = 0, for i = 0 to s, sum := sum + k[i]
sum>0時に多行信号が発生し,sum時に空白信号が発生する
多ポジションに入るときは,sum<0なら平仓;空白ポジションに入るときは,sum>0なら平仓
この策略は,移動平均線と価格の距離の累積和の正負を追跡して価格の全体的なトレンド方向を判断する.積分と正の場合は,価格が上昇傾向にあると考え,多頭を持ち,積分と負の場合は,価格が下降傾向にあると考え,空頭を持ち.
カスタム指数積分器を使用し,価格の方向を効果的に判断できます.
価格と移動平均の距離を積分する統合的思考を用いて,トレンド判断の精度を向上させる
比較的シンプルなロジック,理解しやすい実装,改善を最適化するための便利
インテリジェント周期のパラメータを柔軟に調整し,インテリジェントのトレンド判断の感性を最適化
収益が安定し,実用化
積分周期の不適切な設定は,積分器の不敏感な反応を引き起こし,トレンドの転換点を逃す可能性があります
移動平均線の長さが正しく設定されていないため,積分器が価格の傾向を誤判する可能性があります.
価格の急激な変動による突然の重大事件は,分数器に誤った信号を与える.
取引品種の不適切な選択,例えば波動率が高い品種を選択すると,積分器の効果が悪くなる
リスクに対する対処法:
インテリジェントサイクルパラメータを最適化して,インテリジェントをトレンドの変化に敏感にする
様々な長さの移動平均の効果をテストし,トレンドの長さを有効に判断する長さを選択します.
価格の急激な変動による誤信号を回避するために,大きな出来事の前に戦略を終了する.
低変動の取引品種を選択することで,積分器の効果が向上します.
RSIなどの他の補助指標を積分器の基礎に追加すると,総合的な判断が考えられます.
移動平均と価格距離の積分効果を研究できる
積分周期のパラメータを自動的に最適化して,異なる取引品種に適応させることができます.
取引量指数が加えられ,価格が急激に揺れ動いたときにインテリジェントが誤信号を生じさせないようにする.
戦略をより粗略化するために,インテリジェントのパラメータを機械学習などの方法によって自動的に最適化できます.
この戦略は,カスタム指数積分器によって価格の傾向の方向を判断し,価格と移動平均距離の累積累積の方法を使用して,トレンドの効果的な追跡を可能にします. 戦略ロジック シンプルで明快で,反測パフォーマンスは良好です. 積分器のパラメータを調整し,補助指標を追加し,自動最適化などの方法によって改善することができ,戦略は実体でより安定して信頼性が高くなります. 全体的に,この戦略は,実際に適用される量化トレンド追跡戦略です.
/*backtest
start: 2023-10-09 00:00:00
end: 2023-10-16 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("Indicator Integrator Strat",default_qty_type = strategy.percent_of_equity, default_qty_value = 100,currency="USD",initial_capital=100, overlay=true)
l = input(defval=170,title="Length for indicator")
s = input(title="Length of summation",defval=29)
a= sma(close,l)
r=roc(close,l)
k=close-a
sum = 0
for i = 0 to s
sum := sum + k[i]
plot(a,color=yellow,linewidth=2,transp=0)
//bc = iff( sum > 0, white, teal)
//plot(sum,color=bc, transp=20, linewidth=3,style=columns)
//plot(sma(sum,3),color=white)
//hline(0)
inpTakeProfit = input(defval = 0, title = "Take Profit", minval = 0)
inpStopLoss = input(defval = 0, title = "Stop Loss", minval = 0)
inpTrailStop = input(defval = 0, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)
useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na
useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na
useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na
useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na
longCondition = sum>0
exitlong = sum<0
shortCondition = sum<0
exitshort = sum>0
strategy.entry(id = "Long", long=true, when = longCondition)
strategy.close(id = "Long", when = exitlong)
strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=exitlong)
strategy.entry(id = "Short", long=false, when = shortCondition)
strategy.close(id = "Short", when = exitshort)
strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=exitshort)