水平ブレイクアウトトレンドキャプチャ戦略


作成日: 2024-04-26 15:22:06 最終変更日: 2024-04-26 15:22:06
コピー: 4 クリック数: 627
1
フォロー
1617
フォロワー

水平ブレイクアウトトレンドキャプチャ戦略

概要

この戦略は,水平線を支給と抵抗として使用し,価格が水平線を破るときに取引シグナルを生成する.主な考え方は,まず,いくつかの条件に基づいて水平線を描く.価格が上方から水平線を突破するとき,より多くのことをし,価格が下方から水平線を突破したとき,平仓する.同時に,水平線の生成は,前回のK線の最低価格が現在の閉盘価格より大きい場合,同様の条件があります.

戦略原則

  1. 前K線の最低価格が現在の閉盘価格より大きいという条件に基づいて,前K線の最低価格の位置に20の長さの水平線を描き,常に最新の10の線のみを保持する.
  2. もし,現在の価格が,最新の水平線を突破した場合は,以前のすべての多項を平らにして,再び多項をします.
  3. 新しい水平線を描くとき,もし,その時点でポジションを持っているなら,まず平仓を,それからもっとやる。

戦略的優位性

  1. 戦略の論理はシンプルで明快で,理解し,実行しやすい.
  2. 水平線が抵抗点を支える突破によって信号を生成し,トレンドをより良く捉えることができる.
  3. 新しい水平線が生じたとき,以前のポジションを平らにして,新しいポジションを開くことで,以前のポジションがもたらすリスクを軽減することができます.
  4. 横線の長さや数を調整することで戦略を最適化できます.

戦略リスク

  1. 波動的な状況では,頻繁に水平線が突破されることが,過度な取引につながり,大きな滑点と手数料が生じます.
  2. 策略 水平線の定義は単純で,他の指標の検証がないため,誤った信号が生じる可能性があります.
  3. 市場が落ちるのを十分に利用できない.

戦略最適化の方向性

  1. 他の指標と組み合わせて水平線の有効性を確認できます.例えば,交差量の変化など,誤信号を減らすために.
  2. 振動的な状況では,水平線突破の幅を増やすことで取引の頻度を減らすことができます.
  3. 株式市場では,株価が上昇し,株価が上昇し,株価が上昇し,株価が上昇し,株価が上昇します.
  4. 地平線の長さや数量を動的に調整して,異なる状況に適応することを考慮することができる.

要約する

この戦略は,水平線を重要な支柱の抵抗点として,水平線を突破することで取引信号を生成する.利点は,論理が単純で,実行が容易で,トレンドをうまく捉えることができる点である.しかし,欠点は,過度取引が起こり,誤った信号を生成し,空白をすることができない点である点である.その後,他の指標を組み合わせ,取引頻度を減らす,空白メカニズムと動態調整パラメータを組み込むなどから最適化および改善することができる.

ストラテジーソースコード
/*backtest
start: 2023-04-20 00:00:00
end: 2024-04-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Traderxprox

//@version=5
strategy("Alarm Trader_ALL", overlay=true)

// Yatay çizgi oluşum
yatayc = low[1] > close[0]

if yatayc
    if strategy.opentrades > 0
        strategy.close("AL", comment = "Fiyat:" + str.tostring(low[1], "#.##") + "\n" + timeframe.period +"\n Yatay Direnç Oluştu")
    else
        strategy.entry("AL", strategy.long, comment = "Fiyat:" + str.tostring(low[1], "#.##") + "\n" + timeframe.period +"\n Yatay Direnç Oluştu")


//YATAY ÇİZGİ
int cizgilen = input.int(20, "Çizgi uzunluğu?", group = "Yatay Çizgi Ayarları")
var array<line> lines = array.new<line>()
int numberOfLines = input.int(10, "Son Kaç Çizgi?", 0, group = "Yatay Çizgi Ayarları")
kural22 = low[1] > close[0]
// if kural22
//     newLine = line.new(bar_index-2, low[1], bar_index+cizgilen, low[1] ,color=color.red, width=1, style=line.style_solid)
//     // Push the `newLine` into the `lines` array.
//     lines.push(newLine)
//     // Delete the oldest line when the size of the array exceeds the specified `numberOfLines`.
//     if array.size(lines) > numberOfLines
//         line.delete(lines.shift())
    
// Alarm kırılım için koşul

var float lastLinePrice = na
if not na(close) and array.size(lines) > 0 
    lastLinePrice := line.get_price(array.get(lines, array.size(lines) - 1), bar_index)
if open < lastLinePrice and close > lastLinePrice
    if strategy.opentrades > 0
        strategy.close("AL", comment = "Fiyat:" + str.tostring(lastLinePrice, "#.##") + "\n" + timeframe.period +" \n Yatay çizgi yukarı kırılımı")
    else
        strategy.entry("AL", strategy.long, comment = "Fiyat:" + str.tostring(lastLinePrice, "#.##") + "\n" + timeframe.period +" \n Yatay çizgi yukarı kırılımı")