zigzagストラテジーをつくる⑥|ストラテジーを作成する1

업데이트됨
前回までのコードで、
上位足のZigZagではPivotの確定が遅く

・利益の上がるストラテジーはできない
・ZigZagの良さが活かされない
・フィボナッチの良さが活かされない

ということがわかりました。

"ZigZagやフィボナッチの良さ" とは、
"価格にダイレクトである" という点です。

テクニカルが算出した数値が
そのまま利確や損切りのラインになる。

多くのテクニカルは、
算出された値が実際の価格から乖離することが多く
エントリーやイグジットの判断が遅れることが多々あります。

今回のZigZagストラテジーに魅力を感じたのは、
そんなところもあったりします。

ということで、
諦めずにストラテジーの開発を続けます。

今回は、以下の調整を行っています。

・TradingView由来のZigZagに変更
・ZigZag描画のズレを調整(描画を後ろにズラしただけ)
・フィボナッチのリペイント機能を実装
・売買機能の調整
・同じチャートパターンで複数回エントリーしないように調整

売買に指値を使うように調整しました。
これも、"価格にダイレクト" を活かすためです。

次回は、あまりにも小さなZigZagである場合の
エントリーを制限する機能を実装する予定です。

その次は、取引量の調整をする機能ですね。
「損切り=資金の1%」となるようにしたいと思います。

今日のコードを以下に貼り付けておきます。

※ コピペする場合は以下の変更を行ってください
[](全角の角括弧)→(半角の角括弧)
(全角スペース)→(半角スペース)

=====
//version=4
// study("Zig Zag 勉強中", overlay=true)
strategy( title='ZigZag PA Strategy 勉強中', shorttitle='S', overlay=true, pyramiding=0, initial_capital=100000 )

dev_threshold = input( title="Deviation (%)", type=input.float, defval=0, minval=0, maxval=100 )
depth = input( title="Depth", type=input.integer, defval=6, minval=1, maxval=10 )

// pivotを算出する
pivots(src, length, isHigh) =>
 p = nz(src[length])

 if length == 0
  [bar_index, p]
 else
  isFound = true
  for i = 0 to length - 1
   if isHigh and src[i] > p
    isFound := false
   if not isHigh and src[i] < p
    isFound := false
  for i = length + 1 to 2 * length
   if isHigh and src[i] >= p
    isFound := false
   if not isHigh and src[i] <= p
    isFound := false
  
  if isFound and length * 2 <= bar_index
   [bar_index[length], p]
  else
   [int(na), float(na)]

[iH, pH] = pivots( high, floor(depth / 2), true )
[iL, pL] = pivots( low, floor(depth / 2), false )

// 変化率を算出する関数
calc_dev(base_price, price) =>
 100 * (price - base_price) / base_price

// 前回のpivotの情報を格納
var line lineLast = na  // lineのid (実際はidではなく識別している何か)
var float pLast = 0   // price
var bool isHighLast = true // High か Low か
var int linesCount = 0
var bool isNewPivot = false

// pivotを確認する関数
pivotFound(dev, isHigh, price) =>
 if linesCount == 0
  [line(na), isHigh, true]
 else
  if abs(dev) >= dev_threshold
   [line(na), isHigh, true]
  else
   [line(na), isHighLast, false]

// 描画処理
if not na(pH) and not na(pL) and pH == pL
 dev1 = calc_dev(pLast, pH)
 [id2, isHigh2, isNew2] = pivotFound(dev1, true, pH)
 if isNew2
  linesCount := linesCount + 1
  isHighLast := isHigh2
  isNewPivot := true
  pLast := pH
 dev2 = calc_dev(pLast, pL)
 [id1, isHigh1, isNew1] = pivotFound(dev2, false, pL)
 if isNew1
  linesCount := linesCount + 1
  isHighLast := isHigh1
  isNewPivot := true
  pLast := pL
else
 if not na(pH)
  dev1 = calc_dev(pLast, pH)
  [id, isHigh, isNew] = pivotFound(dev1, true, pH)
  if isNew
   linesCount := linesCount + 1
   isHighLast := isHigh
   isNewPivot := true
   pLast := pH
 else
  if not na(pL)
   dev2 = calc_dev(pLast, pL)
   [id, isHigh, isNew] = pivotFound(dev2, false, pL)
   if isNew
    linesCount := linesCount + 1
    isHighLast := isHigh
    isNewPivot := true
    pLast := pL

// 追加箇所
zigzag = pLast[1]!=pLast ? pLast : na
plot( zigzag ,color=color.red ,linewidth=3 ,title='zigzag' ,offset=-1*floor(depth / 2) )
bgcolor( isHighLast ? color.gray : color.white ,offset=-1*floor(depth / 2) )

// ジグザグが発生したときのジグザグの値を取得
float x = na
float a = na
float b = na
float c = na
float d = na

exist_zigzag = not na( zigzag ) and not isHighLast==isHighLast[1]
repaint = not na( zigzag ) and isHighLast==isHighLast[1]

x := exist_zigzag ? a[1] : x[1]
a := exist_zigzag ? b[1] : a[1]
b := exist_zigzag ? c[1] : b[1]
c := exist_zigzag ? d[1] : c[1]
d := exist_zigzag ? zigzag
: not repaint ? d[1]
:  isHighLast and pLast > pLast[1] ? zigzag
: not isHighLast and pLast < pLast[1] ? zigzag
: d[1]

showPatterns = input( true, title='Show Patterns' )
showFib0000 = input( title='Display Fibonacci 0.000:', type=input.bool, defval=true )
showFib0236 = input( title='Display Fibonacci 0.236:', type=input.bool, defval=true )
showFib0382 = input( title='Display Fibonacci 0.382:', type=input.bool, defval=true )
showFib0500 = input( title='Display Fibonacci 0.500:', type=input.bool, defval=true )
showFib0618 = input( title='Display Fibonacci 0.618:', type=input.bool, defval=true )
showFib0764 = input( title='Display Fibonacci 0.764:', type=input.bool, defval=true )
showFib1000 = input( title='Display Fibonacci 1.000:', type=input.bool, defval=true )

fib_range = abs(d-c)
fib_0000 = not showFib0000 ? na : d > c ? d - ( fib_range * 0.000 ) : d + ( fib_range * 0.000 )
fib_0236 = not showFib0236 ? na : d > c ? d - ( fib_range * 0.236 ) : d + ( fib_range * 0.236 )
fib_0382 = not showFib0382 ? na : d > c ? d - ( fib_range * 0.382 ) : d + ( fib_range * 0.382 )
fib_0500 = not showFib0500 ? na : d > c ? d - ( fib_range * 0.500 ) : d + ( fib_range * 0.500 )
fib_0618 = not showFib0618 ? na : d > c ? d - ( fib_range * 0.618 ) : d + ( fib_range * 0.618 )
fib_0764 = not showFib0764 ? na : d > c ? d - ( fib_range * 0.764 ) : d + ( fib_range * 0.764 )
fib_1000 = not showFib1000 ? na : d > c ? d - ( fib_range * 1.000 ) : d + ( fib_range * 1.000 )
plot( title='Fib 0.000', series=fib_0000 ,color=fib_0000 != fib_0000[1] ? na : color.black ,offset=-1*floor(depth / 2) )
plot( title='Fib 0.236', series=fib_0236 ,color=fib_0236 != fib_0236[1] ? na : color.red ,offset=-1*floor(depth / 2) )
plot( title='Fib 0.382', series=fib_0382 ,color=fib_0382 != fib_0382[1] ? na : color.olive ,offset=-1*floor(depth / 2) )
plot( title='Fib 0.500', series=fib_0500 ,color=fib_0500 != fib_0500[1] ? na : color.lime ,offset=-1*floor(depth / 2) )
plot( title='Fib 0.618', series=fib_0618 ,color=fib_0618 != fib_0618[1] ? na : color.teal ,offset=-1*floor(depth / 2) )
plot( title='Fib 0.764', series=fib_0764 ,color=fib_0764 != fib_0764[1] ? na : color.blue ,offset=-1*floor(depth / 2) )
plot( title='Fib 1.000', series=fib_1000 ,color=fib_1000 != fib_1000[1] ? na : color.black ,offset=-1*floor(depth / 2) )

xab = ( abs( b - a ) / abs( x - a ) )
xad = ( abs( a - d ) / abs( x - a ) )
abc = ( abs( b - c ) / abs( a - b ) )
bcd = ( abs( c - d ) / abs( b - c ) )

// 5つの点の比率からパターンを判断する関数
isBat(_mode)=>
 _xab = xab >= 0.382 and xab <= 0.5
 _abc = abc >= 0.382 and abc <= 0.886
 _bcd = bcd >= 1.618 and bcd <= 2.618
 _xad = xad <= 0.618 and xad <= 1.000 // 0.886
 _xab and _abc and _bcd and _xad and (_mode == 1 ? d < c : d > c)

isAntiBat(_mode)=>
 _xab = xab >= 0.500 and xab <= 0.886 // 0.618
 _abc = abc >= 1.000 and abc <= 2.618 // 1.13 --> 2.618
 _bcd = bcd >= 1.618 and bcd <= 2.618 // 2.0 --> 2.618
 _xad = xad >= 0.886 and xad <= 1.000 // 1.13
 _xab and _abc and _bcd and _xad and (_mode == 1 ? d < c : d > c)

isAltBat(_mode)=>
 _xab = xab <= 0.382
 _abc = abc >= 0.382 and abc <= 0.886
 _bcd = bcd >= 2.0 and bcd <= 3.618
 _xad = xad <= 1.13
 _xab and _abc and _bcd and _xad and (_mode == 1 ? d < c : d > c)

isButterfly(_mode)=>
 _xab = xab <= 0.786
 _abc = abc >= 0.382 and abc <= 0.886
 _bcd = bcd >= 1.618 and bcd <= 2.618
 _xad = xad >= 1.27 and xad <= 1.618
 _xab and _abc and _bcd and _xad and (_mode == 1 ? d < c : d > c)

isAntiButterfly(_mode)=>
 _xab = xab >= 0.236 and xab <= 0.886 // 0.382 - 0.618
 _abc = abc >= 1.130 and abc <= 2.618 // 1.130 - 2.618
 _bcd = bcd >= 1.000 and bcd <= 1.382 // 1.27
 _xad = xad >= 0.500 and xad <= 0.886 // 0.618 - 0.786
 _xab and _abc and _bcd and _xad and (_mode == 1 ? d < c : d > c)

isABCD(_mode)=>
 _abc = abc >= 0.382 and abc <= 0.886
 _bcd = bcd >= 1.13 and bcd <= 2.618
 _abc and _bcd and (_mode == 1 ? d < c : d > c)

isGartley(_mode)=>
 _xab = xab >= 0.5 and xab <= 0.618 // 0.618
 _abc = abc >= 0.382 and abc <= 0.886
 _bcd = bcd >= 1.13 and bcd <= 2.618
 _xad = xad >= 0.75 and xad <= 0.875 // 0.786
 _xab and _abc and _bcd and _xad and (_mode == 1 ? d < c : d > c)

isAntiGartley(_mode)=>
 _xab = xab >= 0.500 and xab <= 0.886 // 0.618 -> 0.786
 _abc = abc >= 1.000 and abc <= 2.618 // 1.130 -> 2.618
 _bcd = bcd >= 1.500 and bcd <= 5.000 // 1.618
 _xad = xad >= 1.000 and xad <= 5.000 // 1.272
 _xab and _abc and _bcd and _xad and (_mode == 1 ? d < c : d > c)

isCrab(_mode)=>
 _xab = xab >= 0.500 and xab <= 0.875 // 0.886
 _abc = abc >= 0.382 and abc <= 0.886 
 _bcd = bcd >= 2.000 and bcd <= 5.000 // 3.618
 _xad = xad >= 1.382 and xad <= 5.000 // 1.618
 _xab and _abc and _bcd and _xad and (_mode == 1 ? d < c : d > c)

isAntiCrab(_mode)=>
 _xab = xab >= 0.250 and xab <= 0.500 // 0.276 -> 0.446
 _abc = abc >= 1.130 and abc <= 2.618 // 1.130 -> 2.618
 _bcd = bcd >= 1.618 and bcd <= 2.618 // 1.618 -> 2.618
 _xad = xad >= 0.500 and xad <= 0.750 // 0.618
 _xab and _abc and _bcd and _xad and (_mode == 1 ? d < c : d > c)

isShark(_mode)=>
 _xab = xab >= 0.500 and xab <= 0.875 // 0.5 --> 0.886
 _abc = abc >= 1.130 and abc <= 1.618 //
 _bcd = bcd >= 1.270 and bcd <= 2.240 //
 _xad = xad >= 0.886 and xad <= 1.130 // 0.886 --> 1.13
 _xab and _abc and _bcd and _xad and (_mode == 1 ? d < c : d > c)

isAntiShark(_mode)=>
 _xab = xab >= 0.382 and xab <= 0.875 // 0.446 --> 0.618
 _abc = abc >= 0.500 and abc <= 1.000 // 0.618 --> 0.886
 _bcd = bcd >= 1.250 and bcd <= 2.618 // 1.618 --> 2.618
 _xad = xad >= 0.500 and xad <= 1.250 // 1.130 --> 1.130
 _xab and _abc and _bcd and _xad and (_mode == 1 ? d < c : d > c)

is5o(_mode)=>
 _xab = xab >= 1.13 and xab <= 1.618
 _abc = abc >= 1.618 and abc <= 2.24
 _bcd = bcd >= 0.5 and bcd <= 0.625 // 0.5
 _xad = xad >= 0.0 and xad <= 0.236 // negative?
 _xab and _abc and _bcd and _xad and (_mode == 1 ? d < c : d > c)

isWolf(_mode)=>
 _xab = xab >= 1.27 and xab <= 1.618
 _abc = abc >= 0 and abc <= 5
 _bcd = bcd >= 1.27 and bcd <= 1.618
 _xad = xad >= 0.0 and xad <= 5
 _xab and _abc and _bcd and _xad and (_mode == 1 ? d < c : d > c)

isHnS(_mode)=>
 _xab = xab >= 2.0 and xab <= 10
 _abc = abc >= 0.90 and abc <= 1.1
 _bcd = bcd >= 0.236 and bcd <= 0.88
 _xad = xad >= 0.90 and xad <= 1.1
 _xab and _abc and _bcd and _xad and (_mode == 1 ? d < c : d > c)

isConTria(_mode)=>
 _xab = xab >= 0.382 and xab <= 0.618
 _abc = abc >= 0.382 and abc <= 0.618
 _bcd = bcd >= 0.382 and bcd <= 0.618
 _xad = xad >= 0.236 and xad <= 0.764
 _xab and _abc and _bcd and _xad and (_mode == 1 ? d < c : d > c)

isExpTria(_mode)=>
 _xab = xab >= 1.236 and xab <= 1.618
 _abc = abc >= 1.000 and abc <= 1.618
 _bcd = bcd >= 1.236 and bcd <= 2.000
 _xad = xad >= 2.000 and xad <= 2.236
 _xab and _abc and _bcd and _xad and (_mode == 1 ? d < c : d > c)

// 売りパターンが出現したところに印を表示
plotshape( not showPatterns ? na : isABCD(-1) and not isABCD(-1)[1], text="\nAB=CD", title='Bear ABCD', style=shape.labeldown, color=color.maroon, textcolor=color.white, location=location.top, transp=0, offset=-2 )
plotshape( not showPatterns ? na : isBat(-1) and not isBat(-1)[1], text="Bat", title='Bear Bat', style=shape.labeldown, color=color.maroon, textcolor=color.white, location=location.top, transp=0, offset=-2 )
plotshape( not showPatterns ? na : isAntiBat(-1) and not isAntiBat(-1)[1], text="Anti Bat", title='Bear Anti Bat', style=shape.labeldown, color=color.maroon, textcolor=color.white, location=location.top, transp=0, offset=-2 )
plotshape( not showPatterns ? na : isAltBat(-1) and not isAltBat(-1)[1], text="Alt Bat", title='Bear Alt Bat', style=shape.labeldown, color=color.maroon, textcolor=color.white, location=location.top, transp=0 )
plotshape( not showPatterns ? na : isButterfly(-1) and not isButterfly(-1)[1], text="Butterfly", title='Bear Butterfly', style=shape.labeldown, color=color.maroon, textcolor=color.white, location=location.top, transp=0 )
plotshape( not showPatterns ? na : isAntiButterfly(-1) and not isAntiButterfly(-1)[1], text="Anti Butterfly", title='Bear Anti Butterfly', style=shape.labeldown, color=color.maroon, textcolor=color.white, location=location.top, transp=0 )
plotshape( not showPatterns ? na : isGartley(-1) and not isGartley(-1)[1], text="Gartley", title='Bear Gartley', style=shape.labeldown, color=color.maroon, textcolor=color.white, location=location.top, transp=0 )
plotshape( not showPatterns ? na : isAntiGartley(-1) and not isAntiGartley(-1)[1], text="Anti Gartley", title='Bear Anti Gartley', style=shape.labeldown, color=color.maroon, textcolor=color.white, location=location.top, transp=0 )
plotshape( not showPatterns ? na : isCrab(-1) and not isCrab(-1)[1], text="Crab", title='Bear Crab', style=shape.labeldown, color=color.maroon, textcolor=color.white, location=location.top, transp=0 )
plotshape( not showPatterns ? na : isAntiCrab(-1) and not isAntiCrab(-1)[1], text="Anti Crab", title='Bear Anti Crab', style=shape.labeldown, color=color.maroon, textcolor=color.white, location=location.top, transp=0 )
plotshape( not showPatterns ? na : isShark(-1) and not isShark(-1)[1], text="Shark", title='Bear Shark', style=shape.labeldown, color=color.maroon, textcolor=color.white, location=location.top, transp=0 )
plotshape( not showPatterns ? na : isAntiShark(-1) and not isAntiShark(-1)[1], text="Anti Shark", title='Bear Anti Shark', style=shape.labeldown, color=color.maroon, textcolor=color.white, location=location.top, transp=0 )
plotshape( not showPatterns ? na : is5o(-1) and not is5o(-1)[1], text="5-O", title='Bear 5-O', style=shape.labeldown, color=color.maroon, textcolor=color.white, location=location.top, transp=0 )
plotshape( not showPatterns ? na : isWolf(-1) and not isWolf(-1)[1], text="Wolf Wave", title='Bear Wolf Wave', style=shape.labeldown, color=color.maroon, textcolor=color.white, location=location.top, transp=0 )
plotshape( not showPatterns ? na : isHnS(-1) and not isHnS(-1)[1], text="Head and Shoulders", title='Bear Head and Shoulders', style=shape.labeldown, color=color.maroon, textcolor=color.white, location=location.top, transp=0 )
plotshape( not showPatterns ? na : isConTria(-1) and not isConTria(-1)[1], text="Contracting Triangle", title='Bear Contracting triangle', style=shape.labeldown, color=color.maroon, textcolor=color.white, location=location.top, transp=0 )
plotshape( not showPatterns ? na : isExpTria(-1) and not isExpTria(-1)[1], text="Expanding Triangle", title='Bear Expanding Triangle', style=shape.labeldown, color=color.maroon, textcolor=color.white, location=location.top, transp=0 )

// 買いパターンが出現したところに印を表示
plotshape( not showPatterns ? na : isABCD(1) and not isABCD(1)[1], text="AB=CD\n", title='Bull ABCD', style=shape.labelup, color=color.green, textcolor=color.white, location=location.bottom, transp=0 )
plotshape( not showPatterns ? na : isBat(1) and not isBat(1)[1], text="Bat", title='Bull Bat', style=shape.labelup, color=color.green, textcolor=color.white, location=location.bottom, transp=0 )
plotshape( not showPatterns ? na : isAntiBat(1) and not isAntiBat(1)[1], text="Anti Bat", title='Bull Anti Bat', style=shape.labelup, color=color.green, textcolor=color.white, location=location.bottom, transp=0 )
plotshape( not showPatterns ? na : isAltBat(1) and not isAltBat(1)[1], text="Alt Bat", title='Bull Alt Bat', style=shape.labelup, color=color.green, textcolor=color.white, location=location.bottom, transp=0 )
plotshape( not showPatterns ? na : isButterfly(1) and not isButterfly(1)[1], text="Butterfly", title='Bull Butterfly', style=shape.labelup, color=color.green, textcolor=color.white, location=location.bottom, transp=0 )
plotshape( not showPatterns ? na : isAntiButterfly(1) and not isAntiButterfly(1)[1], text="Anti Butterfly", title='Bull Anti Butterfly', style=shape.labelup, color=color.green, textcolor=color.white, location=location.bottom, transp=0 )
plotshape( not showPatterns ? na : isGartley(1) and not isGartley(1)[1], text="Gartley", title='Bull Gartley', style=shape.labelup, color=color.green, textcolor=color.white, location=location.bottom, transp=0 )
plotshape( not showPatterns ? na : isAntiGartley(1) and not isAntiGartley(1)[1], text="Anti Gartley", title='Bull Anti Gartley', style=shape.labelup, color=color.green, textcolor=color.white, location=location.bottom, transp=0 )
plotshape( not showPatterns ? na : isCrab(1) and not isCrab(1)[1], text="Crab", title='Bull Crab', style=shape.labelup, color=color.green, textcolor=color.white, location=location.bottom, transp=0 )
plotshape( not showPatterns ? na : isAntiCrab(1) and not isAntiCrab(1)[1], text="Anti Crab", title='Bull Anti Crab', style=shape.labelup, color=color.green, textcolor=color.white, location=location.bottom, transp=0 )
plotshape( not showPatterns ? na : isShark(1) and not isShark(1)[1], text="Shark", title='Bull Shark', style=shape.labelup, color=color.green, textcolor=color.white, location=location.bottom, transp=0 )
plotshape( not showPatterns ? na : isAntiShark(1) and not isAntiShark(1)[1], text="Anti Shark", title='Bull Anti Shark', style=shape.labelup, color=color.green, textcolor=color.white, location=location.bottom, transp=0 )
plotshape( not showPatterns ? na : is5o(1) and not is5o(1)[1], text="5-O", title='Bull 5-O', style=shape.labelup, color=color.green, textcolor=color.white, location=location.bottom, transp=0 )
plotshape( not showPatterns ? na : isWolf(1) and not isWolf(1)[1], text="Wolf Wave", title='Bull Wolf Wave', style=shape.labelup, color=color.green, textcolor=color.white, location=location.bottom, transp=0 )
plotshape( not showPatterns ? na : isHnS(1) and not isHnS(1)[1], text="Head and Shoulders", title='Bull Head and Shoulders', style=shape.labelup, color=color.green, textcolor=color.white, location=location.bottom, transp=0 )
plotshape( not showPatterns ? na : isConTria(1) and not isConTria(1)[1], text="Contracting Triangle", title='Bull Contracting Triangle', style=shape.labelup, color=color.green, textcolor=color.white, location=location.bottom, transp=0 )
plotshape( not showPatterns ? na : isExpTria(1) and not isExpTria(1)[1], text="Expanding Triangle", title='Bull Expanding Triangle', style=shape.labelup, color=color.green, textcolor=color.white, location=location.bottom, transp=0 )

//
// 売買のロジック
////

float amount = na

//「fib_rangeに対する指定された比率の幅」を返す関数
f_last_fib( _rate ) => d > c ? d - ( fib_range * _rate ) : d + ( fib_range * _rate )

target01_ew_rate = input( defval=0.236 ,title='Target Fib. Rate to use for Entry Window:', type=input.float )
target01_tp_rate = input( defval=0.5 ,title='Target Fib. Rate to use for TP:', type=input.float )
target01_sl_rate = input( defval=-0.618 ,title='Target Fib. Rate to use for SL:', type=input.float )
target01_ew = f_last_fib( target01_ew_rate )
target01_sl = f_last_fib( target01_sl_rate )

buy_patterns_00 = isABCD(1) or isBat(1) or isAltBat(1) or isButterfly(1) or isGartley(1) or isCrab(1) or isShark(1) or is5o(1) or isWolf(1) or isHnS(1) or isConTria(1) or isExpTria(1)
buy_patterns_01 = isAntiBat(1) or isAntiButterfly(1) or isAntiGartley(1) or isAntiCrab(1) or isAntiShark(1)

sel_patterns_00 = isABCD(-1) or isBat(-1) or isAltBat(-1) or isButterfly(-1) or isGartley(-1) or isCrab(-1) or isShark(-1) or is5o(-1) or isWolf(-1) or isHnS(-1) or isConTria(-1) or isExpTria(-1)
sel_patterns_01 = isAntiBat(-1) or isAntiButterfly(-1) or isAntiGartley(-1) or isAntiCrab(-1) or isAntiShark(-1)

if isNewPivot and ( buy_patterns_00 or buy_patterns_01 ) and close <= target01_ew
 strategy.entry( 'L1_target01', long=strategy.long, qty=amount, comment='L1' )
 strategy.exit( "exit-L1" ,"L1_target01" ,stop=target01_sl ,limit=f_last_fib( target01_tp_rate ) ,comment="exit-L1" )
 isNewPivot := false

if isNewPivot and ( sel_patterns_00 or sel_patterns_01 ) and close >= target01_ew
 strategy.entry( 'S1_target01', long=strategy.short, qty=amount, comment='S1' )
 strategy.exit( "exit-S1" ,"S1_target01" ,stop=target01_sl ,limit=f_last_fib( target01_tp_rate ) ,comment="exit-S1" )
 isNewPivot := false
=====
노트
次の投稿
教育 zigzagストラテジーをつくる⑦|ストラテジーを作成する2
Beyond Technical AnalysispinescriptZigzag

小次郎講師公式インジケーターのお申込
bit.ly/2vdSV4Q

小次郎講師のLINE@
bit.ly/2VZQFu3

小次郎講師のチャート情報局
bit.ly/2GvLAEp
또한 다음에서도: