カスタムシンボル。エラー、バグ、質問、提案。 - ページ 18 1...111213141516171819202122232425...34 新しいコメント fxsaber 2019.06.21 16:46 #171 バグ24。 プローブされたダニと輸入された ダニのデータベースが正しく共存していない。 #define PRINT(A) Print(#A + " = " + (string)(A)) void OnInit() { MathSrand((int)TimeLocal()); EventSetMillisecondTimer(20); // С такой частотой будем пробрасывать тики } void OnTimer() { static bool FirstRun = true; static const string Name = _Symbol + (string)MathRand(); static MqlTick Ticks[]; static int Pos = 0; if (FirstRun) { if (CustomSymbolCreate(Name, NULL, _Symbol) && SymbolSelect(Name, true)) // Создали символ PRINT(CopyTicks(_Symbol, Ticks, COPY_TICKS_ALL, (ulong)D'2019.06.20' * 1000, 5)); // Взяли 5 тиков для проброса FirstRun = false; } else if (Pos < ArraySize(Ticks)) { MqlTick Tick[1]; Tick[0] = Ticks[Pos++]; PRINT(CustomTicksAdd(Name, Tick)); // Пробросили тик. PRINT(CustomTicksReplace(Name, Tick[0].time_msc, Tick[0].time_msc, Tick)); // Заменили его же через импорт. } else { PRINT(CopyTicksRange(Name, Ticks)); // Взяли всю тиковую историю ArrayPrint(Ticks); // Распечатали ее. ExpertRemove(); } } 結果 CopyTicks(_Symbol,Ticks,COPY_TICKS_ALL,(ulong)D'2019.06.20'*1000,5) = 5 CustomTicksAdd(Name,Tick) = 1 CustomTicksReplace(Name,Tick[0].time_msc,Tick[0].time_msc,Tick) = 1 CustomTicksAdd(Name,Tick) = 1 CustomTicksReplace(Name,Tick[0].time_msc,Tick[0].time_msc,Tick) = 1 CustomTicksAdd(Name,Tick) = 1 CustomTicksReplace(Name,Tick[0].time_msc,Tick[0].time_msc,Tick) = 1 CustomTicksAdd(Name,Tick) = 1 CustomTicksReplace(Name,Tick[0].time_msc,Tick[0].time_msc,Tick) = 1 CustomTicksAdd(Name,Tick) = 1 CustomTicksReplace(Name,Tick[0].time_msc,Tick[0].time_msc,Tick) = 1 CopyTicksRange(Name,Ticks) = 10 [time] [bid] [ask] [last] [volume] [time_msc] [flags] [volume_real] [0] 2019.06.20 00:00:05 1.12255 1.12268 0.0000 0 1560988805004 6 0.00000 [1] 2019.06.20 00:00:07 1.12259 1.12268 0.0000 0 1560988807693 2 0.00000 [2] 2019.06.20 00:00:08 1.12259 1.12267 0.0000 0 1560988808627 4 0.00000 [3] 2019.06.20 00:00:09 1.12256 1.12267 0.0000 0 1560988809561 2 0.00000 [4] 2019.06.20 00:00:10 1.12255 1.12268 0.0000 0 1560988810083 6 0.00000 [5] 2019.06.20 00:00:05 1.12255 1.12268 0.0000 0 1560988805004 6 0.00000 [6] 2019.06.20 00:00:07 1.12259 1.12268 0.0000 0 1560988807693 6 0.00000 [7] 2019.06.20 00:00:08 1.12259 1.12267 0.0000 0 1560988808627 6 0.00000 [8] 2019.06.20 00:00:09 1.12256 1.12267 0.0000 0 1560988809561 6 0.00000 [9] 2019.06.20 00:00:10 1.12255 1.12268 0.0000 0 1560988810083 6 0.00000 続けて5匹のダニを再採取/輸入したが、履歴では10匹のダニが見つかっている。同時に5ティックが先に進み、その後、同じ5ティックが進む。すなわち、ティックデータベースのエントリーの時間さえも連続しないのです。 後半のティックのフラグが、前半と違うので注意してください。 zull.kzn 2019.06.24 08:10 #172 Slava: 再現性がない。棒グラフを取り込むと、空のグラフがすぐに更新されます。 チャートを開けない場合はどうなりますか?バーをインポートした後にチャートを 開く または、チャートを閉じてから開く。 または、チャートのコンテキストメニューから更新します。 リーディングクエスチョン ))) 鉄格子を輸入して、窓を全部閉めました。 その後、シンボルを再度開き、Barsタブで私のシンボルを選択しました。 バーは表示させるべきですか?白紙です。 ロードボタン(カバーリング期間事前選択)を押しても、表示されない。 バージョン1970を試しましたが、同じ状況です。 チャートとプログラムを開いたり閉じたりしても、解決しない。 まだプログラミングには手をつけていません。 まあ、そうなんでしょうね...。 もし可能性があるなら、リモートで接続して、彼女が何を必要としているか、見てあげてください。 zull.kzn 2019.06.27 21:48 #173 https://www.mql5.com/ru/forum/147666/page2#comment_3720399 誰かの役に立つかもしれない。 しかし、私には別の問題がありました 1.ファイル2019.hccに加え、ファイル1970.hccが生成されました。 削除したら、生き返ったようです。 2. oまたはhがl hの外側にある赤線があった。 1970がどこから来たのかは不明です。 そのような日付も、空白の行もなかった キャンドルが多いかも、5万円以下で それは見ることが可能ですが、どのようにグラフより目に見える振幅を広げるために? オブジェクトを描画する際に、ローソク足の両端を正確に狙う必要があります。 プロパティの入力や値の設定を手動で行うのは面倒だ グラフが最後にずれてしまい、巻き戻さなければならない。 最後の1小節にジャンプしないようにするにはどうすればよいのでしょうか? Тестер не работает 2013.11.04www.mql5.com 2013.11.03 17:25:58 TestGenerator: no history data 'EURUSD1' Вот такое сообщение появляется в журнале после нажатия кнопки "Старт"... Stanislav Korotky 2019.08.22 23:11 #174 トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム バグ、バグ、質問 スタニスラフ・コロツキー さん 2019.08.22 17:34 カスタムキャラクターで以下のような問題が発生した方はいらっしゃいますか?CustomRatesUpdate関数は正常な引用符を渡しますが、実際にはチャートとデータウィンドウが何か変になります(この場合、in closeとlowの値が渡された値の100倍になっています)。 また、並行してCustomTicksAddでシングルティックをログと同じ終値の値でエミュレートしています(CustomRatesUpdateの直前)、つまり、引用符の縮小値がどこから来ているのかが不明です。 UPDです。 私はUSDCADで "逆 "の状況を得ました - 書き込み後に相場が10倍になりました。これは私が取得しているログです。 2019.08.23 00:04:10.579 RenkoCharts (USDCAD,M1) [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume] 2019.08.23 00:04:10.579 RenkoCharts (USDCAD,M1) [0] 2019.08.23 00:02:00 1.32987 1.32987 1.32980 1.32987 457 48 0 2019.08.23 00:04:10.579 RenkoCharts (USDCAD,M1) Retry: 1 0 2019.08.23 00:04:10.579 RenkoCharts (USDCAD,M1) [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume] 2019.08.23 00:04:10.579 RenkoCharts (USDCAD,M1) [0] 2019.08.23 00:02:00 1.32980 13.29730 1.32980 13.29730 457 52 0 最初のArrayPrintはCustomRatesUpdateで書き込んだもの、2番目のArrayPrintは書き込み直後の直近のバーからCopyRatesを使って読み込んだものです。まず、違いはオープンの下一桁ですが、それ以上にハイとクローズが10倍になっています。 PS.ティックではすべてOKです。 fxsaber 2019.08.23 02:22 #175 Stanislav Korotky: PS.ダニに異常はない。 バグ22。 Stanislav Korotky 2019.08.23 10:56 #176 fxsaber: バグ22。 最新のビルドでは修正されているのでしょうか? Stanislav Korotky 2019.08.26 16:05 #177 4022エラーとは何ですか?カスタム文字にバーを書き込もうとすると何かと面倒です。でも、コードから判断すると、汎用的なものですね。 最初はこれでした。 KI 0 16:24:20.957 RenkoCharts (XAUUSD,M1) Alert: Error on writing custom record: 3082, err: 4401 HS 0 16:24:20.957 RenkoCharts (XAUUSD,M1) Failed to add: LE 0 16:24:20.957 RenkoCharts (XAUUSD,M1) [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume] KG 0 16:24:20.957 RenkoCharts (XAUUSD,M1) [0] 2019.08.28 00:06:00 1542.500 1542.500 1542.400 1542.400 15 170 0 GF 0 16:24:20.957 RenkoCharts (XAUUSD,M1) Last known 10 M1: JN 0 16:24:20.973 RenkoCharts (XAUUSD,M1) [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume] JJ 0 16:24:20.973 RenkoCharts (XAUUSD,M1) [0] 2019.08.28 00:00:00 1543.100 1543.100 1543.000 1543.000 4 180 0 DE 0 16:24:20.973 RenkoCharts (XAUUSD,M1) [1] 2019.08.28 00:01:00 1543.000 1543.000 1542.900 1542.900 2 180 0 EP 0 16:24:20.973 RenkoCharts (XAUUSD,M1) [2] 2019.08.28 00:02:00 1542.900 1542.900 1542.800 1542.800 1 180 0 ES 0 16:24:20.973 RenkoCharts (XAUUSD,M1) [3] 2019.08.28 00:03:00 1542.800 1542.800 1542.700 1542.700 1 180 0 EN 0 16:24:20.973 RenkoCharts (XAUUSD,M1) [4] 2019.08.28 00:04:00 1542.700 1542.700 1542.600 1542.600 1 180 0 QH 0 16:24:20.973 RenkoCharts (XAUUSD,M1) [5] 2019.08.28 00:05:00 1542.600 1542.700 1542.500 1542.500 30 170 0 RE 0 16:24:20.973 RenkoCharts (XAUUSD,M1) [6] 1970.01.01 00:00:00 +0.000 +0.000 +0.000 +0.000 5365435195 1 1827299883397152768 FF 0 16:24:20.973 RenkoCharts (XAUUSD,M1) [7] 2106.02.07 06:28:16 0.078 +0.000 +0.000 +0.000 4597373804417646592 1 9481 KR 0 16:24:20.973 RenkoCharts (XAUUSD,M1) [8] 1970.01.01 00:00:00 +0.000 +0.000 +0.000 +0.000 136454688 1 1827300776750350336 KL 0 16:24:20.973 RenkoCharts (XAUUSD,M1) [9] 0000.00.00 00:00:00 +0.000 2.150 +0.000 +0.000 1287860306076237824 0 4294967300 CH 0 16:24:20.973 RenkoCharts (XAUUSD,M1) Timeout before retry... CustomRatesUpdateを 呼び出すと4401。次に、CopyRatesでカスタムシンボルの過去10バーを読みます(ベースにはいくつかの無意味なものを見ることができます)。その後、タイムアウトを経て、再び1小節の書き込みを何度か試み、4022が表示されるまで。そして、EAが異常終了し、その後、勝手に再起動した。 Denis Kirichenko 2019.09.09 22:32 #178 問題はこれだ。 カスタムシンボルでストップとフリーズのレベルを動的に変更する必要があります。 テスト用EAには以下のようなコードがあります。 //+------------------------------------------------------------------+ //| Globals | //+------------------------------------------------------------------+ string symbol_name="EURUSD_1"; string symbol_path=""; string symbol_origin="EURUSD"; long stop_lvl=20; long freeze_lvl=30; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- 1) create if(!::SymbolInfoInteger(symbol_name,SYMBOL_CUSTOM)) { ResetLastError(); if(!::CustomSymbolCreate(symbol_name,symbol_path,symbol_origin)) { PrintFormat("Error code: %d",GetLastError()); return INIT_FAILED; } } //--- 2) set levels ResetLastError(); if(!::CustomSymbolSetInteger(symbol_name,SYMBOL_TRADE_STOPS_LEVEL,stop_lvl)) { PrintFormat("Error code: %d",GetLastError()); return INIT_FAILED; } if(!::CustomSymbolSetInteger(symbol_name,SYMBOL_TRADE_FREEZE_LEVEL,freeze_lvl)) { PrintFormat("Error code: %d",GetLastError()); return INIT_FAILED; } //--- return INIT_SUCCEEDED; } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- 1) stop level stop_lvl=::SymbolInfoInteger(symbol_name,SYMBOL_TRADE_STOPS_LEVEL); if(stop_lvl==20) stop_lvl=30; else stop_lvl=20; ResetLastError(); if(::CustomSymbolSetInteger(symbol_name,SYMBOL_TRADE_STOPS_LEVEL,stop_lvl)) { PrintFormat("Error code while setting a new value for the stop level: %d", GetLastError()); return; } //--- 2) freeze level freeze_lvl=::SymbolInfoInteger(symbol_name,SYMBOL_TRADE_FREEZE_LEVEL); if(freeze_lvl==30) freeze_lvl=40; else freeze_lvl=30; if(::CustomSymbolSetInteger(symbol_name,SYMBOL_TRADE_FREEZE_LEVEL,freeze_lvl)) { PrintFormat("Error code while setting a new value for the freeze level: %d", GetLastError()); return; } } //+------------------------------------------------------------------+ 通常のデバッグモードでは、OnTick()ハンドラ本体のみでエラーになります。エラーのコードは0です。 2019.09.09 23:25:05.010 TestingLevels (EURUSD,M1) Error code while setting a new value for the stop level: 0 ヒストリーのデバッグモードで、初期化中にエラーが発生します。このようなエラーになります。 2019.09.09 23:29:43.005 2019.09.02 00:00:00 Error code: 4014 すなわち、システム関数の呼び出しが禁止されているのです。 err_function_not_allowed 4014 システム関数の呼び出しを許可していない 一般的に、EAがカスタムシンボルで動作しているときに、ストップレベリングとフリーレベリングの値を変更することは可能でしょうか? Artyom Trishkin 2019.09.10 01:46 #179 Denis Kirichenko: 問題はこれだ。 カスタムシンボルでストップとフリーズのレベルを動的に変更する必要があります。 テスト用EAには以下のようなコードがあります。 通常のデバッグモードでは、OnTick()ハンドラ本体のみでエラーになります。エラーのコードは0です。 ヒストリーのデバッグモードで、初期化中にエラーが発生します。このようなエラーになります。 すなわち、システム関数の呼び出しが禁止されているのです。 err_function_not_allowed 4014 システム関数の呼び出しを許可していない 一般的に、EAがカスタムシンボルで動作しているときに、ストップレブやフリーズレブの値を変更することは可能でしょうか? そして、なぜOnTick()の行で if(::CustomSymbolSetInteger(symbol_name,SYMBOL_TRADE_STOPS_LEVEL,stop_lvl)) и if(::CustomSymbolSetInteger(symbol_name,SYMBOL_TRADE_FREEZE_LEVEL,freeze_lvl)) キャラクタプロパティの変更に成功した場合、エラー処理ブロックの本体に入るか?(「!」マークがない) Denis Kirichenko 2019.09.10 06:18 #180 Artyom Trishkin: なぜOnTick()内の行は и 文字プロパティの変更に成功した場合、エラー処理ブロックボディを入力するか?(「!」の記号がない)。 Artyomさん、ありがとうございます私の見落とし。 更新版です。 //+------------------------------------------------------------------+ //| Globals | //+------------------------------------------------------------------+ string symbol_name="EURUSD_1"; string symbol_path=""; string symbol_origin="EURUSD"; long stop_lvl=20; long freeze_lvl=30; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- 1) create if(!::SymbolInfoInteger(symbol_name,SYMBOL_CUSTOM)) { ResetLastError(); if(!::CustomSymbolCreate(symbol_name,symbol_path,symbol_origin)) { PrintFormat("Error code: %d",GetLastError()); return INIT_FAILED; } } //--- 2) set levels ResetLastError(); if(!::CustomSymbolSetInteger(symbol_name,SYMBOL_TRADE_STOPS_LEVEL,stop_lvl)) { PrintFormat("Error code: %d",GetLastError()); return INIT_FAILED; } if(!::CustomSymbolSetInteger(symbol_name,SYMBOL_TRADE_FREEZE_LEVEL,freeze_lvl)) { PrintFormat("Error code: %d",GetLastError()); return INIT_FAILED; } //--- return INIT_SUCCEEDED; } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- 1) stop level stop_lvl=::SymbolInfoInteger(symbol_name,SYMBOL_TRADE_STOPS_LEVEL); if(stop_lvl==20) stop_lvl=30; else stop_lvl=20; ResetLastError(); if(!::CustomSymbolSetInteger(symbol_name,SYMBOL_TRADE_STOPS_LEVEL,stop_lvl)) { PrintFormat("Error code while setting a new value for the stop level: %d", GetLastError()); return; } //--- 2) freeze level freeze_lvl=::SymbolInfoInteger(symbol_name,SYMBOL_TRADE_FREEZE_LEVEL); if(freeze_lvl==30) freeze_lvl=40; else freeze_lvl=30; if(!::CustomSymbolSetInteger(symbol_name,SYMBOL_TRADE_FREEZE_LEVEL,freeze_lvl)) { PrintFormat("Error code while setting a new value for the freeze level: %d", GetLastError()); return; } } //+------------------------------------------------------------------+ これで通常のデバッグモードで すべてが動作するようになりました。しかし、テスターではそうはいきません。そこに書き続けるのです。 2019.09.10 07:16:49.867 2019.09.03 00:00:00 Error code: 4014 1...111213141516171819202122232425...34 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
バグ24。
プローブされたダニと輸入された ダニのデータベースが正しく共存していない。
結果
続けて5匹のダニを再採取/輸入したが、履歴では10匹のダニが見つかっている。同時に5ティックが先に進み、その後、同じ5ティックが進む。すなわち、ティックデータベースのエントリーの時間さえも連続しないのです。
後半のティックのフラグが、前半と違うので注意してください。
再現性がない。棒グラフを取り込むと、空のグラフがすぐに更新されます。
チャートを開けない場合はどうなりますか?バーをインポートした後にチャートを 開く
または、チャートを閉じてから開く。
または、チャートのコンテキストメニューから更新します。
リーディングクエスチョン )))
鉄格子を輸入して、窓を全部閉めました。
その後、シンボルを再度開き、Barsタブで私のシンボルを選択しました。
バーは表示させるべきですか?白紙です。
ロードボタン(カバーリング期間事前選択)を押しても、表示されない。
バージョン1970を試しましたが、同じ状況です。
チャートとプログラムを開いたり閉じたりしても、解決しない。
まだプログラミングには手をつけていません。
まあ、そうなんでしょうね...。
もし可能性があるなら、リモートで接続して、彼女が何を必要としているか、見てあげてください。
https://www.mql5.com/ru/forum/147666/page2#comment_3720399
誰かの役に立つかもしれない。
しかし、私には別の問題がありました
1.ファイル2019.hccに加え、ファイル1970.hccが生成されました。
削除したら、生き返ったようです。
2. oまたはhがl hの外側にある赤線があった。
1970がどこから来たのかは不明です。
そのような日付も、空白の行もなかった
キャンドルが多いかも、5万円以下で
それは見ることが可能ですが、どのようにグラフより目に見える振幅を広げるために?
オブジェクトを描画する際に、ローソク足の両端を正確に狙う必要があります。
プロパティの入力や値の設定を手動で行うのは面倒だ
グラフが最後にずれてしまい、巻き戻さなければならない。
最後の1小節にジャンプしないようにするにはどうすればよいのでしょうか?
トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム
バグ、バグ、質問
スタニスラフ・コロツキー さん 2019.08.22 17:34
カスタムキャラクターで以下のような問題が発生した方はいらっしゃいますか?CustomRatesUpdate関数は正常な引用符を渡しますが、実際にはチャートとデータウィンドウが何か変になります(この場合、in closeとlowの値が渡された値の100倍になっています)。
また、並行してCustomTicksAddでシングルティックをログと同じ終値の値でエミュレートしています(CustomRatesUpdateの直前)、つまり、引用符の縮小値がどこから来ているのかが不明です。
UPDです。
私はUSDCADで "逆 "の状況を得ました - 書き込み後に相場が10倍になりました。これは私が取得しているログです。
最初のArrayPrintはCustomRatesUpdateで書き込んだもの、2番目のArrayPrintは書き込み直後の直近のバーからCopyRatesを使って読み込んだものです。まず、違いはオープンの下一桁ですが、それ以上にハイとクローズが10倍になっています。
PS.ティックではすべてOKです。
Stanislav Korotky:
PS.ダニに異常はない。
バグ22。
バグ22。
最新のビルドでは修正されているのでしょうか?
4022エラーとは何ですか?カスタム文字にバーを書き込もうとすると何かと面倒です。でも、コードから判断すると、汎用的なものですね。
最初はこれでした。
CustomRatesUpdateを 呼び出すと4401。次に、CopyRatesでカスタムシンボルの過去10バーを読みます(ベースにはいくつかの無意味なものを見ることができます)。その後、タイムアウトを経て、再び1小節の書き込みを何度か試み、4022が表示されるまで。そして、EAが異常終了し、その後、勝手に再起動した。
問題はこれだ。
カスタムシンボルでストップとフリーズのレベルを動的に変更する必要があります。
テスト用EAには以下のようなコードがあります。
通常のデバッグモードでは、OnTick()ハンドラ本体のみでエラーになります。エラーのコードは0です。
ヒストリーのデバッグモードで、初期化中にエラーが発生します。このようなエラーになります。
すなわち、システム関数の呼び出しが禁止されているのです。
err_function_not_allowed
4014
システム関数の呼び出しを許可していない
一般的に、EAがカスタムシンボルで動作しているときに、ストップレベリングとフリーレベリングの値を変更することは可能でしょうか?
問題はこれだ。
カスタムシンボルでストップとフリーズのレベルを動的に変更する必要があります。
テスト用EAには以下のようなコードがあります。
通常のデバッグモードでは、OnTick()ハンドラ本体のみでエラーになります。エラーのコードは0です。
ヒストリーのデバッグモードで、初期化中にエラーが発生します。このようなエラーになります。
すなわち、システム関数の呼び出しが禁止されているのです。
err_function_not_allowed
4014
システム関数の呼び出しを許可していない
一般的に、EAがカスタムシンボルで動作しているときに、ストップレブやフリーズレブの値を変更することは可能でしょうか?
そして、なぜOnTick()の行で
и
キャラクタプロパティの変更に成功した場合、エラー処理ブロックの本体に入るか?(「!」マークがない)
なぜOnTick()内の行は
и
文字プロパティの変更に成功した場合、エラー処理ブロックボディを入力するか?(「!」の記号がない)。
Artyomさん、ありがとうございます私の見落とし。
更新版です。
これで通常のデバッグモードで すべてが動作するようになりました。しかし、テスターではそうはいきません。そこに書き続けるのです。