どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 318 1...311312313314315316317318319320321322323324325...1178 新しいコメント Sergey Dzyublik 2013.12.06 06:28 #3171 muzzletop: 午後EAがあり、ストラテジーテスターで問題なく動作しています(注文もすべて開きます)。しかし、チャート上に置いただけでは、何も起こらない。EAが動作しない。また、チャートのEA名の横に十字が表示されていることに気づきました。修正方法は? EAを チャート上に配置すると、パラメータを表示するウィンドウが開き、さまざまなタブがあります。 EAがすでにチャート上にあり、十字で表示されている場合 - ツールバーの「EAs」ボタン(帽子の中に黄色い立方体、円の中に赤い円と白い四角がある)をクリックします。 satorifx 2013.12.06 09:31 #3172 こんにちは。奇妙な問題に対処するのを助けてください。 要は、マルチタイムインジケーター、つまり、いつでも開いていて、他のすべての時間帯でも計算し、シグナルを出すようなインジケーターを書いているのです。 指標の基本はRSIです。 init()でタイムフレームを切り替える際に、インジケータの ラインに対応する別の配列を入れる。それぞれ、この時間、この時間にいる、というラインは表示されますが、それ以外の時間の計算が進みません(関数iRSIがバカみたいに計算でゼロを追っています)。すなわち、現在の時刻は計算されるが、他の時刻は計算されない。 コードを貼り付けています。 #property indicator_separate_window #property indicator_minimum 20 #property indicator_maximum 80 #property indicator_level1 20 // уровень RSI #property indicator_level2 42 // уровень RSI #property indicator_level3 50 // уровень RSI #property indicator_level4 58 // уровень RSI #property indicator_level5 80 // уровень RSI #property indicator_levelcolor White // цвет уровней #property indicator_buffers 1 #property indicator_color1 Red #property indicator_width1 2 // толщина RSI //--- buffers double RSI_M1[]; // буферы под RSI double RSI_M5[]; double RSI_M15[]; double RSI_M30[]; double RSI_H1[]; double RSI_H4[]; double RSI_D1[]; double RSI_W1[]; double RSI_MN[]; int RSI_per = 12; // период RSI int RSIPriceType = PRICE_CLOSE; // покакой цене считать RSI //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators IndicatorShortName("test"); switch(Period()) { case PERIOD_M1: SetIndexBuffer(0, RSI_M1); break; case PERIOD_M5: SetIndexBuffer(0, RSI_M5); break; case PERIOD_M15: SetIndexBuffer(0, RSI_M15); break; case PERIOD_M30: SetIndexBuffer(0, RSI_M30); break; case PERIOD_H1: SetIndexBuffer(0, RSI_H1); break; case PERIOD_H4: SetIndexBuffer(0, RSI_H4); break; case PERIOD_D1: SetIndexBuffer(0, RSI_D1); break; case PERIOD_W1: SetIndexBuffer(0, RSI_W1); break; case PERIOD_MN1: SetIndexBuffer(0, RSI_MN); break; } SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 2); SetIndexLabel(0,"RSI(" + RSI_per + ")"); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int shift, _Bars; static int _counted_bars_W1 = 0, _counted_bars_D1 = 0; //-------------------------------------------------------------------- _Bars = iBars(NULL, PERIOD_W1); shift = _Bars - _counted_bars_W1 - 1; // Индекс первого непосчитанного _counted_bars_W1 = _Bars - 1; while(shift >= 0) { // Цикл по непосчитанным барам RSI_W1[shift] = iRSI(NULL, PERIOD_W1, RSI_per, RSIPriceType, shift); Print(RSI_W1[shift]); shift--; } //------------------------------------------ _Bars = iBars(NULL, PERIOD_D1); shift = _Bars - _counted_bars_D1 - 1; // Индекс первого непосчитанного _counted_bars_D1 = _Bars - 1; while(shift >= 0) { // Цикл по непосчитанным барам RSI_D1[shift] = iRSI(NULL, PERIOD_D1, RSI_per, RSIPriceType, shift); shift--; } //------------------------------------------ return(0); } //+------------------------------------------------------------------+ 面白いのは、インジケータライン用の配列を1つだけ残して、いつでもW1だけを計算するようにすると、どんな(!)時でもすべてが正しく計算・描画されることです。 そのコツとは?初期化時に、時間によってインジケータ線に異なる配列を取ることは不可能なのでしょうか? Boris 2013.12.06 10:25 #3173 satorifx: こんにちは。奇妙な問題に対処するのを助けてください。 要は、マルチタイムインジケータ、つまり、いつでも開いていて、他のすべての時間帯でも計算してシグナルを出すようなインジケータを書いているのです。 指標の基本はRSIです。 init()でタイムフレームを切り替える際に、インジケータのラインに対応する別の配列を入れる。それぞれ、この時間、この時間にいる、というラインは表示されますが、それ以外の時間の計算が進みません(関数iRSIがバカみたいに計算でゼロを追っています)。すなわち、現在の時刻は計算されるが、他の時刻は計算されない。 コードを貼り付けています。 面白いのは、インジケータライン用の配列を1つだけ残して、いつでもW1だけを計算するようにすると、どんな(!)時でもすべてが正しく計算・描画されることです。 そのコツとは?初期化時に、時間によってインジケータ線に異なる配列を取ることは不可能なのでしょうか? W1、D1のみ読み込みます何がしたいんだ?私たちのために完成させなさい! satorifx 2013.12.06 10:37 #3174 borilunad: W1、D1のみ読み込みます何がしたいんだ?他の人のために完成させるんだ! そういう問題じゃないんです。コードが長くなりすぎないように、D1とW1のみ計算を行いました。注:各タイムフレームの各ティックで、W1 の計算値が印刷されます。そのため、W1以外の時刻を開くと、0が出力されます。W1で成功したのだから、他でも成功するはずだ。 Boris 2013.12.06 10:43 #3175 satorifx: そういう問題じゃないんです。コードが長くなりすぎないように、D1とW1についてのみ計算を与えています。注意:どの時間枠のティックでも、W1 の計算値が印刷されます。そのため、W1以外の時刻を開くと、0が出力されます。W1でうまくいけば、それ以外でもうまくいくはずです。 そうなんだ!週足チャートを開かないと、他のチャートで表示できないのです satorifx 2013.12.06 11:00 #3176 borilunad: 正解!他のチャートで表示するには、週足チャートも開く必要があります 正直なところ、この発言は理解できなかった。 そして、それ以外のものを見せる必要はない。コードを実行すると、すでに私が望むものを表示していることがわかります。D1にはチャートRSI D1、W1にはチャートRSI W1を表示していますが、同時に、D1が開いていれば、W1のRSIはすべてゼロ、W1が開いていれば、D1の計算もゼロになっています。問題は、なぜそうなるのか、どうすれば解決できるのかということです。 satorifx 2013.12.06 12:19 #3177 問題は、インデックス配列が 初期化され、適切なサイズにリサイズされることです。 そのため、D1を開くと - RSI_D1[]がインデックス化され、それですべてがOKになりますが、他の配列は胎生状態のままです。 試しに、すべての配列をこのように宣言してみました。 double RSI_W1[] = {0}; init()のスイッチを次のように変更しました: case PERIOD_D1: SetIndexBuffer(0, RSI_D1); ArrayResize(RSI_W1, iBars(NULL, PERIOD_W1)); break; しかし、ArrayResizeのGetLastErrorでは、エラーが発生します。 EURUSD,Daily:配列のサイズを変更できません。EURUSD,Daily: some array error とにかく、この問題を解決する方法を教えてくれる人はいませんか? Artyom Trishkin 2013.12.06 12:27 #3178 satorifx:問題は、インデックス配列が初期化され、適切なサイズにリサイズされることです。 そのため、D1を開くと - RSI_D1[]がインデックス化され、それですべてがOKになりますが、他の配列は胎生状態のままです。 試しに、すべての配列をこのように宣言してみました。 init()のスイッチを次のように変更しました: しかし、ArrayResizeのGetLastErrorでは、エラーが発生します。 EURUSD,Daily:配列のサイズを変更できません。EURUSD,Daily: some array error とにかく、この問題を解決する方法を教えてくれる人はいませんか? 配列が動的な場合は、値を書き込むときに、新しいデータに対応するように配列のサイズを 大きくすることを確認します。ArrayResize() satorifx 2013.12.06 12:34 #3179 artmedia70: 配列が動的な場合は、値を書き込む際に新しいデータに対応できるように配列のサイズを大きくしてください。ArrayResize() 上に書きましたが、 しかし、ArrayResizeGetLastErrorは エラーを出します: EURUSD,Daily: cannot resize array EURUSD,Daily: some array error. Boris 2013.12.06 14:55 #3180 satorifx: これは、上に書いたとおりです。 しかし、ArrayResizeのGetLastErrorでは、エラーが発生します。 EURUSD,Daily:配列のサイズを変更できません。 EURUSD,Daily:いくつかの配列エラーsatorifx です。 正直なところ、その発言は理解できなかった。 そして、それ以外のものを見せる必要はない。私のコードを実行すると、D1にはRSI D1、W1にはRSI W1が表示されますが、同時に、D1が開いていれば、W1のRSIはすべてNULL、W1が開いていれば、D1のRSIもすべてNULLとなります。問題は、なぜそうなるのか、どうすれば解決できるのかということです。 なぜなら、バッファは一人で、あなたの呼びかけで一つずつ表示されるからです #property indicator_buffers 1 私があなたの "コード "をダウンロードしてテストする以外にすることがないとでも思っているのでしょうか?アドバイスのお手伝いをしています。そして、何かあったときには、すべてそこに書いてあるのですそれとも、怠惰が先に生まれたのか! 1...311312313314315316317318319320321322323324325...1178 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
午後EAがあり、ストラテジーテスターで問題なく動作しています(注文もすべて開きます)。しかし、チャート上に置いただけでは、何も起こらない。EAが動作しない。また、チャートのEA名の横に十字が表示されていることに気づきました。修正方法は?
EAを チャート上に配置すると、パラメータを表示するウィンドウが開き、さまざまなタブがあります。
EAがすでにチャート上にあり、十字で表示されている場合 - ツールバーの「EAs」ボタン(帽子の中に黄色い立方体、円の中に赤い円と白い四角がある)をクリックします。
こんにちは。奇妙な問題に対処するのを助けてください。
要は、マルチタイムインジケーター、つまり、いつでも開いていて、他のすべての時間帯でも計算し、シグナルを出すようなインジケーターを書いているのです。
指標の基本はRSIです。
init()でタイムフレームを切り替える際に、インジケータの ラインに対応する別の配列を入れる。それぞれ、この時間、この時間にいる、というラインは表示されますが、それ以外の時間の計算が進みません(関数iRSIがバカみたいに計算でゼロを追っています)。すなわち、現在の時刻は計算されるが、他の時刻は計算されない。
コードを貼り付けています。
面白いのは、インジケータライン用の配列を1つだけ残して、いつでもW1だけを計算するようにすると、どんな(!)時でもすべてが正しく計算・描画されることです。
そのコツとは?初期化時に、時間によってインジケータ線に異なる配列を取ることは不可能なのでしょうか?
こんにちは。奇妙な問題に対処するのを助けてください。
要は、マルチタイムインジケータ、つまり、いつでも開いていて、他のすべての時間帯でも計算してシグナルを出すようなインジケータを書いているのです。
指標の基本はRSIです。
init()でタイムフレームを切り替える際に、インジケータのラインに対応する別の配列を入れる。それぞれ、この時間、この時間にいる、というラインは表示されますが、それ以外の時間の計算が進みません(関数iRSIがバカみたいに計算でゼロを追っています)。すなわち、現在の時刻は計算されるが、他の時刻は計算されない。
コードを貼り付けています。
面白いのは、インジケータライン用の配列を1つだけ残して、いつでもW1だけを計算するようにすると、どんな(!)時でもすべてが正しく計算・描画されることです。
そのコツとは?初期化時に、時間によってインジケータ線に異なる配列を取ることは不可能なのでしょうか?
W1、D1のみ読み込みます何がしたいんだ?他の人のために完成させるんだ!
そういう問題じゃないんです。コードが長くなりすぎないように、D1とW1のみ計算を行いました。注:各タイムフレームの各ティックで、W1 の計算値が印刷されます。そのため、W1以外の時刻を開くと、0が出力されます。W1で成功したのだから、他でも成功するはずだ。
そういう問題じゃないんです。コードが長くなりすぎないように、D1とW1についてのみ計算を与えています。注意:どの時間枠のティックでも、W1 の計算値が印刷されます。そのため、W1以外の時刻を開くと、0が出力されます。W1でうまくいけば、それ以外でもうまくいくはずです。
正解!他のチャートで表示するには、週足チャートも開く必要があります
正直なところ、この発言は理解できなかった。
そして、それ以外のものを見せる必要はない。コードを実行すると、すでに私が望むものを表示していることがわかります。D1にはチャートRSI D1、W1にはチャートRSI W1を表示していますが、同時に、D1が開いていれば、W1のRSIはすべてゼロ、W1が開いていれば、D1の計算もゼロになっています。問題は、なぜそうなるのか、どうすれば解決できるのかということです。
問題は、インデックス配列が 初期化され、適切なサイズにリサイズされることです。
init()のスイッチを次のように変更しました:そのため、D1を開くと - RSI_D1[]がインデックス化され、それですべてがOKになりますが、他の配列は胎生状態のままです。
試しに、すべての配列をこのように宣言してみました。
しかし、ArrayResizeのGetLastErrorでは、エラーが発生します。
EURUSD,Daily:配列のサイズを変更できません。
EURUSD,Daily: some array error
とにかく、この問題を解決する方法を教えてくれる人はいませんか?
問題は、インデックス配列が初期化され、適切なサイズにリサイズされることです。
init()のスイッチを次のように変更しました:そのため、D1を開くと - RSI_D1[]がインデックス化され、それですべてがOKになりますが、他の配列は胎生状態のままです。
試しに、すべての配列をこのように宣言してみました。
しかし、ArrayResizeのGetLastErrorでは、エラーが発生します。
EURUSD,Daily:配列のサイズを変更できません。
EURUSD,Daily: some array error
とにかく、この問題を解決する方法を教えてくれる人はいませんか?
配列が動的な場合は、値を書き込む際に新しいデータに対応できるように配列のサイズを大きくしてください。ArrayResize()
しかし、ArrayResizeGetLastErrorは エラーを出します:
EURUSD,Daily: cannot resize array
EURUSD,Daily: some array error.
これは、上に書いたとおりです。
しかし、ArrayResizeのGetLastErrorでは、エラーが発生します。
EURUSD,Daily:配列のサイズを変更できません。
EURUSD,Daily:いくつかの配列エラー
正直なところ、その発言は理解できなかった。
そして、それ以外のものを見せる必要はない。私のコードを実行すると、D1にはRSI D1、W1にはRSI W1が表示されますが、同時に、D1が開いていれば、W1のRSIはすべてNULL、W1が開いていれば、D1のRSIもすべてNULLとなります。問題は、なぜそうなるのか、どうすれば解決できるのかということです。
なぜなら、バッファは一人で、あなたの呼びかけで一つずつ表示されるからです