
この戦略は,トレンドを追跡するストップ損失とストップ退出論理を組み合わせて,トレンドの継続的な追跡から利益を得ます.戦略は,均線を活用してトレンドの方向を判断し,価格が均線を破るときに取引シグナルを生成します.多頭ポジションに入ると,戦略は,ATR値に基づいてストップ損失距離を設定し,同時にトレンドを追跡するストップ損失ロジックを使用してストップ損失距離を調整し,利益を保護しながらトレンドを追跡します.価格が一定比率に上昇すると,戦略は,部分的にストップし,部分的に利益をロックします.
ユーザの入力した回測時間範囲に応じて,回測の開始停止時間を設定します.
ロングポジションとショートポジションのストップ価格とストップトラッキングパーセントを設定します.
価格が平均線を突破すると多入場シグナルが作られます.
ATR値に基づいてストップロズ距離を計算し,ストップロズ価格を設定する.
価格が上昇し続けると,ストップダストを調整して,徐々に上昇させ,より多くの利益をロックします.
価格が設定された止まり値まで上昇すると,部分的に平仓止まりとなる.
平均線を下回ると空調信号が出るので空調で入場する.
ATR値に基づいてストップロズ距離を計算し,ストップロズ価格を設定する.
価格が下がり続けると,ストップ・ロスの距離を調整して,徐々に下がって,より多くの利益をロックします.
価格が設定された止まり値まで下がったとき,部分的に平仓止まりである.
トレンド追跡ストップ・メカニズムを使用すると,利益を保護しながら継続的にトレンドを追跡して利益を得ることができ,従来の固定ストップ・距離よりも優れている.
ATR指数と組み合わせた動的ストップ距離の計算は,市場の変動に効果的に対応し,ストップが誘発される確率を下げる.
部分停止ロジックは,利益の一部をロックし,撤回リスクを軽減します.
戦略の論理はシンプルで明快で,理解し,実行しやすく,トレーダーに適しています.
トレンドが突然逆転すると,ストップダメージの距離が大きすぎて,タイムリーにストップダメージを止められず,大きな損失を招く可能性があります.
ATR指数の計算による止損距離は,市場騒音が頻繁に止損を誘発しやすいので,柔軟すぎる可能性があります.
ストップスレスの設定が間違って,トレンドの機会を逃したり,損失を増加させたりする可能性があります.
ATR周期,止損追跡比率,部分停止比率などの最適化が必要となるパラメータが多く,最適化が困難である.
戦略は平均線とATRの指標のみに基づいている.これらの指標が間違った信号を発信すると,取引ミスが生じます.
他の指標のフィルタリング取引信号と組み合わせて,均線が誤信号を生じないようにする.例えばMACD,KDなど.
固定部分ストップを動的比率ストップに変更し,トレンドの強度に応じて調整することを考えることができます.
異なるATR周期パラメータをテストし,最も安定したパラメータを使用することができる。また,他の指標と組み合わせて止損距離を決定することもできる。
機械学習アルゴリズムを導入し,アルゴリズムによってパラメータを自動的に最適化し,市場に応じてリアルタイムでパラメータを調整する.
ディープ・ラーニングなどの高度なアルゴリズムと組み合わせて,モデルを訓練することで,トレンドを自動的に認識し,取引信号を生成する.
この戦略は,トレンド追跡ストップ,ATRダイナミックストップ,部分ストップロジックを統合し,トレンドを継続的にフォローしてストップを行うことができ,撤回制御においても一定の優位性があります.しかし,戦略には,トレンド判断指標の簡素性,パラメータの最適化の難しさなどの一定の制限があります.これは,私たちに良い最適化方向を与え,より多くの指標と技術手段を導入することにより,戦略の安定性と収益率をさらに強化する見込みがあります.全体的に,この戦略は,実際の取引でストップとストップの仕組みを設計するための良い参考を提供します.
/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-29 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/
// © felipefs
//@version=4
strategy("Meu Script", overlay=true)
plot(ohlc4)
//Funçao de Datas
testStartYear = input(2018, "Backtest Start Year")
testStartMonth = input(6, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)
testPeriod() => time >= testPeriodStart and time <= testPeriodStop ? true : false
//Funções de Trailing Stop
long_stop_price = 0.0
short_stop_price = 0.0
long_trail_perc = 0
short_trail_perc = 0
long_stop_price := if (strategy.position_size > 0)
stopValue = close * (1 - long_trail_perc)
max(stopValue, long_stop_price[1])
else
0
short_stop_price := if (strategy.position_size < 0)
stopValue = close * (1 + short_trail_perc)
min(stopValue, short_stop_price[1])
else
999999
//Função de Debug
debug(value) =>
x = bar_index
y = close
label.new(x, y, tostring(value))
//Take Profit
profit = close * (1 + 0.12)
strategy.entry("Long", true)
strategy.exit("Take Profit 1 Long", from_entry="Long", limit=profit, qty_percent=50.0)
//ATR Stop
// xATRTrailingStopLong = 0.0
// xATR = atr(nATRPeriod)
// nLossLong = nATRMultipLong * xATR
// if (strategy.position_size > 0)
// xATRTrailingStopLong := max(nz(xATRTrailingStopLong[1]), close - nLossLong)