この戦略は,周期的な高値と低値を突破した上でトレンド方向を判断する. 価格が周期的な高値を突破するとロングになり,価格が周期的な低値を下回るとショートする. これはトレンド追跡戦略に属する.
戦略は,最初にユーザー定義のサイクル (日,週,など) と見直し期間を読み取ります.その後,これらのパラメータに基づいて見直し期間の最高値と最低値を取得します.例えば,毎日サイクルと見直し期 1 に設定されている場合,前日の最高値と最低値を取得します.
実際の取引では,閉じる価格が,見直し期間の最低価格よりも大きくまたはそれと同等である場合は,上向き突破として判断され,長引く.閉じる価格が,見直し期間の最高価格よりも小さくまたはそれと同等である場合は,下向き突破として判断され,短引く.
この戦略は,周期的な高低を突破してトレンド方向を把握することで,ある種のトレンド追跡戦略に属します.
この戦略の主な利点は以下の通りです.
突破点に基づいて 方向性を判断することで 強い統合後の大きな傾向を把握します
シンプルで理解しやすいので 初心者が学習して使うのに最適です
周期的なパラメータを調整して最適化しやすく,異なる品種に適用できます.
リバース・インプットをリバース・オペレーションに設定して 戦略の使用を豊かにできます
判断を助けるため 周期的な高低を図り 多重検証をします
リスクもあります:
横向きの変動を効果的にフィルタリングできない 複数の誤った操作が可能です
ストップ・ロスはコントロールできない 損失リスクはある程度ある
取引コストに敏感であるため,実際のPnLは偏差する可能性があります.
ポジションのサイズを制限することはできません.過剰取引のリスクがあります.
これらのリスクに対処するために,ストップ損失を設定し,フィルター条件を最適化し,ポジションサイズを制御するなどの方法が使用できます.
主な最適化方向は以下の通りである.
横向で頻繁な開口を避けるためにフィルターメカニズムを追加します.価格チャネル,変動フィルターなどを設定します.
追跡ストップ損失またはタイムストップ損失を設定し,単一の損失リスクを制御し,全体的な収益性を確保します.
ポジションのサイズとマネーマネジメントを最適化し,過剰な取引を防止し,安定性を確保する.
異なる周期パラメータの効果を試験し,最適なパラメータ組み合わせを選択する.
アルゴリズムの取引モジュールを増やし 意思決定効率を向上させるために マシン学習アルゴリズムを使用します
概要すると,この突破性高い低バックテスト戦略は,トレンド追跡に基づいて操作しやすく,初心者が学ぶのに適していますが,閉じ込められるリスクは存在します.フィルター,ストップ,位置制御などの最適化を加えることで,これらのリスクが軽減され,戦略の結果が改善されます.それは私たちのさらなる研究と改善のためのアイデアと参照を提供することができます.
/*backtest start: 2023-01-01 00:00:00 end: 2024-01-07 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 03/07/2018 // This script shows a high and low period value. // Width - width of lines // SelectPeriod - Day or Week or Month and etc. // LookBack - Shift levels 0 - current period, 1 - previous and etc. // // You can change long to short in the Input Settings // WARNING: // - For purpose educate only // - This script to change bars colors. //////////////////////////////////////////////////////////// strategy(title="High and Low Levels Backtest", shorttitle="HL Levels", overlay = true) SelectPeriod = input("D", defval="D") LookBack = input(1, minval=0) reverse = input(false, title="Trade reverse") xHigh = request.security(syminfo.tickerid, SelectPeriod, high[LookBack]) xLow = request.security(syminfo.tickerid, SelectPeriod, low[LookBack]) vS1 = xHigh vR1 = xLow pos = iff(close > vR1, 1, iff(close < vS1, -1, nz(pos[1], 0))) possig = iff(reverse and pos == 1, -1, iff(reverse and pos == -1, 1, pos)) if (possig == 1) strategy.entry("Long", strategy.long) if (possig == -1) strategy.entry("Short", strategy.short) barcolor(possig == -1 ? red: possig == 1 ? green : blue )