この記事では,価格逆転比率に基づいてトレンドを追跡する量化取引戦略について詳しく説明する.この戦略は,局所的な高点を識別し,一定の逆転比率で入場を定点する.
戦略の原則
この戦略の核心的な論理は,特定の周期内の最高価格を識別し,その後,一定割合の回落位置で取引を追跡することです.具体的ステップは以下の通りです.
まず,K線90の最新最高値を局所高点として計算します.
価格がその高点から一定比率 (例えば3%) を戻した後に,買入追跡を行う.
ストップポイントは入場価格から一定の割合で上昇 (例えば6%),価格がストップポイントに達したときに平仓とする.
ストップ・ロスを設定せず,トレンドを追跡する.
このように,局所的な高点回調の比率によって入場タイミングを判断することで,効率的に振動をフィルターし,トレンドが確認された後にのみ入場することができる.止まりの設定は,また,各単一の利益に一定の期待管理を可能にします.
2 戦略的優位性
この戦略の最大の利点は,トレンドを判断するために回転比を使用し,大量のノイズをフィルターすることです. ターニングポイントで直接入場するよりも,入場をセットする確率を減らすことができます.
また,ストップ・ストップ・ロジックが設定されている.これは,ポジティブな資金管理の原則に則って,各取引の利害を制御できるようにしている.
最後に,ストップがリコール比よりも大きいことを追跡することは,戦略に一定のリスク報酬メカニズムを与えます.
3 潜在的リスク
この戦略にはいくつかの利点があるものの,実際の使用では以下のリスクも注意すべきです.
まず,リターン比率は慎重に設定する必要があります. 太いリターンと浅いリターンは,利益の余地に影響します.
2つ目は,ストップ・ロスの設定がないことにより,戦略は単独で大きなリスクにさらされます. 強いトレンドの逆転により,大きな損失がもたらされる可能性があります.
最後に,パラメータの最適化が不適切であることも,超フィットの問題を生じさせ,信号の質を低下させる[2].
内容と要約
この記事では,価格逆転比率に基づいてトレンドを追跡する量化戦略について詳細に説明する.これは,トレンドの方向を効果的に識別し,逆転を利用して入場する.また,ストップ管理を設定することで,戦略に一定のリスク管理機構を備えている.全体的に,この戦略は,局所的な高点逆転を基礎として取引ルールを構築する,トレンドを追跡する戦略のオプションの1つである.
/*backtest
start: 2022-09-07 00:00:00
end: 2023-09-13 00:00:00
period: 1d
basePeriod: 1h
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/
// © luboremenar
//@version=4
strategy("test_%_down_up", overlay = false, initial_capital = 1000, pyramiding = 0, default_qty_value = 1000,
default_qty_type = strategy.cash, precision = 8, commission_type = strategy.commission.percent, commission_value = 0.1)
// inputs
range_of_tops = input(title="Range of candles to find highest value from.", defval=90, type=input.integer, minval=1 )
basis_points = input(title="Basis points, if asset has two decimals use 100, three decimals 1000, etc.", defval=100, type=input.integer, minval=1)
retrace_percent = input(title="Percent value retrace from the top.", type=input.integer, defval=3, minval = 1, maxval=99)
take_profit_percent = input(title="Percent value of take profit from entry price.", type=input.integer, defval=6, minval=1)
// strategy definition
three_months_top = highest(range_of_tops)
longCondition1 = (close <= float((three_months_top*(1-(take_profit_percent/100)))) and strategy.position_size == 0)
if (longCondition1)
strategy.entry("Long1", strategy.long, qty = strategy.equity/close)
strategy.exit(id="TP1", from_entry="Long1", profit=((close*(1 + take_profit_percent/100)-close)*basis_points),
when= crossover(strategy.position_size, 0))
// plot
plot(strategy.equity)
// for testing, debugging
//test=0.0
//if(crossover(strategy.position_size, 0))
// test := (close*1.06-close)*basis_points
//plot(test)