MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1870 1...186318641865186618671868186918701871187218731874187518761877...1953 新しいコメント Maksim Emeliashin 2022.01.20 10:42 #18691 データベースからデータを読み込もうとして、2時間ほど格闘しているのですが、できません。 以下は、そのテストのコードです。 簡単に説明するとデータベースは1つのテーブルで作成されます(データベースが存在する場合は、テーブルを削除して再作成されます)。テーブルに1行が追加されます。 その後、データベースを閉じ、再び開く。このレコードを単純に選択すると、コマンドはクエリ結果が空であるというエラーを返します。 IDEで確認 - すべて同じクエリで選択されています。バグなのか修正なのかわからない? int OnInit() { //--- int db_handle = DatabaseOpen("test3", DATABASE_OPEN_COMMON | DATABASE_OPEN_CREATE | DATABASE_OPEN_READWRITE); if (db_handle != INVALID_HANDLE) { // Структура таблицы if (DatabaseTableExists(db_handle, "ea_dsc")) if(!DatabaseExecute(db_handle, "DROP TABLE IF EXISTS ea_dsc")) Print("Failed to drop table with code ", GetLastError()); string t_create = "CREATE TABLE ea_dsc (dsc_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, " " ea_symb TEXT NOT NULL, dt_from TEXT NOT NULL, dt_to TEXT, magic_buy INTEGER NOT NULL, " " magic_sell INTEGER NOT NULL, version TEXT NOT NULL, ea_method TEXT NOT NULL)"; if(!DatabaseExecute(db_handle, t_create)) Print("Failed to create table with code ", GetLastError()); string t_add = "INSERT INTO ea_dsc (ea_symb, dt_from, dt_to, magic_buy, magic_sell, version, ea_method)" "VALUES ('EURUSD', 'dt_from', NULL, '123', '456', 'version', 'ea_method')"; if(!DatabaseExecute(db_handle, t_add)) Print("Failed to add table data with code ", GetLastError()); DatabaseClose(db_handle); } db_handle = DatabaseOpen("test3", DATABASE_OPEN_COMMON | DATABASE_OPEN_READWRITE); if (db_handle != INVALID_HANDLE) { // Запрос string s_quer = "SELECT dsc_id, ea_symb, dt_from, dt_to, magic_buy," "magic_sell, version, ea_method FROM ea_dsc WHERE ea_symb = ?1"; int c_request = DatabasePrepare(db_handle, s_quer); if (c_request != INVALID_HANDLE) { if (DatabaseBind(c_request, 0, "EURUSD")) if (DatabaseRead(c_request)) { Print("Found!"); } else PrintFormat("Error=%d", GetLastError()); DatabaseFinalize(c_request); } DatabaseClose(db_handle); } //--- return(INIT_SUCCEEDED); } 作品の結果 PrintFormat("Error=%d", GetLastError()); また、全コードを添付 ファイル: testDB_NW.mq5 8 kb x572intraday 2022.01.20 17:08 #18692 なぜ、入力パラメータを ループさせることができないのでしょうか?なぜ、こんな仕打ちをするのですか? Alexey Viktorov 2022.01.20 17:31 #18693 x572intraday #: なぜ、入力パラメータを ループで処理できないのですか?なぜ、こんな仕打ちをするのですか? こんなことして何になるんだ?秘密を共有する... Vladimir Makhnin 2022.01.20 18:05 #18694 マーケットからEAをインストールするにはどうすればよいですか? マーケットでダウンロードを押すと、デフォルトで間違ったターミナルが開いてしまいます。削除しました。ダウンロード」ボタンを押しても何も起こらない Mihail Matkovskij 2022.01.20 21:00 #18695 Vladimir Makhnin #: マーケットからEAをインストールするにはどうすればよいですか? マーケットでダウンロードを押したら、デフォルトで間違った端末が開かれました。削除しました。ダウンロード」ボタンを押しても何も起こらない。 どのようなブラウザでダウンロードしていますか? x572intraday 2022.01.21 00:09 #18696 Alexey Viktorov #:こんなことして何になるんだ?秘密を共有する...次スレにあったよ、遠くまで行く必要はない。enum LIST { L01=111, // ITEM 1 L02=222, // ITEM 2 L03=333, // ITEM 3 L04=444, // ITEM 4 L05=555, // ITEM 5 L06=666, // ITEM 6 L07=777, // ITEM 7 L08=888, // ITEM 8 }; input LIST LISTING_01=L01; input LIST LISTING_02=L02; input LIST LISTING_03=L03; input LIST LISTING_04=L04; input LIST LISTING_05=L05; input LIST LISTING_06=L06; input LIST LISTING_07=L07; input LIST LISTING_08=L08; LArray[0]=LISTING_01; LArray[1]=LISTING_02; LArray[2]=LISTING_03; LArray[3]=LISTING_04; LArray[4]=LISTING_05; LArray[5]=LISTING_06; LArray[6]=LISTING_07; LArray[7]=LISTING_08;ループではなく、手でLArrayの配列に全部突っ込むのは犬の喜びです。そして、これはほんの一例です。実際には、多くの列挙があり得る。 enumやENUM_TIMEFRAMESの列挙がないことについても、何も言いません。面倒くさい。 Mihail Matkovskij 2022.01.21 00:22 #18697 x572intraday #: enumとENUM_TIMEFRAMESの列挙がないことについては言及しない。 むかし、興味本位で同じようなオーバーシュートをやってみたことがあります。 トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム サービスデスクで開発者とコミュニケーション! ミハイル・マトコフスキー、2019.10.05 22:07 定数の数だけオフセットや左右のシフトを行う必要がある場合、非常に便利です。こんな感じです。 #property script_show_inputs //--- input parameters input uint shift = 1; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool incE_TF(ENUM_TIMEFRAMES &__tf, int _n = 1) { int i = __tf, n = _n; if(_n > 0) { while(i < PERIOD_W1) { i++; if(StringFind(EnumToString((ENUM_TIMEFRAMES)i), "PERIOD_", 0) == 0){ n--; if(n == 0) { __tf = (ENUM_TIMEFRAMES)i; return true; } } } } else if(_n < 0) { while(i > PERIOD_CURRENT) { i--; if(StringFind(EnumToString((ENUM_TIMEFRAMES)i), "PERIOD_", 0) == 0){ n++; if(n == 0) { __tf = (ENUM_TIMEFRAMES)i; return true; } } } } return false; } //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { ENUM_TIMEFRAMES i; i = PERIOD_CURRENT; Print("Go"); Print(EnumToString(i), " = ", i); while(i < PERIOD_W1) { if(!incE_TF(i, shift)) break; Print(EnumToString(i), " = ", i); } i = PERIOD_W1; Print("Back"); Print(EnumToString(i), " = ", i); while(i > PERIOD_CURRENT) { if(!incE_TF(i, -shift)) break; Print(EnumToString(i), " = ", i); } } 1だけオフセットされる。 2019.10.05 23:04:12.198 EnumTimeframeIteration (EURUSD,M12) Go 2019.10.05 23:04:12.198 EnumTimeframeIteration (EURUSD,M12) PERIOD_CURRENT = 0 2019.10.05 23:04:12.198 EnumTimeframeIteration (EURUSD,M12) PERIOD_M1 = 1 2019.10.05 23:04:12.198 EnumTimeframeIteration (EURUSD,M12) PERIOD_M2 = 2 2019.10.05 23:04:12.198 EnumTimeframeIteration (EURUSD,M12) PERIOD_M3 = 3 2019.10.05 23:04:12.198 EnumTimeframeIteration (EURUSD,M12) PERIOD_M4 = 4 2019.10.05 23:04:12.198 EnumTimeframeIteration (EURUSD,M12) PERIOD_M5 = 5 2019.10.05 23:04:12.198 EnumTimeframeIteration (EURUSD,M12) PERIOD_M6 = 6 2019.10.05 23:04:12.198 EnumTimeframeIteration (EURUSD,M12) PERIOD_M10 = 10 2019.10.05 23:04:12.198 EnumTimeframeIteration (EURUSD,M12) PERIOD_M12 = 12 2019.10.05 23:04:12.198 EnumTimeframeIteration (EURUSD,M12) PERIOD_M15 = 15 2019.10.05 23:04:12.198 EnumTimeframeIteration (EURUSD,M12) PERIOD_M20 = 20 2019.10.05 23:04:12.198 EnumTimeframeIteration (EURUSD,M12) PERIOD_M30 = 30 2019.10.05 23:04:12.204 EnumTimeframeIteration (EURUSD,M12) PERIOD_H1 = 16385 2019.10.05 23:04:12.204 EnumTimeframeIteration (EURUSD,M12) PERIOD_H2 = 16386 2019.10.05 23:04:12.204 EnumTimeframeIteration (EURUSD,M12) PERIOD_H3 = 16387 2019.10.05 23:04:12.204 EnumTimeframeIteration (EURUSD,M12) PERIOD_H4 = 16388 2019.10.05 23:04:12.204 EnumTimeframeIteration (EURUSD,M12) PERIOD_H6 = 16390 2019.10.05 23:04:12.204 EnumTimeframeIteration (EURUSD,M12) PERIOD_H8 = 16392 2019.10.05 23:04:12.204 EnumTimeframeIteration (EURUSD,M12) PERIOD_H12 = 16396 2019.10.05 23:04:12.204 EnumTimeframeIteration (EURUSD,M12) PERIOD_D1 = 16408 2019.10.05 23:04:12.210 EnumTimeframeIteration (EURUSD,M12) PERIOD_W1 = 32769 2019.10.05 23:04:12.210 EnumTimeframeIteration (EURUSD,M12) Back 2019.10.05 23:04:12.210 EnumTimeframeIteration (EURUSD,M12) PERIOD_W1 = 32769 2019.10.05 23:04:12.217 EnumTimeframeIteration (EURUSD,M12) PERIOD_D1 = 16408 2019.10.05 23:04:12.217 EnumTimeframeIteration (EURUSD,M12) PERIOD_H12 = 16396 2019.10.05 23:04:12.217 EnumTimeframeIteration (EURUSD,M12) PERIOD_H8 = 16392 2019.10.05 23:04:12.217 EnumTimeframeIteration (EURUSD,M12) PERIOD_H6 = 16390 2019.10.05 23:04:12.217 EnumTimeframeIteration (EURUSD,M12) PERIOD_H4 = 16388 2019.10.05 23:04:12.217 EnumTimeframeIteration (EURUSD,M12) PERIOD_H3 = 16387 2019.10.05 23:04:12.217 EnumTimeframeIteration (EURUSD,M12) PERIOD_H2 = 16386 2019.10.05 23:04:12.217 EnumTimeframeIteration (EURUSD,M12) PERIOD_H1 = 16385 2019.10.05 23:04:12.223 EnumTimeframeIteration (EURUSD,M12) PERIOD_M30 = 30 2019.10.05 23:04:12.223 EnumTimeframeIteration (EURUSD,M12) PERIOD_M20 = 20 2019.10.05 23:04:12.223 EnumTimeframeIteration (EURUSD,M12) PERIOD_M15 = 15 2019.10.05 23:04:12.223 EnumTimeframeIteration (EURUSD,M12) PERIOD_M12 = 12 2019.10.05 23:04:12.223 EnumTimeframeIteration (EURUSD,M12) PERIOD_M10 = 10 2019.10.05 23:04:12.223 EnumTimeframeIteration (EURUSD,M12) PERIOD_M6 = 6 2019.10.05 23:04:12.223 EnumTimeframeIteration (EURUSD,M12) PERIOD_M5 = 5 2019.10.05 23:04:12.223 EnumTimeframeIteration (EURUSD,M12) PERIOD_M4 = 4 2019.10.05 23:04:12.223 EnumTimeframeIteration (EURUSD,M12) PERIOD_M3 = 3 2019.10.05 23:04:12.223 EnumTimeframeIteration (EURUSD,M12) PERIOD_M2 = 2 2019.10.05 23:04:12.223 EnumTimeframeIteration (EURUSD,M12) PERIOD_M1 = 1 2019.10.05 23:04:12.223 EnumTimeframeIteration (EURUSD,M12) PERIOD_CURRENT = 0 2でオフセットされます。 2019.10.05 23:06:11.462 EnumTimeframeIteration (EURUSD,M12) Go 2019.10.05 23:06:11.462 EnumTimeframeIteration (EURUSD,M12) PERIOD_CURRENT = 0 2019.10.05 23:06:11.462 EnumTimeframeIteration (EURUSD,M12) PERIOD_M2 = 2 2019.10.05 23:06:11.462 EnumTimeframeIteration (EURUSD,M12) PERIOD_M4 = 4 2019.10.05 23:06:11.462 EnumTimeframeIteration (EURUSD,M12) PERIOD_M6 = 6 2019.10.05 23:06:11.463 EnumTimeframeIteration (EURUSD,M12) PERIOD_M12 = 12 2019.10.05 23:06:11.463 EnumTimeframeIteration (EURUSD,M12) PERIOD_M20 = 20 2019.10.05 23:06:11.469 EnumTimeframeIteration (EURUSD,M12) PERIOD_H1 = 16385 2019.10.05 23:06:11.469 EnumTimeframeIteration (EURUSD,M12) PERIOD_H3 = 16387 2019.10.05 23:06:11.469 EnumTimeframeIteration (EURUSD,M12) PERIOD_H6 = 16390 2019.10.05 23:06:11.469 EnumTimeframeIteration (EURUSD,M12) PERIOD_H12 = 16396 2019.10.05 23:06:11.475 EnumTimeframeIteration (EURUSD,M12) PERIOD_W1 = 32769 2019.10.05 23:06:11.475 EnumTimeframeIteration (EURUSD,M12) Back 2019.10.05 23:06:11.475 EnumTimeframeIteration (EURUSD,M12) PERIOD_W1 = 32769 2019.10.05 23:06:11.482 EnumTimeframeIteration (EURUSD,M12) PERIOD_H12 = 16396 2019.10.05 23:06:11.482 EnumTimeframeIteration (EURUSD,M12) PERIOD_H6 = 16390 2019.10.05 23:06:11.482 EnumTimeframeIteration (EURUSD,M12) PERIOD_H3 = 16387 2019.10.05 23:06:11.482 EnumTimeframeIteration (EURUSD,M12) PERIOD_H1 = 16385 2019.10.05 23:06:11.488 EnumTimeframeIteration (EURUSD,M12) PERIOD_M20 = 20 2019.10.05 23:06:11.488 EnumTimeframeIteration (EURUSD,M12) PERIOD_M12 = 12 2019.10.05 23:06:11.488 EnumTimeframeIteration (EURUSD,M12) PERIOD_M6 = 6 2019.10.05 23:06:11.488 EnumTimeframeIteration (EURUSD,M12) PERIOD_M4 = 4 2019.10.05 23:06:11.488 EnumTimeframeIteration (EURUSD,M12) PERIOD_M2 = 2 2019.10.05 23:06:11.488 EnumTimeframeIteration (EURUSD,M12) PERIOD_CURRENT = 0 しかし、この方法でもスイッチ方式に速度で負ける。 だから、望めば何でも可能なんだ! Maksim Emeliashin 2022.01.21 02:02 #18698 x572intraday #: なぜループ内で入力パラメータを 列挙できないのですか?なぜ、私たちを罰するのですか? という質問に参加します。 EnumToString関数があるのに、なぜStringToEnumがないのでしょうか? データベース内のenumの値を数値として保存することは、途中でenumに新しい値を追加すると-それだけでデータベース内のデータがかぼちゃになってしまい、数値として読めなくなるので、目で見て確認することができない。 Maksim Emeliashin 2022.01.21 03:54 #18699 データベースのクエリーパラメーターに明示的にNULL値を渡す方法はありますか? このような構成は、コンパイル時のエ ラーの原因となります。 res = DatabaseBind(request, column, NULL); Vitaly Muzichenko 2022.01.21 04:09 #18700 Maksim Emeliashin コンパイル時のエ ラーの原因となります。 DatabaseBind(request, column, ""); 1...186318641865186618671868186918701871187218731874187518761877...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
データベースからデータを読み込もうとして、2時間ほど格闘しているのですが、できません。
以下は、そのテストのコードです。
簡単に説明するとデータベースは1つのテーブルで作成されます(データベースが存在する場合は、テーブルを削除して再作成されます)。テーブルに1行が追加されます。
その後、データベースを閉じ、再び開く。このレコードを単純に選択すると、コマンドはクエリ結果が空であるというエラーを返します。
IDEで確認 - すべて同じクエリで選択されています。バグなのか修正なのかわからない?
作品の結果
また、全コードを添付
なぜ、入力パラメータを ループで処理できないのですか?なぜ、こんな仕打ちをするのですか?
こんなことして何になるんだ?秘密を共有する...
マーケットでダウンロードを押すと、デフォルトで間違ったターミナルが開いてしまいます。削除しました。ダウンロード」ボタンを押しても何も起こらない
マーケットからEAをインストールするにはどうすればよいですか? マーケットでダウンロードを押したら、デフォルトで間違った端末が開かれました。削除しました。ダウンロード」ボタンを押しても何も起こらない。
どのようなブラウザでダウンロードしていますか?
こんなことして何になるんだ?秘密を共有する...
次スレにあったよ、遠くまで行く必要はない。
ループではなく、手でLArrayの配列に全部突っ込むのは犬の喜びです。そして、これはほんの一例です。実際には、多くの列挙があり得る。
enumやENUM_TIMEFRAMESの列挙がないことについても、何も言いません。面倒くさい。enumとENUM_TIMEFRAMESの列挙がないことについては言及しない。
むかし、興味本位で同じようなオーバーシュートをやってみたことがあります。
トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム
サービスデスクで開発者とコミュニケーション!
ミハイル・マトコフスキー、2019.10.05 22:07
定数の数だけオフセットや左右のシフトを行う必要がある場合、非常に便利です。こんな感じです。
1だけオフセットされる。
2でオフセットされます。
しかし、この方法でもスイッチ方式に速度で負ける。
なぜループ内で入力パラメータを 列挙できないのですか?なぜ、私たちを罰するのですか?
という質問に参加します。
EnumToString関数があるのに、なぜStringToEnumがないのでしょうか?
データベース内のenumの値を数値として保存することは、途中でenumに新しい値を追加すると-それだけでデータベース内のデータがかぼちゃになってしまい、数値として読めなくなるので、目で見て確認することができない。
データベースのクエリーパラメーターに明示的にNULL値を渡す方法はありますか?
このような構成は、コンパイル時のエ ラーの原因となります。
res = DatabaseBind(request, column, NULL);
DatabaseBind(request, column, "");