エラー、バグ、質問 - ページ 2614 1...260726082609261026112612261326142615261626172618261926202621...3185 新しいコメント fxsaber 2019.12.08 07:42 #26131 Andrei Kossarev: インジケータからのバイナリ読み込みがうまくいかない、EAからの同様のコードは問題なく動作する インジケーターのChartScreenShotは、非同期で動作している可能性が高いです。 Andrei Kossarev 2019.12.08 08:14 #26132 fxsaber: インジケーターのChartScreenShotは非同期で動作することがほとんどです。 確認しました、そのためループを入れました fxsaber 2019.12.08 08:18 #26133 Andrei Kossarev: 確認しました、だからループを入れました ループを終了しても、ファイルがあることを保証するものではありません。 Alexey Viktorov 2019.12.08 08:32 #26134 Andrei Kossarev: Не работает чтение бинарного файла из индикатора, аналогичный код из советника работает без проблем! void TestPhoto() { string name; MqlDateTime dtLocal; TimeToStruct(TimeLocal(), dtLocal); string date = IntegerToString(dtLocal.year) + IntegerToString(dtLocal.mon, 2, '0') + IntegerToString(dtLocal.day, 2, '0'); string time = IntegerToString(dtLocal.hour, 2, '0') + "." + IntegerToString(dtLocal.min, 2, '0') + "." + IntegerToString(dtLocal.sec, 2, '0'); name = "ScreenShots/" + date + "/" + _Symbol + "_" +date + "_" + time + ".png"; if (!ChartScreenShot(0, name, 1920,1200, ALIGN_RIGHT)) return; ResetLastError(); for (int i=0; i < 100000; i++){ if (FileIsExist(name,false) && FileSize(name) > 0) break; } //--- int flags=FILE_READ|FILE_BIN|FILE_SHARE_READ; //--- int file=FileOpen(name,flags); if(file<0) { Print("Операция FileOpen неудачна, ошибка ",GetLastError()); return; } uchar photo[]; FileReadArray(file,photo); FileClose(file); Print(ArraySize(photo)); } コードにエラーがあるのは気にならないのですか? ulong FileSize( int file_handle // handle файла ); FileSize関数は int型変数を想定しており、文字列を入れると... Andrei Kossarev 2019.12.08 19:38 #26135 //+------------------------------------------------------------------+ //| Test.mq5 | //| Copyright 2019, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2019, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property indicator_chart_window #property indicator_plots 1 #property indicator_buffers 1 #include <Trident\TCoreMain.mqh> //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { ::EventSetMillisecondTimer(500); return(INIT_SUCCEEDED); } void OnDeinit(const int reason) { ::EventKillTimer(); } void OnTimer() { ::EventKillTimer(); TestPhoto(); } //+------------------------------------------------------------------+ //| 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[]) { //--- //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+ void TestPhoto() { string name; MqlDateTime dtLocal; TimeToStruct(TimeLocal(), dtLocal); string date = IntegerToString(dtLocal.year) + IntegerToString(dtLocal.mon, 2, '0') + IntegerToString(dtLocal.day, 2, '0'); string time = IntegerToString(dtLocal.hour, 2, '0') + "." + IntegerToString(dtLocal.min, 2, '0') + "." + IntegerToString(dtLocal.sec, 2, '0'); name = "ScreenShots/" + date + "/" + _Symbol + "_" +date + "_" + time + ".png"; if (!ChartScreenShot(0, name, 1920,1200, ALIGN_RIGHT)) return; ResetLastError(); //--- int flags=FILE_READ|FILE_BIN|FILE_SHARE_READ; //--- int file=FileOpen(name,flags); if(file<0) { Print("Операция FileOpen неудачна, ошибка ",GetLastError()); return; } for (int i=0; i < 100000; i++){ if (FileSize(file) > 0) break; } uchar photo[]; FileReadArray(file,photo); FileClose(file); Print(ArraySize(photo)); } 修正したコード、まだ動作しない Alexey Viktorov 2019.12.08 20:09 #26136 Andrei Kossarev: 修正したコード、まだ動作しない コードを2つの別々の関数に分割してみてください。 1.ファイルを読み、フォローする。 2.スクリーンショットを撮る そして、その結果がnullであれば、フラグを立ててみてください。そして、関数呼び出しの シーケンスは、最初に読もうとするが、フラグによって読み取りがスキップされ、次にスキム、フラグによって実行され、フラグが切り替わります。そして、その次のtickでファイルが読み込まれます。 Михаил 2019.12.09 08:07 #26137 提案 - ユーザー情報を保存するための別のフィールドを追加し、ブローカーによる変更にアクセスできず、ロールオーバー時に保存することが必須。 要するに、ユーザーによってのみ変更可能な非破壊のフィールドです。 Vladislav Andruschenko 2019.12.09 09:07 #26138 Михаил:提案 - ユーザー情報を保存するための別のフィールドを追加し、ブローカーによる変更にアクセスできず、ロールオーバー時に保存することが必須。 要するに、ユーザーによってのみ変更可能な非破壊のフィールドです。 プラス100600 Igor Makanu 2019.12.09 09:14 #26139 Vladislav Andruschenko: プラス100600 MTのサーバー部分は書き換えが必要で、ここ10年以上されていないので、近い将来されるでしょう。 注文の状態をファイルに書き込むのですが、ユニバーサルデータベースのテンプレート(https://www.mql5.com/ru/forum/85652/page17#comment_12370424)を使いました。 開発者からの最新オファーです - SQLiteデータベースhttps://www.mql5.com/ru/forum/327940 Vladislav Andruschenko 2019.12.09 09:31 #26140 Igor Makanu: MTのサーバー部分は書き換えが必要で、ここ10年以上されていないので、近い将来されるでしょう。 注文の状態をファイルに書き込むのですが、ユニバーサルデータベースのテンプレート(https://www.mql5.com/ru/forum/85652/page17#comment_12370424)を使いました。 これは開発者からの最新の提案です - SQLite DBhttps://www.mql5.com/ru/forum/327940はい、私もDBに情報を保存しています。でも......でも......でも......でも......。 1...260726082609261026112612261326142615261626172618261926202621...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
インジケータからのバイナリ読み込みがうまくいかない、EAからの同様のコードは問題なく動作する
インジケーターのChartScreenShotは、非同期で動作している可能性が高いです。
インジケーターのChartScreenShotは非同期で動作することがほとんどです。
確認しました、そのためループを入れました
確認しました、だからループを入れました
ループを終了しても、ファイルがあることを保証するものではありません。
Andrei Kossarev:
Не работает чтение бинарного файла из индикатора, аналогичный код из советника работает без проблем!
コードにエラーがあるのは気にならないのですか?
FileSize関数は int型変数を想定しており、文字列を入れると...
修正したコード、まだ動作しない
修正したコード、まだ動作しない
コードを2つの別々の関数に分割してみてください。
1.ファイルを読み、フォローする。
2.スクリーンショットを撮る
そして、その結果がnullであれば、フラグを立ててみてください。そして、関数呼び出しの シーケンスは、最初に読もうとするが、フラグによって読み取りがスキップされ、次にスキム、フラグによって実行され、フラグが切り替わります。そして、その次のtickでファイルが読み込まれます。
提案 - ユーザー情報を保存するための別のフィールドを追加し、ブローカーによる変更にアクセスできず、ロールオーバー時に保存することが必須。
要するに、ユーザーによってのみ変更可能な非破壊のフィールドです。
提案 - ユーザー情報を保存するための別のフィールドを追加し、ブローカーによる変更にアクセスできず、ロールオーバー時に保存することが必須。
要するに、ユーザーによってのみ変更可能な非破壊のフィールドです。
プラス100600
MTのサーバー部分は書き換えが必要で、ここ10年以上されていないので、近い将来されるでしょう。
注文の状態をファイルに書き込むのですが、ユニバーサルデータベースのテンプレート(https://www.mql5.com/ru/forum/85652/page17#comment_12370424)を使いました。
開発者からの最新オファーです - SQLiteデータベースhttps://www.mql5.com/ru/forum/327940
MTのサーバー部分は書き換えが必要で、ここ10年以上されていないので、近い将来されるでしょう。
注文の状態をファイルに書き込むのですが、ユニバーサルデータベースのテンプレート(https://www.mql5.com/ru/forum/85652/page17#comment_12370424)を使いました。
これは開発者からの最新の提案です - SQLite DBhttps://www.mql5.com/ru/forum/327940