Lowest関数とHighest関数が返すもの - ページ 4 1234567 新しいコメント Forex Trader 2006.10.19 10:29 #31 最初のページでcomposterさんがあげて いるコードで実験してみます。もしかしたら、何かうまくいくかもしれない。 Forex Trader 2006.10.19 10:41 #32 nen: 正しくは、計算されています。セル番号が 判明する。このセル(時系列)からバーの最大値または最小値を取得する。このバーで最大値を見つけたと考えられる。この値は、見つかった番号と 一緒にインジケーターバッファーに置かれます。インジケーターの最大値は、バー上の最大値と一致させる必要があります。私のコードでは、同じ発見番号の配列(時系列)から最大値も取り出してvalの 値と比較しています。この番号のバッファにvalの値を入れて、正しい処理をしているかどうかをチェックします。また、バーの最大値と同じにする必要があります。同じ場所から採取した数字を比較するのは、まったく正しいことです。 比較...==val、はセル番号が刻々と変化する可能性があるため、危険だと思われます。特に小さなタイムフレームで、Lowと Highが 密接にマッチしているものが多くあります。しかし、よく考えてみると、もしかしたら私たちは違う瞬間を意味しているかもしれません。 Forex Trader 2006.10.19 21:48 #33 nen さん、このジグザグをテストしてみませんか?実は、これはジグザグを使った経験があり、ジグザグに何を求めているかを知っている皆さんへのお願いなんです。このプロトタイプから何か役に立つものが作れるかも?//+------------------------------------------------------------------+ //| 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 Blue //---- indicator parameters extern int ExtDepth=12; extern int ExtDeviation=5; //extern int ExtBackstep=3; int shift; double res; int i; int fBar; double CurMax,CurMin; int CurMaxPos,CurMinPos; int CurMaxBar,CurMinBar; double hPoint; double mhPoint; double EDev; int MaxDist,MinDist; bool FirstRun; bool AfterMax,AfterMin; //---- 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("CZigZag("+ExtDepth+","+ExtDeviation+")"); FirstRun = true; //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(); if (FirstRun) { hPoint = 0.5*Point; mhPoint = -hPoint; // EDev = ExtDeviation*Point; 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; FirstRun = false; } //---- fBar = Bars-counted_bars-1; if (fBar > Bars-2) fBar = Bars-2; for(shift=fBar; shift>=0; shift--) { if (AfterMax) { // res = Low[shift]-CurMin-hPoint; res = Low[shift]-CurMin; // if (res < 0) { if (res < mhPoint) { ZigZag[Bars-CurMinBar] = 0; CurMin = Low[shift]; CurMinBar = Bars-shift; ZigZag[Bars-CurMinBar] = CurMin; } else { // if (res < 0) // if (res > 0 ) { if (res > hPoint ) { MaxDist = Bars-CurMaxBar-shift+1; MinDist = Bars-CurMinBar-shift+1; if ((MaxDist>ExtDepth && MinDist>ExtDepth) || res > EDev) { 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; } // if ((MaxDist>ExtDepth && MinDist>ExtDepth) || res > EDev) } // if (res > 0 ) } // else if (res < 0) } // if (AfterMax) if (AfterMin) { // res = CurMax-High[shift]-hPoint; res = CurMax-High[shift]; // if (res < 0) { if (res < mhPoint) { ZigZag[Bars-CurMaxBar] = 0; CurMax = High[shift]; CurMaxBar = Bars-shift; ZigZag[Bars-CurMaxBar] = CurMax; } else { // if (res < 0) // if (res > 0 ) { if (res > hPoint ) { MaxDist = Bars-CurMaxBar-shift+1; MinDist = Bars-CurMinBar-shift+1; if ((MaxDist>ExtDepth && MinDist>ExtDepth) || res > EDev) { 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; } // if ((MaxDist>ExtDepth && MinDist>ExtDepth) || res > EDev) } // if (res > 0 ) } // else if (res < 0) } // if (AfterMin) } // for(shift=fBar; shift>=0; shift--) //---- return(0); } //+------------------------------------------------------------------+ パラメータ名はそのままですが、動作が異なるのでご注意ください。 Forex Trader 2006.10.20 06:13 #34 こちらも、私のZigZagをご覧ください、真相がわかるかもしれません. //+------------------------------------------------------------------+ //| DT_ZZ.mq4 | //+------------------------------------------------------------------+ #property copyright "Copyright © 2006, klot." #property link "klot@mail.ru" #property indicator_chart_window #property indicator_buffers 3 #property indicator_color1 Aqua #property indicator_color2 Blue #property indicator_color3 Red //---- indicator parameters extern int ExtDepth=12; //---- indicator buffers double zzL[]; double zzH[]; double zz[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { // IndicatorBuffers(3); //---- drawing settings SetIndexStyle(2,DRAW_ARROW); SetIndexStyle(1,DRAW_ARROW); SetIndexStyle(0,DRAW_SECTION); SetIndexArrow(2,159); SetIndexArrow(1,159); //---- indicator buffers mapping SetIndexBuffer(0,zz); SetIndexBuffer(1,zzH); SetIndexBuffer(2,zzL); SetIndexEmptyValue(0,0.0); SetIndexEmptyValue(1,0.0); SetIndexEmptyValue(2,0.0); //---- indicator short name IndicatorShortName("DT_ZZ("+ExtDepth+")"); //---- initialization done return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { int i,shift,pos,lasthighpos,lastlowpos,curhighpos,curlowpos; double curlow,curhigh,lasthigh,lastlow; double min, max; ArrayInitialize(zz,0.0); ArrayInitialize(zzL,0.0); ArrayInitialize(zzH,0.0); lasthighpos=Bars; lastlowpos=Bars; lastlow=Low[Bars];lasthigh=High[Bars]; for(shift=Bars-ExtDepth; shift>=0; shift--) { curlowpos=Lowest(NULL,0,MODE_LOW,ExtDepth,shift); curlow=Low[curlowpos]; curhighpos=Highest(NULL,0,MODE_HIGH,ExtDepth,shift); curhigh=High[curhighpos]; //------------------------------------------------ if( curlow>=lastlow ) { lastlow=curlow; } else { //идем вниз if( lasthighpos>curlowpos ) { zzL[curlowpos]=curlow; ///* min=100000; pos=lasthighpos; for(i=lasthighpos; i>=curlowpos; i--) { if (zzL[i]==0.0) continue; if (zzL[i]<min) { min=zzL[i]; pos=i; } zz[i]=0.0; } zz[pos]=min; //*/ } lastlowpos=curlowpos; lastlow=curlow; } //--- high if( curhigh<=lasthigh ) { lasthigh=curhigh;} else { // идем вверх if( lastlowpos>curhighpos ) { zzH[curhighpos]=curhigh; ///* max=-100000; pos=lastlowpos; for(i=lastlowpos; i>=curhighpos; i--) { if (zzH[i]==0.0) continue; if (zzH[i]>max) { max=zzH[i]; pos=i; } zz[i]=0.0; } zz[pos]=max; //*/ } lasthighpos=curhighpos; lasthigh=curhigh; } //---------------------------------------------------------------------- } return(0); } //+------------------------------------------------------------------+ Forex Trader 2006.10.20 06:21 #35 nen このジグザグをテストしてみませんか?実は、これはジグザグの経験があり、ジグザグに何を求めているかを知っている人へのリクエストなんです。このプロトタイプから何か役に立つものが作れるかも? パラメータの名前は同じですが、動作が異なるのでご注意ください。 キャンディッド 拝見させていただきます。初めてインストールしたとき、次のような観測がありました。 同じ高値のバーが何本か連続している。あなたのジグザグのバリエーションは、最後のバーでブレーク(トップ)を描画します。つまり、ゼロに一番近いバーです。理想的には、ゼロバーから最も遠い最初のバーでブレークを描くべきです。最初に現れる頂点は重要である。mtnemumsと同じです。引用が必要な場合は、複数の文献を引用することができる。 Forex Trader 2006.10.20 06:29 #36 klotさん、 ありがとうございます。DT-ZigZagのアイデアに従って、私もハイタイムフレームのデータで動作するインジケータを作りました。しかし、私はアイデアを残してきただけです。自分なりのアルゴリズムを作りました。昨日はジグザグにさらに修正を加えました。現在、集団テストのためにアップロードしています。あなたのバリエーションは必ず試してみます。以下、今回の騒動の原因となったインジケーターの説明です。http://onix-trade.net/forum/index.php?showtopic=373。 なお、DT-ZigZagモードはインジケーターに付属している外部ジグザグを使用します。そして、この外付けのジグザグは、最初のビームで失敗することがあります。外付けジグザグの新バージョンをテスト中です。 Forex Trader 2006.10.20 06:38 #37 klot ありがとうございます。DT-ZigZagのアイデアに従って、より高い時間枠のデータで動作するように私のインジケータを作りました。しかし、私はアイデアを残してきただけです。自分なりのアルゴリズムを作りました。昨日はジグザグにさらに修正を加えました。現在、集団テストのためにアップロードしています。あなたのバリエーションは必ず試してみます。以下、今回の騒動の原因となったインジケーターの説明です。http://onix-trade.net/forum/index.php?showtopic=373。 なお、DT-ZigZagモードはインジケーターに付属している外部ジグザグを使用します。そして、この外付けのジグザグは、最初のビームで失敗することがあります。外付けジグザグの新バージョンをテスト中です。 はい、気づきました :) 単なる思いつきです :) .今はZZを使いまわしています(上の投稿のコード)他のTFデータとの連携がより安定します。 Forex Trader 2006.10.20 06:53 #38 nen: 最初のインストールで、すぐに次のような観察結果が出た。 同じ高値のバーが何本か連続している。ジグザグオプションは、最後のバーでブレイク(上)を描きます。 嗚呼、だから私は「選択肢」を間違えてしまったのか。これからソースの投稿のコードを編集します。変更の兆候は、間違った「オプション」の行をコメントアウトしたことです。 Forex Trader 2006.10.20 07:11 #39 キャンディッド、もう大丈夫です。 Klot、面白いオプションですね。 ジグザグのバリエーションが興味深い結果を示した場合、私の開発で適用することは可能ですか? Forex Trader 2006.10.20 07:15 #40 ジグザグのバリエーションが面白い結果を示したら、デザインに応用できないか?はい、もちろんです。テストの結果が良好であれば、Code Baseに追加してみることもあります。 1234567 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
正しくは、計算されています。セル番号が 判明する。このセル(時系列)からバーの最大値または最小値を取得する。このバーで最大値を見つけたと考えられる。この値は、見つかった番号と 一緒にインジケーターバッファーに置かれます。インジケーターの最大値は、バー上の最大値と一致させる必要があります。私のコードでは、同じ発見番号の配列(時系列)から最大値も取り出してvalの 値と比較しています。この番号のバッファにvalの値を入れて、正しい処理をしているかどうかをチェックします。また、バーの最大値と同じにする必要があります。同じ場所から採取した数字を比較するのは、まったく正しいことです。
比較...==val、はセル番号が刻々と変化する可能性があるため、危険だと思われます。特に小さなタイムフレームで、Lowと Highが 密接にマッチしているものが多くあります。しかし、よく考えてみると、もしかしたら私たちは違う瞬間を意味しているかもしれません。
パラメータ名はそのままですが、動作が異なるのでご注意ください。
パラメータの名前は同じですが、動作が異なるのでご注意ください。
キャンディッド 拝見させていただきます。初めてインストールしたとき、次のような観測がありました。
同じ高値のバーが何本か連続している。あなたのジグザグのバリエーションは、最後のバーでブレーク(トップ)を描画します。つまり、ゼロに一番近いバーです。理想的には、ゼロバーから最も遠い最初のバーでブレークを描くべきです。最初に現れる頂点は重要である。mtnemumsと同じです。引用が必要な場合は、複数の文献を引用することができる。
はい、気づきました :) 単なる思いつきです :) .今はZZを使いまわしています(上の投稿のコード)他のTFデータとの連携がより安定します。
最初のインストールで、すぐに次のような観察結果が出た。
同じ高値のバーが何本か連続している。ジグザグオプションは、最後のバーでブレイク(上)を描きます。
Klot、面白いオプションですね。
ジグザグのバリエーションが興味深い結果を示した場合、私の開発で適用することは可能ですか?