どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 722 1...715716717718719720721722723724725726727728729...1178 新しいコメント Boris 2014.10.02 12:56 #7211 Zver4991: コードルールはありますか?もちろん、コードだけではありませんhttps://forum.mql4.com/ru/38943 Evgeniy Khaynatskas 2014.10.02 16:14 #7212 なぜハングアップするのかがわからない//+------------------------------------------------------------------+ //| Машка за больший период без перерисовки .mq4 | //| Zver | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Zver" #property link "https://www.mql5.com" #property version "1.00" #property strict #property indicator_chart_window #property indicator_buffers 1 #property indicator_color1 Aqua extern int Otobrajat_v_istorii = 1000; extern int ma_shift=0; extern int ma_method =0; extern int applied_price=0; double buf_ma[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping SetIndexBuffer(0,buf_ma); // Назначение массива буферу SetIndexStyle(0,DRAW_LINE,EMPTY,2);// Стиль линии //--- 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 i,// Индекс бара Counted_bars; Counted_bars=IndicatorCounted(); // Количество просчитанных баров i=Bars-Counted_bars-1; // Индекс первого непосчитанного if(i>Otobrajat_v_istorii-1) // Если много баров то .. i=Otobrajat_v_istorii-1; // ..рассчитывать заданное колич. while(i>=1) // Цикл по непосчитанным барам { buf_ma[i]=iMA(Symbol(),Period(),5,ma_shift,ma_method,applied_price,i); } //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+ vlad-755 2014.10.02 16:16 #7213 コードバリアントint Err; //Номер ошибки int FunErr(int Err) // Функция обработки ошибокは警告を発する。Err' の宣言が 51 行目にあるグローバル宣言を隠している。別のコードのバリエーションint Err; //Номер ошибки int FunErr(Err) // Функция обработки ошибокがエラーになる。Err' - 型のない宣言正しい書き方は? vlad-755 2014.10.02 16:31 #7214 Zver4991: なぜハングアップするのかがわからないint i// バーインデックス while(i>=1)// 未カウントのバーを循環させる。 i>=1であれば常に。 Evgeniy Khaynatskas 2014.10.02 16:44 #7215 Shurkin:int i// バーインデックス while(i>=1)// 未カウントのバーをループ する。 i>=1であれば常に。そうだった、忘れてた...ありがとうございます。i--; 削除済み 2014.10.02 18:14 #7216 //-------------------------------------------------------------------- int Count=0; //-------------------------------------------------------------------- void OnTick() { Count++; Comment("Новый тик ", Count); //if(Count>2) ExpertRemove(); } //-------------------------------------------------------------------- void OnDeinit(const int reason) { Comment("Сработала ф-ия deinit() при выгрузке"); } //--------------------------------------------------------------------if(Count>2)ExpertRemove() のコメントを外して、この関数で終了 すると、EA アンロード後に 「Deinit() triggered during unloading」という コメントが チャート上に 表示されたままと なります。 このようなEAをコンテキストメニューでチャートから削除すると、OnDeinitの Comment() がチャート上に残らない のはなぜか、ご存知の方はいらっしゃいませんか? 削除済み 2014.10.02 18:39 #7217 Shurkin:コードバリアントint Err; //Номер ошибки int FunErr(int Err) // Функция обработки ошибокは警告を発する。Err' の宣言が 51 行目にあるグローバル宣言を隠している。別のコードのバリエーションint Err; //Номер ошибки int FunErr(Err) // Функция обработки ошибокがエラーになる。Err' - 型のない宣言正しい書き方は? これは、一般的な言語設計の誤りであり、最高レベルで防御される。二つの事実。1.MQL4+言語では、ネストされたスコープで変数名を隠すことができます。2.ネストしたスコープで変数名を隠す場合、警告を表示する必要があり、これを無効にすることはできません。その答えとして、少なくとも2つの可能性があります。1. 名前の隠蔽を使うが、警告の存在を我慢する(悪いことに、名前の隠蔽に関する多くの警告のうち、潜在的なエラーを発見し排除するのに役立つ、本当に重要な別の警告を見逃すかもしれません)。2.言語がそのような機能を備えていても、名前の隠蔽を使用しないでください。例えば、グローバル変数の 名前をErrではなく、gErrとする。名前の隠蔽を禁止する代わりに、削除不可の警告を導入しています。それを利用する。 Алексей Тарабанов 2014.10.02 19:15 #7218 ロシア語で:正しい選択肢は最初のもので、警告は無視してください。 vlad-755 2014.10.03 06:12 #7219 tara:ロシア語で:正しい選択肢は最初のもので、警告は無視してください。 ありがとうございます。 Evgeniy Khaynatskas 2014.10.03 16:49 #7220 インクルードファイルの機能説明はどこにあるのでしょうか? 1...715716717718719720721722723724725726727728729...1178 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
コードルールはありますか?
もちろん、コードだけではありません
https://forum.mql4.com/ru/38943
なぜハングアップするのかがわからない
while(i>=1)// 未カウントのバーを循環させる。
i>=1であれば常に。
int i// バーインデックス
while(i>=1)// 未カウントのバーをループ する。
i>=1であれば常に。
そうだった、忘れてた...ありがとうございます。
i--;
if(Count>2)ExpertRemove() のコメントを外して、この関数で終了 すると、EA アンロード後に 「Deinit() triggered during unloading」という コメントが チャート上に 表示されたままと なります。
このようなEAをコンテキストメニューでチャートから削除すると、OnDeinitの Comment() がチャート上に残らない のはなぜか、ご存知の方はいらっしゃいませんか?
Shurkin:
これは、一般的な言語設計の誤りであり、最高レベルで防御される。二つの事実。
1.MQL4+言語では、ネストされたスコープで変数名を隠すことができます。
2.ネストしたスコープで変数名を隠す場合、警告を表示する必要があり、これを無効にすることはできません。
その答えとして、少なくとも2つの可能性があります。
1. 名前の隠蔽を使うが、警告の存在を我慢する(悪いことに、名前の隠蔽に関する多くの警告のうち、潜在的なエラーを発見し排除するのに役立つ、本当に重要な別の警告を見逃すかもしれません)。
2.言語がそのような機能を備えていても、名前の隠蔽を使用しないでください。例えば、グローバル変数の 名前をErrではなく、gErrとする。
名前の隠蔽を禁止する代わりに、削除不可の警告を導入しています。それを利用する。
ロシア語で:正しい選択肢は最初のもので、警告は無視してください。
ロシア語で:正しい選択肢は最初のもので、警告は無視してください。