どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 545 1...538539540541542543544545546547548549550551552...1178 新しいコメント forexman77 2014.03.16 07:30 #5441 GSB: どのようなテイクですか?同じインジケータを全く異なるパラメータで呼び出すことができる インジケーター自体の場合 extern int periodAMA=10; EAでextern int periodAMA_1= 8; extern int periodAMA_2=13; 送信されたパラメータとその名前が異なる場合、インジケータコードはどのように認識するのでしょうか? しかし、すべてはおっしゃるとおりです。再度スクリプトで確認しました) Sergey Gustaytis 2014.03.16 08:25 #5442 Forexman77: Expert Advisorのインジケーター自体にある場合 送信されたパラメータと名前が異なる場合、インジケータコードはどのように認識するのでしょうか?しかし、すべてはおっしゃるとおりです。スクリプトで再確認) 呼び出し側のプログラムの変数(複数可)には好きな名前を付けることができ、その名前はインジケータ内の変数名とは関係なく、異なる変数であり、異なる端末スレッドから呼び出されます。 インジケータはその名前に基づいて呼び出され、パラメータは4番目の位置から各コール中にそのために渡され、次にiCustom()パラメータを渡します。 変数 per1=9;を宣言 し、iCustom()が4の位置にある場合、インジケータは9の周期で計算され、他の変数を設定すると、その値が計算中に使用されます。インジケーターの最初のパラメーターとして渡される変数(その参照) - 2番目のiCustom()の4番目の場所に、など。 forexman77 2014.03.16 09:34 #5443 GSB: 呼び出し側のプログラムの変数名は自由ですが、その名前はインジケータの変数名とは関係なく、異なる変数であり、異なる端末スレッドから呼び出されています。 インジケータはその名前で呼ばれ、パラメータは4位からの各コール時に渡され、その後iCustom()のパラメータが渡されます。 変数per1=9を宣言し、iCustom()を4に配置すると、インジケータは9の周期で計算されます。別の変数を設定すると、その値が計算中に使用され、これはインジケータのすべてのパラメータに適用され、主なものは、インジケータ自体のように正しい順番に設定することです。インジケーターの最初のパラメーターとして渡される(その参照)変数 - 2番目のiCustom()の4番目、といった具合になります。 了解しました。教科書では、引用値の転送ということになっているようです。 Semionn 2014.03.16 11:22 #5444 私はフォーラムを散乱させず、別のトピックを持っているべきだと思ったが、私は本当に私の問題に対する建設的なフィードバックを期待して、私はそれなしで前進していないです :(. いろいろなインジケーターを書いてみましたが、すべて問題ないようです。現在、iCustom()関数を使って、すべてをEAにインポートしています。Expert Advisorのコードです。 double ma=iCustom(NULL,0,"TestMA",0,1); インジケーター本体(テスト用に書きました) //+------------------------------------------------------------------+ //| TestMA.mq4 | //| Copyright 2014, Semyon Polyakov | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2014, Semyon Polyakov" #property link "https://www.mql5.com" #property version "1.00" #property strict #property indicator_chart_window double ExtMapBuffer1[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping SetIndexStyle(0,DRAW_LINE,EMPTY,1,clrRed); SetIndexBuffer(0,ExtMapBuffer1); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //--- int counted_bars=IndicatorCounted(), limit; if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; for(int i=0;i<limit;i++) { ExtMapBuffer1[i]=SimpleMA(i,20,close); } //--- return value of prev_calculated for next call return(rates_total); } double SimpleMA(const int position,const int period,const double &price[]) { //--- double result=0.0; //--- check position if(position>=0 && period>0) { //--- calculate value for(int i=0;i<period;i++) result+=price[position+i]; result/=period; } //--- return(result); } //+------------------------------------------------------------------+ 次に、テスト時のEMPTY_VALUEの 件です。 すなわち、テストを開始するとき、EAの開始日があって、その日以前のものはすべてiCustomが正しいインジケータ値を与え、それ以降のものはすべて直接テストされる - EMPTY_VALUEです。:( グーグルやフォーラムでは、「未来に目を向けないでください」と書かれていますが、コードにはそのようなことは書かれていません。私はどこのバカなんでしょうか(笑) Sergey Gustaytis 2014.03.16 12:53 #5445 Semionn: 私はフォーラムを散乱させず、別のトピックを持っているべきだと思ったが、私は本当に私の問題に対する建設的なフィードバックを期待して、私はそれなしで前進していないです :(. いろいろなインジケーターを書いてみましたが、すべてOKのようです。現在、iCustom()関数を使って、すべてをEAにインポートしています。Expert Advisorのコードです。 インジケーター本体(テスト用に書きました) 次に、テスト時のEMPTY_VALUEの件です。 例えば、テストを開始するとき、EAの開始日があり、その日以前のものはiCustomが正しいインジケータ値を与え、それ以降のものはEMPTY_VALUEでテストされます。:( グーグルやフォーラムでは、「未来に目を向けないでください」と書かれていますが、コードにはそのようなことは書かれていません。私はどこのバカなんでしょうか(笑) Expert Advisorのコードにエラーがあるようですが、デバッガを使用してみてはいかがでしょうか?チェックポイントを設定し、変数の値を確認し、インジケータが呼び出された場合、日付の前後に何があるか確認することができます Semionn 2014.03.16 13:20 #5446 GSB: Expert Advisorのコードにエラーがあるようですが、デバッガを使用してみてはいかがでしょうか?チェックポイントを設定し、変数の値を確認し、インジケータが呼び出された場合、日付の前後に何があるか確認することができます デバッガは、私が書いた以外にも、テストではなく、デモ口座モードで使用することができます - インジケータが呼び出され、動作し、値を返し、さらに正しい、しかし、唯一の指定した日付(テストの開始日)前に。EAで変数の値を出力しているので、最初は全て良好と言いながら、EMPTY_VALUE Alexander 2014.03.16 15:52 #5447 Semionn: デバッガは、私が書いた以外にも、テストではなく、デモ口座モードでのみ使用することができます - インジケータが呼び出され、動作し、値を返し、さらに正しいが、指定した日付(テスト開始日)までだけです。EAで変数の値を出力しているので、最初は全て良好と言いながら、EMPTY_VALUE カスタムインジケータで 新しいバーを追跡する方法をよく読みましたか? [QUOTE]最初のrates_totalパラメータは、計算のためにインジケータが利用できるバーの数を含み、チャートで利用可能なバーの数に対応しています。 OnCalculate()が返す値と2番目の入力パラメータprev_calculatedの関係に注目してください。関数呼び出しの prev_calculated パラメータには、前の呼び出しで OnCalculate()が返した値が含まれる。これにより、この関数の前回の呼び出し以降に変更されていないバーについて、計算を繰り返すことを避けるために、カスタム・インジケータを計算するための経済的なアルゴリズムが可能になります。 そのためには、通常、現在の関数呼び出しのバーの数を含む rates_total パラメータの値を返せば十分である。OnCalculate()の最後の呼び出し以降に価格データが変更された場合(より深いヒストリがポンピングされたか、ヒストリの空白が埋められた)、入力パラメータprev_calculatedの値はターミナルによってゼロに設定されます。[/QUOTE] forexman77 2014.03.16 16:58 #5448 1日の瞬間の平均を20日分求め、20日の瞬間の平均を5日分求める必要があります。 20日平均を見つけるのは問題なかった。しかし、この平均 値から5日分の平均 値を求める方法がわかりません。 #property indicator_separate_window #property indicator_buffers 1 #property indicator_color1 Lime //--- input parameters extern int Period_MA_1=1; extern int p =20; //--- buffers double ExtMapBuffer1[]; double val20[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,ExtMapBuffer1); IndicatorDigits(Digits+1); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(), limit; double momentum20; if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; for(int i=0;i<limit;i++) { momentum20=0; ArrayInitialize(val20,0); for(int k=p;k>=0;k--) { ArrayResize(val20,p); val20[k]=Close[i+k]-Close[i+k+Period_MA_1]; momentum20=momentum20+val20[k]; } momentum20=momentum20/p; ExtMapBuffer1[i]=momentum20; } return(0); } Victor Nikolaev 2014.03.16 17:13 #5449 Forexman77: 1日の瞬間の平均を20日分求め、20日の瞬間の平均を5日分求める必要があります。 20日平均を見つけるのは問題なかった。しかし、この平均 値から5日分の平均 値を求める方法がわかりません。 //+------------------------------------------------------------------+ //| ForexMan77.mq4 | //| Copyright 2014, Vinin | //| vinin@mail.ru | //+------------------------------------------------------------------+ #property copyright "Copyright 2014, Vinin" #property link "vinin@mail.ru" #property version "1.00" #property strict #property indicator_separate_window #property indicator_buffers 3 #property indicator_color1 Lime #property indicator_color2 Yellow #property indicator_color3 Red //--- input parameters extern int Period_MA_1=1; extern int p2 =20; extern int p3 =5; //--- buffers double ExtMapBuffer1[]; double ExtMapBuffer2[]; double ExtMapBuffer3[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,ExtMapBuffer1); SetIndexStyle(1,DRAW_LINE); SetIndexBuffer(1,ExtMapBuffer2); SetIndexStyle(2,DRAW_LINE); SetIndexBuffer(2,ExtMapBuffer3); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(), i,limit1,limit2,limit3; limit1=Bars-counted_bars-1; limit2=limit1; limit3=limit2; if(limit1>0) { limit1=Bars-Period_MA_1-1; limit2=limit1-p2; limit3=limit2-p3; } for(i=limit1;i>=0;i--) ExtMapBuffer1[i]=iMomentum(NULL, 0, Period_MA_1, PRICE_CLOSE, i); for(i=limit2;i>=0;i--) ExtMapBuffer2[i]=iMAOnArray(ExtMapBuffer1, 0, p2, 0, MODE_SMA,i); for(i=limit3;i>=0;i--) ExtMapBuffer3[i]=iMAOnArray(ExtMapBuffer2, 0, p3, 0, MODE_SMA,i); return(0); } //+------------------------------------------------------------------+ Vadim Pyankov 2014.03.16 17:18 #5450 ヘルプ int OnInit() { EventSetTimer(60); Print(GetLastError()); return(INIT_SUCCEEDED); } タイマーが作動せず、ファウルやエラー4051を返す それともテスターでは動作しないはずですか? 1...538539540541542543544545546547548549550551552...1178 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
どのようなテイクですか?同じインジケータを全く異なるパラメータで呼び出すことができる
送信されたパラメータとその名前が異なる場合、インジケータコードはどのように認識するのでしょうか?
しかし、すべてはおっしゃるとおりです。再度スクリプトで確認しました)
Expert Advisorのインジケーター自体にある場合
送信されたパラメータと名前が異なる場合、インジケータコードはどのように認識するのでしょうか?
しかし、すべてはおっしゃるとおりです。スクリプトで再確認)
呼び出し側のプログラムの変数(複数可)には好きな名前を付けることができ、その名前はインジケータ内の変数名とは関係なく、異なる変数であり、異なる端末スレッドから呼び出されます。
インジケータはその名前に基づいて呼び出され、パラメータは4番目の位置から各コール中にそのために渡され、次にiCustom()パラメータを渡します。
変数 per1=9;を宣言 し、iCustom()が4の位置にある場合、インジケータは9の周期で計算され、他の変数を設定すると、その値が計算中に使用されます。インジケーターの最初のパラメーターとして渡される変数(その参照) - 2番目のiCustom()の4番目の場所に、など。
呼び出し側のプログラムの変数名は自由ですが、その名前はインジケータの変数名とは関係なく、異なる変数であり、異なる端末スレッドから呼び出されています。
インジケータはその名前で呼ばれ、パラメータは4位からの各コール時に渡され、その後iCustom()のパラメータが渡されます。
変数per1=9を宣言し、iCustom()を4に配置すると、インジケータは9の周期で計算されます。別の変数を設定すると、その値が計算中に使用され、これはインジケータのすべてのパラメータに適用され、主なものは、インジケータ自体のように正しい順番に設定することです。インジケーターの最初のパラメーターとして渡される(その参照)変数 - 2番目のiCustom()の4番目、といった具合になります。
私はフォーラムを散乱させず、別のトピックを持っているべきだと思ったが、私は本当に私の問題に対する建設的なフィードバックを期待して、私はそれなしで前進していないです :(.
いろいろなインジケーターを書いてみましたが、すべて問題ないようです。現在、iCustom()関数を使って、すべてをEAにインポートしています。Expert Advisorのコードです。
インジケーター本体(テスト用に書きました)
次に、テスト時のEMPTY_VALUEの 件です。
すなわち、テストを開始するとき、EAの開始日があって、その日以前のものはすべてiCustomが正しいインジケータ値を与え、それ以降のものはすべて直接テストされる - EMPTY_VALUEです。:(
グーグルやフォーラムでは、「未来に目を向けないでください」と書かれていますが、コードにはそのようなことは書かれていません。私はどこのバカなんでしょうか(笑)
私はフォーラムを散乱させず、別のトピックを持っているべきだと思ったが、私は本当に私の問題に対する建設的なフィードバックを期待して、私はそれなしで前進していないです :(.
いろいろなインジケーターを書いてみましたが、すべてOKのようです。現在、iCustom()関数を使って、すべてをEAにインポートしています。Expert Advisorのコードです。
インジケーター本体(テスト用に書きました)
次に、テスト時のEMPTY_VALUEの件です。
例えば、テストを開始するとき、EAの開始日があり、その日以前のものはiCustomが正しいインジケータ値を与え、それ以降のものはEMPTY_VALUEでテストされます。:(
グーグルやフォーラムでは、「未来に目を向けないでください」と書かれていますが、コードにはそのようなことは書かれていません。私はどこのバカなんでしょうか(笑)
Expert Advisorのコードにエラーがあるようですが、デバッガを使用してみてはいかがでしょうか?チェックポイントを設定し、変数の値を確認し、インジケータが呼び出された場合、日付の前後に何があるか確認することができます
デバッガは、私が書いた以外にも、テストではなく、デモ口座モードで使用することができます - インジケータが呼び出され、動作し、値を返し、さらに正しい、しかし、唯一の指定した日付(テストの開始日)前に。EAで変数の値を出力しているので、最初は全て良好と言いながら、EMPTY_VALUE
デバッガは、私が書いた以外にも、テストではなく、デモ口座モードでのみ使用することができます - インジケータが呼び出され、動作し、値を返し、さらに正しいが、指定した日付(テスト開始日)までだけです。EAで変数の値を出力しているので、最初は全て良好と言いながら、EMPTY_VALUE
カスタムインジケータで 新しいバーを追跡する方法をよく読みましたか?
[QUOTE]最初のrates_totalパラメータは、計算のためにインジケータが利用できるバーの数を含み、チャートで利用可能なバーの数に対応しています。
OnCalculate()が返す値と2番目の入力パラメータprev_calculatedの関係に注目してください。関数呼び出しの prev_calculated パラメータには、前の呼び出しで OnCalculate()が返した値が含まれる。これにより、この関数の前回の呼び出し以降に変更されていないバーについて、計算を繰り返すことを避けるために、カスタム・インジケータを計算するための経済的なアルゴリズムが可能になります。
そのためには、通常、現在の関数呼び出しのバーの数を含む rates_total パラメータの値を返せば十分である。OnCalculate()の最後の呼び出し以降に価格データが変更された場合(より深いヒストリがポンピングされたか、ヒストリの空白が埋められた)、入力パラメータprev_calculatedの値はターミナルによってゼロに設定されます。[/QUOTE]
1日の瞬間の平均を20日分求め、20日の瞬間の平均を5日分求める必要があります。
20日平均を見つけるのは問題なかった。しかし、この平均 値から5日分の平均 値を求める方法がわかりません。
1日の瞬間の平均を20日分求め、20日の瞬間の平均を5日分求める必要があります。
20日平均を見つけるのは問題なかった。しかし、この平均 値から5日分の平均 値を求める方法がわかりません。
ヘルプ
タイマーが作動せず、ファウルやエラー4051を返す
それともテスターでは動作しないはずですか?