Wizard In The Market
システムトレードの魔術師

*

High_Low v2 (ZigZag)のバーが出るタイミング

公開日: : 最終更新日:2015/01/13 その他

こんばんは!キリンです。
今ドラマ見てたら良いセリフ聞きました。
単調な仕事をする町工場に社員として働き出した新社会人
先輩社員からこう言われます。
「周り見てて、こういう大人(町工場の大人たち)になるんだなって思ってたんだろう?」
「誰だってそう思うときがあるさ」
「安定した生活が一番さ」
「いや、違うな。ただ身ひとつでチャレンジするのが怖かっただけだ」
その後、もどかしさを感じた主人公は、辞表を提出しました。
「自分にあった仕事やりたくて・・・でも何があってるか分からないんですよね」
帝王ってドラマです・・・。
この主人公は色々あって「ホスト」になるみたいです。
このドラマを見てしまってた理由なのですが、なによりセリフがいいです。
その人のモチーフになった人が書いた本がこちら。
帝王の書/輝咲 翔

¥1,050
Amazon.co.jp
読んでみたいなぁと思った次第。
さっき買ってみました。
何もできなかった主人公が全力でホストの仕事に取り組んで成功していく本だそうです。
「ぜってー負けねぇ。」
なんかドラマ見てしまいそうです。
「帝王」がホストなら、「ミナミの帝王」もホストなんですかね・・・?
前書きが長くなっちゃいましたね。

いつも参考にさせてもらってます。
少し迷っていることがありまして
http://www.abysse.co.jp/mt4/indicators/High_Low%20v2%20(ZigZag)2.mq4
このラインの出るタイミングを解析中なのですがなかなかわかりません、ご指導お願いします。

というコメントを頂いたので、早速確認してみました。
1.バッファの確認
こういうときにまず確認するのが、
実際にグラフに表示される配列が何なのかを調べます。
今回のプログラムで言うと
SetIndexBuffer(0,ExtMapBuffer1);
この部分ですね。
2.バッファの計算をたどる
1でグラフに当てられた配列がExtMapBuffer1であることが分かりました。
その計算を追っていきます。
ExtMapBuffer1[mv]=Uzel[i][2];
こんな計算式が見つかりました。
どうやらこのグラフの計算するときの肝は
Uzel[i][2]
のようです。
次はUzelをたどっていきましょう。
if (Swing!=Swing_n && Swing_n!=0) {
if (Swing==2) {
Swing=-Swing_n;BH = High[shift];BL = Low[shift];
}
uzl=uzl+1;
if (Swing==1) {
Uzel[uzl][1]=zd;
Uzel[uzl][2]=BL;
}
if (Swing==-1) {
Uzel[uzl][1]=zu;
Uzel[uzl][2]=BH;
}
BH = High[shift];
BL = Low[shift];
}
ここでUzelに値が割り当てられてます。
ifの中でSwingという変数が頻出しています。
多分プログラムの肝なのでしょう。
さらにUzel割り当てられているものをたどると、

zd, BL
zu, BH

このあたりが重要なようです。
それに着目してみていきます。

if (Low[shift] < LL && High[shift] > HH){
Swing=2;
if (Swing_n==1) {zu=shift+1;}
if (Swing_n==-1) {zd=shift+1;}
} else {
if (Low[shift] < LL) {Swing=-1;}
if (High[shift]>HH) {Swing=1;}
}

ここ重要です。
この部分が主要ロジック部ですね
for (i=shift+Length;i > =shift+1;i–) {
if (Low[i]< LL) {LL=Low[i];}
if (High[i]>HH) {HH=High[i];}
}
LLとHHというのはここの計算で、Lengthの期間の最安値最高値を求めたその結果です。
さらに、LLやHHが更新されなければそのままの値をキープします。
それを踏まえたうえで見ていきましょう。
if (Low[shift] < LL && High[shift]>HH){
Swing=2;
if (Swing_n==1) {zu=shift+1;}
if (Swing_n==-1) {zd=shift+1;}
} else {
if (Low[shift]<ll) {Swing=-1;}
if (High[shift]>HH) {Swing=1;}
}
この部分で安値・高値の更新があったかを確認しています。
高値の更新があった場合は、Swingの値を1, -1, 2にして、
Swing_nの値によって、zuとzdの値を定め、
if (Swing!=Swing_n && Swing_n!=0) {
if (Swing==2) {
Swing=-Swing_n;BH = High[shift];BL = Low[shift];
}
uzl=uzl+1;
if (Swing==1) {
Uzel[uzl][1]=zd;
Uzel[uzl][2]=BL;
}
if (Swing==-1) {
Uzel[uzl][1]=zu;
Uzel[uzl][2]=BH;
}
BH = High[shift];
BL = Low[shift];
}
この条件文でBLとBHに値を割り振ります。
(Swing==2のif分の中でのBLとBHの計算いらないと思うんだよなぁ…)
これが実際にグラフを描写しているところ。
さて、次。
高値・安値が更新されたSwing==1,-1,2のときにBHやBLの値が変わるのは分かりました。
ここで気をつけていただきたいのが、Swing!=Swing_nのときのみ、
Uzelに値が割り振られているという点です。
Swing_nというのは、ひとつ前のローソク足でのSwingなので、
Swingの向きが変わったときのみ描写するということですね。
これが質問してくださった方への回答となります。
さらに続けます。
このプログラムの分かりにくいところは、
for文の中でそれぞれのローソク足のグラフの値を計算している点ではないところですね。
Uzel[uzl][1]=zd;
Uzel[uzl][2]=BL;
zdがローソク足の場所を表し、BLがそのローソク足のグラフの値をあらわします。
if (Low[shift] < LL && High[shift]>HH){
Swing=2;
if (Swing_n==1) {zu=shift+1;}
if (Swing_n==-1) {zd=shift+1;}
} else {
if (Low[shift]<ll) {Swing=-1;}
if (High[shift]>HH) {Swing=1;}
}
ここのelse分でSwingの値が割り振られ、Swingの値によって計算を進めていきます。
なんかここも分かりにくい・・・
if (Swing==1) {
if (High[shift]>=BH) {BH=High[shift];zu=shift;}}
if (Swing==-1) {
if (Low[shift] < =BL) {BL=Low[shift]; zd=shift;}}
Swing_n=Swing;
}
ここの文章なんですけど、分かりやすく書くと
if (Swing==1) {
  if (High[shift]>=BH) {
    BH=High[shift];zu=shift;
  }
}
if (Swing==-1) {
  if (Low[shift] < =BL) {
    BL=Low[shift]; zd=shift;
  }
}
こうですね。
ここでSwingの値によってBHとBLの値が割り振られます。
Swing_n=Swingという式がfor文の最後にあることから、
Swingの値をフィードバックさせているみたいですね。
そして、
if (Swing!=Swing_n && Swing_n!=0) {
ここで、Swingの値に変化があったときにだけ、グラフを書くようにする・・・
すっごく要約します。
読むのここだけでいいかもしれません。

Lengthの期間の間で高値・安値の更新が確認されたときに、
Swing!=Swing_nになっていれば新しい線を引きます。
同一方向への更新のみ(Swing==Swing_n)であれば、
ひとつ前の点を削除し上書きさせ、Swing!=Swing_nになるまで待ちます。
最後までお読みくださりありがとうございます。
頑張って書いてきましたが、かなり難しい内容に仕上がってしまいました。
精進します・・・。

にほんブログ村 為替ブログへ 
Fx-Kirin

About Fx-Kirin

2009年10月にFXを開始、翌年2010年5月から脱サラをしてFX業界に専念。 2012年10月頃から本格的に勝ち始め、一月で資産を倍にする、2年半月間負けなし等、安定した収支で2013年11月に生涯FX収支が1億を超える。 投資スタイルはシステムトレード。プログラミングの知識がほぼない状態から、独学で自分がしたいと思うことであればほぼ実現することが可能なレベルまで成長。好きな言語はRuby, Python。必要となればC++からVBA、Pascal等なんでも行う。MT4/MT5のプログラミングも得意。 2011年にはFXで稼いだ資金をもとにシンガポールに移住し、留学も兼ねて起業をチャレンジするほど、ビジネスを興すことに熱意がある。国内の業者を主に使い始めたことから、2012年に帰国。零細株式会社経営中。

Adsense

  • このエントリーをはてなブックマークに追加
  • Pocket
  • 57 follow us in feedly

関連記事

no image

11/2運用履歴

<colgroup> </colgroup>バイナリオプション日付曜日取

記事を読む

no image

【default.tpl】劇的☆Before After ・・・MT4チャートの初期設定を保存

おはようございます。キリンです。 今日は匠の技を紹介したいと思います。 MT4の標準状態でのチャートって、 蛍光色の緑と

記事を読む

no image

EAで取得したポジションの手動決済の際の注意

こんばんは。キリンです。 私どものEAに限らず、EAによるポジションを手動で決済すると 即別の注文が入ってしまうことが多

記事を読む

no image

感謝の気持ち。(アメンバ限定で申し訳ないです^^;)

こんばんは。キリンです。 優さんからすごく嬉しいメッセージをいただいたので、ご紹介させていただければと思います。 非常に

記事を読む

no image

ドル円が82円切りましたね。

【訂正】ドル円は81円82円切りましたね おはようございます。キリンです。 TradeTester、初めてのご寄付をいた

記事を読む

no image

11/13, 14 運用結果

<colgroup> </colgroup>バイナリオプション日付曜日取

記事を読む

no image

四角で囲った範囲の別時間足のローソク足を表示させる

こんばんは。キリンです。 MQLのコードベースを巡っていて面白いと思うインジケータがあったのでご紹介。 Zo

記事を読む

no image

FXとは?

今日から、初心者のためのFX講座を始めようと思います。 さっそく「FXとは?」についてです。 外国為替証拠金市場 それが

記事を読む

no image

世紀の空売り ~The Big Short~

このタイトルが大好きです! こんばんは。タイトルだけで興奮することの出来るキリンです。 ちなみに何の話かというと、この本

記事を読む

no image

VPS上で複数ログインしてしまう場合の注意

こんばんは。キリンです。 EAの運用の際、VPSを用いてらっしゃる方は多いと思います。 FTLでもVPSの運用をお勧めし

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Adsense

システムトレードを始める前に知っておきたかったこと

今日の勉強会で発表してきました。nbviewer に共有しておきます。 システムトレードを始め

chmod で やらかしてしまったときの対処法

メモ書きです。 find | xargs とかを普通にやってしまうと、すぐに argument

AMD Ryzen & Nvidia GTX 1080 BTO PC 構成・組立と Ubuntu インストール

まだググっても、構成例とか出てないので参考になるんじゃないかなと。機械学習用ですが、全然ゲーム用

Windows のデスクトップアプリをSSHクライアントから再起動する

シェルスプリクト一発で、システムトレードの設定を一括で更新して、MT4を再起動したいとかそういう

UX21A のディスプレイが壊れたので修理

UX21A のディスプレイがぶっ壊れた。 画面にラインが入ったり、ディスプレイが揺れたりするよ

→もっと見る

PAGE TOP ↑