K線建設に基づく長い突破戦略

作者: リン・ハーンチャオチャン,日付: 2024-01-05 12:37:46
タグ:

img

概要

この戦略は,シンプルなK線パターン判断ルールを設定することによって,テスラの4時間線でロングポジションブレイクアウト取引を実現する.この戦略は,シンプルな実装,明確な論理,理解しやすいなどの利点があります.

戦略原則

戦略の基本的な判断論理は,次の4つのK線パターンルールに基づいています.

  1. 現在のKラインの最低価格は開通価格より低い
  2. 現在のKラインの最低価格は,以前のKラインの最低価格より低い
  3. 現在のKラインの閉じる価格は開通価格より高い
  4. 現在のKラインの閉じる価格は,以前のKラインの開く価格と閉じる価格よりも高い.

4つのルールが同時に満たされた場合,ロングポジション開設操作が行われます.

さらに,戦略は,価格がストップ・ロスを引き起こすとき,ストップ・ロスの条件を設定し,プロフィートを引き出す場合,ポジションを閉じます.

利点分析

この戦略には以下の利点があります.

  1. K線判断のルールは とてもシンプルで 直ぐで 理解しやすく 実践しやすいものです
  2. これは,過度に複雑な技術指標を使用することなく,価格エンティティの判断に完全に基づいており,バックテスト結果は単純です.
  3. コード実装はサイズが小さく,効率的に実行され,最適化や改善が容易です.
  4. ストップ・ロストとテイク・プロフィートは,リスクを制御するためのパラメータを調整することで柔軟に設定できます.

リスク分析

注目すべき主なリスクは以下のとおりです.

  1. 固定量を使用すると,ポジションのサイズを考慮せずにポジションを開くため,過剰取引のリスクが生じる可能性があります.
  2. 範囲限定市場では,無効な取引があまりにも多くなる可能性があるフィルターが設定されていません.
  3. バックテストのデータが十分でない場合,戦略の業績の判断は偏りがある可能性があります.

リスクを軽減するために,次の方法が採用できます.

  1. ポジションサイズモデルを組み込み,資本サイズに基づいて取引サイズを動的に調整する.
  2. 乱雑な市場状況下で 乱雑な取引の開業を防ぐために 貿易フィルターを追加します
  3. バックテストの期間を拡大し,結果の信頼性を向上させるため,より多くの歴史的データを収集します.

オプティマイゼーションの方向性

戦略の潜在的最適化方向には,以下が含まれます.

  1. 資本利用率に基づいて取引サイズを決定するポジションサイズモジュールを組み込む.
  2. 柔軟な出口のために ストップ・ロスト・アンド・テイク・プロフィート・トラッキング・メカニズムを設計します
  3. 無効な取引を避けるためにトレードフィルターを追加します.
  4. マシン学習方法を使ってパラメータを自動最適化します
  5. 複数の商品の分散取引を支援する

結論

この戦略は,簡単なK線パターンルールを用いて長い突破取引を実現する. 改善の余地があるものの,シンプルさと直接性の観点から,これは初心者が理解し使用するのに非常に適したロングポジション戦略です. 継続的な最適化により,戦略のパフォーマンスはさらに向上することができます.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
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/
// © TheQuantScience

//@version=5
strategy("SimpleBarPattern_LongOnly", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, currency = currency.EUR, initial_capital = 1000, commission_type = strategy.commission.percent, commission_value = 0.03)

// Make input options that configure backtest date range
startDate = input.int(title="Start Date",
     defval=1, minval=1, maxval=31)
startMonth = input.int(title="Start Month",
     defval=1, minval=1, maxval=12)
startYear = input.int(title="Start Year",
     defval=2017, minval=1800, maxval=2100)

endDate = input.int(title="End Date",
     defval=8, minval=1, maxval=31)
endMonth = input.int(title="End Month",
     defval=3, minval=1, maxval=12)
endYear = input.int(title="End Year",
     defval=2022, minval=1800, maxval=2100)
     
// Look if the close time of the current bar
// Falls inside the date range
inDateRange = true

// Setting Conditions 
ConditionA = low < open 
ConditionB = low < low[1]
ConditionC = close > open
ConditionD = close > open[1] and close > close[1]

FirstCondition = ConditionA and ConditionB 
SecondCondition = ConditionC and ConditionD
IsLong = FirstCondition and SecondCondition

TakeProfit_long = input(4.00)
StopLoss_long = input(4.00)
Profit = TakeProfit_long*close/100/syminfo.mintick
Loss = StopLoss_long*close/100/syminfo.mintick

EntryCondition = IsLong and inDateRange

// Trade Entry&Exit Condition 
if EntryCondition and strategy.opentrades == 0
    strategy.entry(id = 'Open_Long', direction = strategy.long)
    strategy.exit(id = "Close_Long", from_entry = 'Open_Long', profit = Profit, loss = Loss)







もっと