MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1617 1...161016111612161316141615161616171618161916201621162216231624...1953 新しいコメント Nerd Trader 2021.09.17 16:44 #16161 MakarFX #:そして、もしそうなら あなたのソリューションがなぜ無限ループを引き起こさないのか、それを理解するのに時間がかかりました。とはいえ、それ自体も1回実行される。しかし、上記の解決策に促され、ブーリアン・スイッチを作成しました。 。 ulong ms=0; bool msFlag=0; void OnTimer(){ if(msFlag!=0 && GetMicrosecondCount()-ms > 100000){ ObjectSetInteger(0,"button1",OBJPROP_STATE,false); msFlag=0; } } void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { if(id==CHARTEVENT_OBJECT_CLICK && sparam=="button1"){ ms=GetMicrosecondCount(); msFlag=1; } } これで、ボタンが押されたときだけ、コードが実行されるようになりました。しかし、端末が数日間稼働したらどうなるのでしょうか?時間を返す別のメソッドのヘルプには、オーバーフローが発生すると書いてあります。 ulong ms=0; bool msFlag=0; int OnInit() { EventSetMillisecondTimer(1); ... } void OnTimer(){ if(msFlag!=0 && Seconds() > 20){ ObjectSetInteger(0,"button1",OBJPROP_STATE,false); msFlag=0; } } void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { if(id==CHARTEVENT_OBJECT_CLICK && sparam=="button1"){ msFlag=1; } } 同じコードで、GetMicrosecondCountの代わりにSeconds()を使用しても、動作しません。"Seconds() > 20" 以上の場合 - ボタンが「押された」状態でフリーズします。低い場合は動作するが、ほとんど気づかないほど速い(点滅する)。 Tretyakov Rostyslav 2021.09.17 17:39 #16162 Nerd Trader #: なぜ無限ループにならないのか、長い間理解できませんでした。とはいえ、単体でも1回実行される。しかし、上記の解決策によって、私はブーリアン・スイッチを作成することになりました。これで、ボタンが押されたときだけコードが実行されるようになりました。しかし、端末が数日間稼働したらどうなるのでしょうか?時間を返す別のメソッドのヘルプには、オーバーフローが発生すると書かれています。 同じコードで、GetMicrosecondCountの代わりにSeconds()を使用しても、動作しません。"Seconds() > 20" 以上の場合 - ボタンが「押された」状態でフリーズします。低い場合は動作するが、ほとんど気づかないほど速い(点滅する)。 すると、このようになります。 //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { if(id==CHARTEVENT_OBJECT_CLICK && sparam=="button1") {ms=TimeCurrent();} } //+------------------------------------------------------------------+ void OnTimer() { if(ms!=0&&TimeCurrent()>ms) { ObjectSetInteger(0,"button1",OBJPROP_STATE,false); ms=0; } } //+------------------------------------------------------------------+ Nerd Trader 2021.09.18 02:44 #16163 MakarFX #:すると、このようになります。 いいえ、そのように動作しません。秒が動作しないのであれば、TimeCurrent()はなおさらです。Milesecondsは、オーバーフローを引き起こすかもしれませんが、今のところ唯一の実行可能なバリアントです。 Tretyakov Rostyslav 2021.09.18 12:31 #16164 Nerd Trader #: いや、そんなことはない、秒単位がダメならTimeCurrent()も全部ダメだ。今のところ、mile-secondsが唯一動作可能なバリエーションですが、オーバーフローを引き起こす可能性があります。 効果あり! Nerd Trader 2021.09.18 14:52 #16165 MakarFX #: 効果あり! mmm は私の場合、ボタンが勝手に外れるということはありません。 Tretyakov Rostyslav 2021.09.18 15:30 #16166 Nerd Trader #: mmmは私の場合、ボタンが勝手に外れるということはないです。 マーケットが終了したため、TimeCurrent()は変更されません。クリプトで確認すると、週末に動作している Nerd Trader 2021.09.18 17:38 #16167 MakarFX #: マーケットが終了したため、TimeCurrent()は変更されません。クリプトで確認、土日も動いている 私のブローカーのCryptoは土日には取引しません。テスターで試したところ、うまくいきません。 Tretyakov Rostyslav 2021.09.18 17:53 #16168 Nerd Trader #: 週末の私のブローカーのCryptoは取引されていない。テスターで試したところ、うまくいきません。 A-Marketsのデモを開く。テスターでタイマーが作動しない。 Galim_V 2021.09.18 18:36 #16169 はじめまして、配列が表示されます。 int arr[]={6,4,6,7,55,55,7,6,77,66,66,2,2}; すべての数字が表示され、かつ繰り返しがないように変更するにはどうしたらよいですか? int re[]={6,4,7,55,77,66,2}; Vitaly Muzichenko 2021.09.18 19:04 #16170 Galim_V #:ご挨拶に、配列すべての数字が存在し、かつ繰り返しのないように変更するにはどうしたらよいでしょうか。 ライブラリを使わなくてもできる int arr[]= {6,4,6,7,55,55,7,6,77,66,66,2,2}; int re[]; //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { int AS=ArraySize(arr); int n=0; for(int i=0; i<AS; i++) { if(ArraySearch(re, arr[i])==-1) { n++; ArrayResize(re,n); re[n-1]=arr[i]; } } ArrayPrint(re); } //=============================================================================================== //------------------------------ Функция удаляет копии с массива -------------------------------+ //=============================================================================================== int ArraySearch(int& m[], int e) { for(int i=0; i<ArraySize(m); i++) { if(m[i]==e) return(i); } return(-1); } //+------------------------------------------------------------------+ 1...161016111612161316141615161616171618161916201621162216231624...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
そして、もしそうなら
。 これで、ボタンが押されたときだけ、コードが実行されるようになりました。しかし、端末が数日間稼働したらどうなるのでしょうか?時間を返す別のメソッドのヘルプには、オーバーフローが発生すると書いてあります。
同じコードで、GetMicrosecondCountの代わりにSeconds()を使用しても、動作しません。"Seconds() > 20" 以上の場合 - ボタンが「押された」状態でフリーズします。低い場合は動作するが、ほとんど気づかないほど速い(点滅する)。
なぜ無限ループにならないのか、長い間理解できませんでした。とはいえ、単体でも1回実行される。しかし、上記の解決策によって、私はブーリアン・スイッチを作成することになりました。これで、ボタンが押されたときだけコードが実行されるようになりました。しかし、端末が数日間稼働したらどうなるのでしょうか?時間を返す別のメソッドのヘルプには、オーバーフローが発生すると書かれています。 同じコードで、GetMicrosecondCountの代わりにSeconds()を使用しても、動作しません。"Seconds() > 20" 以上の場合 - ボタンが「押された」状態でフリーズします。低い場合は動作するが、ほとんど気づかないほど速い(点滅する)。
すると、このようになります。
すると、このようになります。
いや、そんなことはない、秒単位がダメならTimeCurrent()も全部ダメだ。今のところ、mile-secondsが唯一動作可能なバリエーションですが、オーバーフローを引き起こす可能性があります。
効果あり!
mmmは私の場合、ボタンが勝手に外れるということはないです。
マーケットが終了したため、TimeCurrent()は変更されません。クリプトで確認、土日も動いている
週末の私のブローカーのCryptoは取引されていない。テスターで試したところ、うまくいきません。
はじめまして、配列が表示されます。
すべての数字が表示され、かつ繰り返しがないように変更するにはどうしたらよいですか?
ご挨拶に、配列
すべての数字が存在し、かつ繰り返しのないように変更するにはどうしたらよいでしょうか。
ライブラリを使わなくてもできる