トレンドキャプチャ戦略と水平線突破

作者: リン・ハーンチャオチャン,日付: 2024-04-26 15:22:06
タグ:

img

概要

この戦略は,水平線をサポートとレジスタンスレベルとして使用し,価格がこれらのラインを突破すると取引信号を生成する.主なアイデアは:まず,特定の条件に基づいて水平線を画し,価格がラインを突破するとロング,価格がラインを下に突破するとポジションを閉じる.同時に,前回のキャンドルの低価格が現在の閉値よりも大きいなどの水平線を生成するための対応条件があります.

戦略原則

  1. 前回のキャンドルの低価格が現在の閉店価格より大きいという条件に基づいて,前回のキャンドルの低価格で 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ı")



もっと