この戦略は,移動平均値と価格変動率を計算し,現在の状態が一定期間中にK線と組み合わせた上昇傾向か下落傾向か判断し,それに従って長引か短引かします.
この戦略では,まず,長さ l の単純な移動平均値 a と長さ l の価格変化率 r を計算し,次に,現在の K 線価格と移動平均値の間の差 k を計算し,最後に,過去 s K 線における k の和を計算します.
sum>0の場合,現在の上昇傾向を示し,戦略は長引く. sum<0の場合,現在の下落傾向を示し,戦略は短引く.
ポジションは,トレンドが逆転するまで (合計が正から負に変化するか,その逆か) 持たせられ,その後は閉じる.
この戦略の最大の利点は,トレンドを捉えることができ,トレンド取引に適していることです.特に,以下の利点があります.
移動平均を用いることで,全体的なトレンド方向を決定することで,市場の騒音を効果的にフィルタリングし,主要なトレンドを固定することができます.
価格変動率指標を用いて 勢力の強さを測定することで 強い勢力の欠落を回避できる.
期間中に複数のK線を考慮すると,傾向をより正確に決定し,個々のAusreißerによって誤導されるのを避けることができます.
トレンドが変わらない限り トレンド市場から利益を最大化するために ポジションを保持し続けます
この戦略の主なリスクは,
トレンドの終止時刻を正確に判断できず,損失を早めに停止したり,利益を見逃したりする可能性があります.
単一の損失の大きさを効果的に制御できないため,極端な市場条件では損失が大きい可能性があります.
不適切な戦略パラメータは,取引頻度が過剰になるか,取引機会が逃れる可能性があります.
長期保有は,一日の利息や保全金リスクに直面する可能性があります.
リスクをコントロールするために ストップ・ロスのポイントを設定し 高流動性のある商品のみを取引し パラメータを最適化し 合理的にレバレッジを使用できます
この戦略を最適化するための主な側面は以下のとおりです.
異なる長さの移動平均値と価格変動率をテストして,最適なパラメータ組み合わせを見つけます.
MACDなどの他の指標を試して 傾向をより良く判断し 精度をさらに向上させてください
ポジション管理メカニズムを追加し,単一の損失を制御するために,いくつかの利益を得た後に利益を取ることなど.
変動指標を組み込み 極端な市場状況におけるリスクを減らすために ダイナミックストップを設定します
誤ったブレイクをフィルタリングし,取引効率を向上させるためのエントリーと出口ロジックを最適化します
この戦略の全体的な論理は明確で実行が容易である.長期保有取引の傾向を追跡することで,引き下げ制御は比較的合理的である.安定した収益を求める投資家に適している.ストップ損失とポジション管理をさらに最適化することで,長期的な安定した収益を期待することができます.
/*backtest start: 2023-12-03 00:00:00 end: 2023-12-10 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=662, overlay=false) l = input(defval=170,title="Length for indicator") s = input(title="Length of summation",defval=18) 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 ////buyEntry = crossover(source, lower) ////sellEntry = crossunder(source, upper) if sum>0 strategy.entry("BBandLE", strategy.long, oca_name="BollingerBands", comment="BBandLE") else strategy.cancel(id="BBandLE") if sum<0 strategy.entry("BBandSE", strategy.short, oca_name="BollingerBands", comment="BBandSE") else strategy.cancel(id="BBandSE") strategy.initial_capital = 50000 plot(strategy.equity-strategy.initial_capital-strategy.closedtrades*.25/2, title="equity", color=red, linewidth=2) hline(0) //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)