Lowest関数とHighest関数が返すもの - ページ 5 1234567 新しいコメント Forex Trader 2006.10.20 09:16 #41 Candid もう大丈夫です。 Klot、面白いオプションですね。 ジグザグのバリエーションが興味深い結果を示した場合、私の開発で適用することは可能ですか? もちろんできますよ。私は興味深くこの開発を追っていますし、あなたの作品がとても好きです。 Forex Trader 2006.10.20 09:19 #42 ありがとうございます。 Forex Trader 2006.10.20 15:03 #43 2ねん。 オプション」に関しても。現在、エクストリームスイッチングの条件の1つは、現在のローが現在のローよりExtDeviationポイント以上高いことです(ハイについても同様)。必要であれば、他のオプションも簡単に実装できるコードになっています。 さて、klot さんに続いて、私が今、ジグザグに興味を持っているのは、ひとえに先生のデザインに興味を持ったからだということを付け加えておきたいと思います。 Forex Trader 2006.10.21 09:50 #44 ソースコードを再度修正しました。昨日、分単位で最初の有効なバーのルールが尊重されないことがあることがわかりました。それを確認するために、1時間半しかオンライン時間がなかったのですが、2倍と0倍を比較すればいいということだったようです。 Forex Trader 2006.10.23 22:43 #45 もう一つのバグ:Extremesはバーの終端でしか切り替えられないので、そうしないとリアルタイムとヒストリーに差異が生じる。修理は難しくありません。まだブランチのソースコードは修正していません。新しいバージョンは分単位で実行させてください。 Forex Trader 2006.10.24 11:52 #46 キャンディッド、ZUPインジケーターの45バージョンを作りましたhttp://onix-trade.net/forum/index.php?s=&showtopic=118&view=findpost&p=117997 ジグザグを外付けジグザグとして収録しました。安定的に動作するバージョンが登場したら、すぐに変更します。 Forex Trader 2006.10.24 21:52 #47 今のところ問題はないようです。以下は修正版のコードです。 //+------------------------------------------------------------------+ //| CZigZag.mq4 | //| Copyright © 2006, Candid | //| likh@yandex.ru | //+------------------------------------------------------------------+ #property copyright "Copyright © 2006, Candid" #property link "likh@yandex.ru" #property indicator_chart_window #property indicator_buffers 1 #property indicator_color1 Navy //---- indicator parameters extern int ExtDepth=12; extern int ExtDeviation=5; //extern int ExtBackstep=3; int shift; double res=0; int i; double CurMax,CurMin; int CurMaxPos,CurMinPos; int CurMaxBar,CurMinBar; double hPoint; double mhPoint; double EDev; int MaxDist,MinDist; bool FirstRun; bool AfterMax,AfterMin; int BarTime; //---- indicator buffers double ZigZag[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_SECTION); //---- indicator buffers mapping SetIndexBuffer(0,ZigZag); SetIndexEmptyValue(0,0.0); //---- indicator short name IndicatorShortName("ZigZag("+ExtDepth+","+ExtDeviation+")"); FirstRun = true; //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(); int fBar; if (FirstRun) { hPoint = 0.5*Point; mhPoint = -hPoint; EDev = (ExtDeviation+0.5)*Point; AfterMax = true; AfterMin = true; fBar = Bars-1; CurMax = High[fBar]; CurMaxBar = 1; CurMin = Low[fBar]; CurMinBar = 1; MaxDist = 0; MinDist = 0; BarTime = 0; FirstRun = false; } //---- fBar = Bars-counted_bars-1; if (fBar > Bars-2) fBar = Bars-2; for(shift=fBar; shift>=0; shift--) { if (BarTime!=Time[shift]) { BarTime=Time[shift]; if (res > hPoint ) { MaxDist = Bars-CurMaxBar-shift+1; MinDist = Bars-CurMinBar-shift+1; if ((MaxDist>ExtDepth && MinDist>ExtDepth) || res > EDev) { if (AfterMax) { AfterMax = false; AfterMin = true; CurMaxBar = CurMinBar+1; CurMaxPos = Bars-CurMaxBar; CurMax = High[CurMaxPos]; for (i=CurMaxPos-1;i>=shift;i--) { if (High[i] > CurMax+hPoint) { CurMaxBar = Bars-i; CurMax = High[i]; } } // for (i=CurMaxPos-1;i>=shift;i--) ZigZag[Bars-CurMaxBar] = CurMax; } else { // if (AfterMax) AfterMin = false; AfterMax = true; CurMinBar = CurMaxBar+1; CurMinPos = Bars-CurMinBar; CurMin = Low[CurMinPos]; for (i=CurMinPos-1;i>=shift;i--) { if (Low[i] < CurMin-hPoint) { CurMinBar = Bars-i; CurMin = Low[i]; } } // for (i=CurMinPos-1;i>=shift;i--) ZigZag[Bars-CurMinBar] = CurMin; } // else if (AfterMax) } // if ((MaxDist>ExtDepth && MinDist>ExtDepth) || res > EDev) } // if (res > hPoint ) } // if (BarTime!=Time[0]) if (AfterMax) { res = Low[shift]-CurMin; if (res < mhPoint) { ZigZag[Bars-CurMinBar] = 0; CurMin = Low[shift]; CurMinBar = Bars-shift; ZigZag[Bars-CurMinBar] = CurMin; } // if (res < mhPoint) } // if (AfterMax) if (AfterMin) { res = CurMax-High[shift]; if (res < mhPoint) { ZigZag[Bars-CurMaxBar] = 0; CurMax = High[shift]; CurMaxBar = Bars-shift; ZigZag[Bars-CurMaxBar] = CurMax; } // if (res < mhPoint) } // if (AfterMin) } // for(shift=fBar; shift>=0; shift--) //---- return(0); } //+------------------------------------------------------------------+ ジグザグの違いのクセについて。このジグザグの最大の特徴は、すべてを一度に行うこと、過去のデータの再調査は極値が確定したときのみ、その極値以降のデータに対してのみ行うことである。つまり、相当なスピードが必要なのです。もちろん、描画の詳細は極限固定の基準によりますが、ここでは様々なオプションを簡単に実装することができます。例えば、私はすでに、直前の動きに対するパーセンテージで、Highが最小値から(それぞれLowが最大値から)離れることによって切り替えるバリアントを作り、切り替えを平均バーサイズに縛り付けることにしました。 Forex Trader 2006.11.01 00:28 #48 ここでインジケーターのもう一つの問題点、ジグザグにねじれを発見しました(写真ではカーソルの十字)。キンクの時刻は端末の電源を切った時刻に対応し、価格は電源を入れ直した時刻に対応する。 疑いを晴らすために、コードにPrintを挿入してみました。 if (shift<5) Print ("shift=",shift,", Bars=",Bars,", Time[shift]=",TimeToStr(Time[shift],TIME_DATE|TIME_MINUTES),", High[shift]=",High[shift],", Low[shift]=",Low[shift]) とする。 その後、端末を終了し、数分後に再起動した。そして、ログの断片を紹介します。 。 2006.10.31 23:58:26 CZZ2 EURUSD,M1: shift=0, Bars=38233, Time[shift]=2006.10.31 22:51, High[shift]=1.2763, Low[shift]=1.2763 2006.10.31 23:58:26 CZZ2 EURUSD,M1: shift=0, Bars=38233, Time[shift]=2006.10.30 23:57:56 CZZ1 EURUSD,M3: shift=1, Bars=38233, Time(shift)=2006.10.31 23:5410.31 22:51, High[shift]=1.2763, Low[shift]=1.2763 2006.10.31 23:58:26 CZZ2 EURUSD,M1: shift=0, Bars=38233, Time[shift]=2006.10.31 22:51, High[shift]=1.2763.2763, Low[shift]=1.2763 2006.10.31 23:58:26 CZZ2 EURUSD,M1: shift=1, Bars=38233, Time[shift]=2006.10.31 22:50, High[shift]=1.2763, Low[shift]=1.2762 2006.10.31.31 23:58:26 CZZ2 EURUSD,M1: shift=2, Bars=38233, Time[shift]=2006.10.31 22:49, High[shift]=1.2763, Low[shift]=1.2763 2006.10.31 23:58:26 CZZ2 EURUSD,M1: shift=3, Bars=38233, Time[shift]=2006.10.30 (注1) 2006.10.31は、2006年10月1日から2006年12月31日までの期間です。10.31 22:47, High[shift]=1.2763, Low[shift]=1.2762 2006.10.31 23:58:26 CZZ2 EURUSD,M1: shift=4, Bars=38233, Time[shift]=2006.10.31 22:45, High[shift]=1.2763.2763, Low[shift]=1.2762 2006.10.31 23:58:25 CZZ2 EURUSD,M1: shift=0, Bars=38230, Time[shift]=2006.10.31 22:51, High[shift]=1.2763, Low[shift]=1.2763 2006.10.31 22:51.31 23:58:25 CZZ2 EURUSD,M1: shift=1, Bars=38230, Time[shift]=2006.10.31 22:45, High[shift]=1.2762, Low[shift]=1.2762 2006.10.31 23:58:23 CZZ2 EURUSD,M1: shift=0, Bars=38229, Time[shift]=2006.10.30 CZZ 2 EURUSD:M2: shift=1, Bars=1.2762, Time(shift=1)2006.10.31 22:45, High[shift]=1.2762, Low[shift]=1.2762 2006.10.31 23:58:22 CZZ2 EURUSD,M1: shift=0, Bars=38229, Time[shift]=2006.10.31 22:45, High[shift]=1.2762, Low[shift]=1.2762 23時58分23秒にはまだ履歴がポンピングされておらず、23時58分25秒には最後の 1バールがポンピングされていることが分かります。そして、2006.10.31 23:58:26にだけ、すべての中間バーをポンピングしたのです。開発者に質問:これは通常のページングシーケンスなのでしょうか?また、そうであれば、何のために?明らかに、現在の価格値を早期に把握することが望ましい。しかし、しばらくの間、歴史に穴が開くことが予定されているということは、本質的に今回の指標の失敗が保証されていることを意味します。履歴が完全に入れ替わるまで 指標の計算を 先延ばしにした方がユーザーにとって安全ではないでしょうか?それともせめてフルスワップ後に再初期化? Forex Trader 2006.11.01 00:38 #49 再初期化」というのは間違いで、本来はトレイルブレイザーになるのですが...... :) Forex Trader 2006.11.01 08:01 #50 私はこのような歴史のページングを熟知しています。最初の5つのジグザグブレイクのチェックとZUPインジケーターの再計算を行いました。 1234567 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
Klot、面白いオプションですね。
ジグザグのバリエーションが興味深い結果を示した場合、私の開発で適用することは可能ですか?
もちろんできますよ。私は興味深くこの開発を追っていますし、あなたの作品がとても好きです。
オプション」に関しても。現在、エクストリームスイッチングの条件の1つは、現在のローが現在のローよりExtDeviationポイント以上高いことです(ハイについても同様)。必要であれば、他のオプションも簡単に実装できるコードになっています。
さて、klot さんに続いて、私が今、ジグザグに興味を持っているのは、ひとえに先生のデザインに興味を持ったからだということを付け加えておきたいと思います。
ジグザグを外付けジグザグとして収録しました。安定的に動作するバージョンが登場したら、すぐに変更します。
ジグザグの違いのクセについて。このジグザグの最大の特徴は、すべてを一度に行うこと、過去のデータの再調査は極値が確定したときのみ、その極値以降のデータに対してのみ行うことである。つまり、相当なスピードが必要なのです。もちろん、描画の詳細は極限固定の基準によりますが、ここでは様々なオプションを簡単に実装することができます。例えば、私はすでに、直前の動きに対するパーセンテージで、Highが最小値から(それぞれLowが最大値から)離れることによって切り替えるバリアントを作り、切り替えを平均バーサイズに縛り付けることにしました。
疑いを晴らすために、コードにPrintを挿入してみました。
その後、端末を終了し、数分後に再起動した。そして、ログの断片を紹介します。 。
23時58分23秒にはまだ履歴がポンピングされておらず、23時58分25秒には最後の 1バールがポンピングされていることが分かります。そして、2006.10.31 23:58:26にだけ、すべての中間バーをポンピングしたのです。開発者に質問:これは通常のページングシーケンスなのでしょうか?また、そうであれば、何のために?明らかに、現在の価格値を早期に把握することが望ましい。しかし、しばらくの間、歴史に穴が開くことが予定されているということは、本質的に今回の指標の失敗が保証されていることを意味します。履歴が完全に入れ替わるまで
指標の計算を 先延ばしにした方がユーザーにとって安全ではないでしょうか?それともせめてフルスワップ後に再初期化?