コミュニティ 【MQL4】質問掲示板 ZigZagを活用した損切について

  • 作成者
    スレッド
  • #4331

    bovovossi
    Participant

    連投すいません。

    売りを入れている際に高値を更新したら損切。

    買いを入れている際は安値切り下げで損切。

    という機能を付けたいと思っています。

    現在はこのような形で行っています。

    //最高値を取得

    int highestBar = iHighest(Symbol(), timeFrame, MODE_HIGH, period_highlow, Start);

    double highest = iHigh(Symbol(), timeFrame, highestBar);

    //最安値を取得

    int lowestBar = iLowest(Symbol(), timeFrame, MODE_LOW,period_highlow,Start);

    double lowest = iLow(Symbol(), timeFrame, lowestBar);

    取得した最安値、最高値を超えた際に損切を入れています。

    しかし、レンジが長く続きローソク足どんどん更新されると思い通りの箇所で損切されません。

    そこでZigZagを活用して損切をすればよいのではと思いつきました。

    ネットでみつけたものなどを参考にしたりしていますが、なかなか上手くいきません。

    ご教授いただけないでしょうか。

    もし、ZigZag以外にもいい方法がございましたら教えていただけたら幸いです。

    よろしくお願いいたします。

  • ZigZagを活用した損切について

    bovovossi 更新済み 2 月 前 2 メンバー · 4 返信
  • TechTraders_Teacher

    管理者
    2022年9月13日 17:04

    zigzagはiZigzagなどの関数が用意されていないため、iCustom(NULL,0,”ZigZag”,12,5,3,0,0);

    のようにicustom関数で値を取得するようにすると良いです。

    またzigzagは山と谷の部分は実際の値が入りますが、それ以外の部分は0(NULL)が入っています。

    なので、onTick関数の初めに以下のようにして直近の山と谷を取得すれば条件に入れることができます

    double z1 = 0;

    double z2 = 0;

    double yama, tani;

    for (int i = 0; i < Bars -1; i++) {

    double zz = iCustom(NULL, 0, “ZigZag”, 12, 5, 3, 0, i);

    if(z1 == 0)z1 = zz;

    else {

    z2 = zz;

    break;

    }

    }

    if(z1 < z2){

    yama = z2;

    tani = z1;

    }

    else{

    yama = z1;

    tani = z2;

    }

  • bovovossi

    メンバー
    2022年9月15日 22:57

    ありがとうございます。

    根本的なところが理解できていないようで申し訳ありません。

    z1<z2はどういう状態なのでしょうか?

    • TechTraders_Teacher

      管理者
      2022年9月20日 21:17

      zigzagはバッファで山と谷の値を格納しています。例えば足の1つめにzigzagの山が、足の4つ目に谷があったとするとバッファには以下のように値が格納されています。

      0番目:NULL(0)

      1番目:123.45(山の値)

      2番目:NULL(0)

      3番目:NULL(0)

      4番目:123.22(谷の値)

      まずfor文を用いてバッファの0番目から値を取得していき、0ではない値をz1とz2に格納していきます。それだけではz1とz2がどちらが山でどちらが谷かが分からないため、z1<2と比較を行い、大きい方を変数yamaに、小さい方を変数taniに格納しています。

  • bovovossi

    メンバー
    2022年9月28日 09:30

    いつもありがとうございます!

    ようやく理解できました。

返信にはログインが必要です。

最初の投稿
00 投稿 2018年6月
現在