Kラインに基づくロングブレイクアウト戦略


作成日: 2024-01-05 12:37:46 最終変更日: 2024-01-05 12:37:46
コピー: 0 クリック数: 638
1
フォロー
1621
フォロワー

Kラインに基づくロングブレイクアウト戦略

概要

この戦略は,簡単な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)