ピークツーピークパターンに基づく取引戦略


作成日: 2024-02-20 15:40:58 最終変更日: 2024-02-20 15:40:58
コピー: 0 クリック数: 629
1
フォロー
1617
フォロワー

ピークツーピークパターンに基づく取引戦略

概要

この策略は,ピーク・ピーク形状に基づく取引策略と呼ばれる,主にK線のピーク・ピーク形状を利用して,購入と売却のタイミングを決定する.この策略は,技術分析類の策略である.

戦略原則

この策略は,K線図のピークピーク形状を,上昇ピーク (upFractal) と下降ピーク (downFractal) を定義することによって判断する.

具体的には,上昇ピークの判定論理は,現在のK線の高点は,最近のn根K線の最高点であり,その後のK線高点は,現在のK線の高点を超えてはならないというものである.

下降ピークの判定論理は,現在のK線の低点は,最近のn根K線の最低点であり,その後のK線の低点は,現在のK線の低点より低いものではない.

ここで,ブル変数と循環によって前根と後根のK線と現在のK線の高低点の関係を判断し,最終的に上昇ピークと下降ピークを決定する.

この戦略の核となる論理は,

  1. 上昇ピークと低下ピークを判断する
  2. ピークが上がると多めに,ピークが下がると空っぽに

優位分析

この戦略の利点は以下の通りです.

  1. ピーク・ピークの形状は 認識し操作が簡単です
  2. テクノロジーを活用し,基本面に影響を及ぼさない
  3. 撤回する確率は低い

リスク分析

この戦略にはいくつかのリスクがあります.

  1. ピンク・ピークの形状判断は不正確で,最高の入場時間を逃したかもしれない.
  2. 状況が急激に変化する時には,ストップダメージを決定するのは難しいかもしれません.
  3. 形に依り,他の要素を無視する.

対策として

  1. ピークピーク形状のパラメータを調整し,判断論理を最適化
  2. 他の指標と組み合わせたストップポジションの決定
  3. 基本的分析または他の戦略と組み合わせる

最適化の方向

この戦略は以下の方向から最適化できます.

  1. パラメータの調整スペースを追加し,ピークピーク形状判断を最適化
  2. ストップダストロジック
  3. 取引量や変動率などの他の指標を考慮する
  4. 異なる時間周期の分析を組み合わせる

要約する

この戦略は,ピークピーク形状原理に基づいて,操作が簡単で,撤回は小さい可能性がある.しかし,ある程度のリスクも存在し,他の分析方法と組み合わせて使用する必要がある.最大限の効果を発揮するには.次のステップは,判断精度,止損,指標最適化などの面で改善されるであろう.

ストラテジーソースコード
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("sanju parmar", shorttitle="sanju trading empire", overlay=true)

// Define "n" as the number of periods and keep a minimum value of 2 for error handling.
n = input.int(title="Periods", defval=2, minval=2)

// UpFractal
bool upflagDownFrontier = true
bool upflagUpFrontier0 = true
bool upflagUpFrontier1 = true
bool upflagUpFrontier2 = true
bool upflagUpFrontier3 = true
bool upflagUpFrontier4 = true

for i = 1 to n
    upflagDownFrontier := upflagDownFrontier and (high[n-i] < high[n])
    upflagUpFrontier0 := upflagUpFrontier0 and (high[n+i] < high[n])
    upflagUpFrontier1 := upflagUpFrontier1 and (high[n+1] <= high[n] and high[n+i + 1] < high[n])
    upflagUpFrontier2 := upflagUpFrontier2 and (high[n+1] <= high[n] and high[n+2] <= high[n] and high[n+i + 2] < high[n])
    upflagUpFrontier3 := upflagUpFrontier3 and (high[n+1] <= high[n] and high[n+2] <= high[n] and high[n+3] <= high[n] and high[n+i + 3] < high[n])
    upflagUpFrontier4 := upflagUpFrontier4 and (high[n+1] <= high[n] and high[n+2] <= high[n] and high[n+3] <= high[n] and high[n+4] <= high[n] and high[n+i + 4] < high[n])
flagUpFrontier = upflagUpFrontier0 or upflagUpFrontier1 or upflagUpFrontier2 or upflagUpFrontier3 or upflagUpFrontier4

upFractal = (upflagDownFrontier and flagUpFrontier)


// downFractal
bool downflagDownFrontier = true
bool downflagUpFrontier0 = true
bool downflagUpFrontier1 = true
bool downflagUpFrontier2 = true
bool downflagUpFrontier3 = true
bool downflagUpFrontier4 = true

for i = 1 to n
    downflagDownFrontier := downflagDownFrontier and (low[n-i] > low[n])
    downflagUpFrontier0 := downflagUpFrontier0 and (low[n+i] > low[n])
    downflagUpFrontier1 := downflagUpFrontier1 and (low[n+1] >= low[n] and low[n+i + 1] > low[n])
    downflagUpFrontier2 := downflagUpFrontier2 and (low[n+1] >= low[n] and low[n+2] >= low[n] and low[n+i + 2] > low[n])
    downflagUpFrontier3 := downflagUpFrontier3 and (low[n+1] >= low[n] and low[n+2] >= low[n] and low[n+3] >= low[n] and low[n+i + 3] > low[n])
    downflagUpFrontier4 := downflagUpFrontier4 and (low[n+1] >= low[n] and low[n+2] >= low[n] and low[n+3] >= low[n] and low[n+4] >= low[n] and low[n+i + 4] > low[n])
flagDownFrontier = downflagUpFrontier0 or downflagUpFrontier1 or downflagUpFrontier2 or downflagUpFrontier3 or downflagUpFrontier4

downFractal = (downflagDownFrontier and flagDownFrontier)

plotshape(downFractal, style=shape.triangleup, location=location.belowbar, offset=-n, color=#18f523, size = size.small)
plotshape(upFractal, style=shape.triangledown, location=location.abovebar, offset=-n, color=#cf3d11, size = size.small)

// Strategy Conditions
longCondition = upFractal
shortCondition = downFractal

// Strategy Entry and Exit
if (longCondition)
    strategy.entry("Buy", strategy.long)
if (shortCondition)
    strategy.entry("Sell", strategy.short)