カスタムシンボル。エラー、バグ、質問、提案。 - ページ 23 1...161718192021222324252627282930...34 新しいコメント jaffer wilson 2019.10.16 13:01 #221 Slava : 現時点では、今日ではない日(昨日、一昨日、昨年など)のティックを使ってカスタムツールバーを形成することはできません。 でも。訂正をいたしました。 CustomTicksReplaceを使用する場合(CustomTicksAddではありません!CustomTicksAddでティックを一括追加しないでください)、以前に今日のティックがなかった場合、追加したティックの最終日が「現在」になります。 次のビルドを待ってください。その後、実験とディスカッションを続ける Build 2177を使用しています。一番新しいものだと思います。 しかし、CUSTOMSYMBOLと連携することはできない。いつ頃、私に役立つビルドを期待できるか教えてください。 ビルドの変更点はどこで確認できますか? Slava 2019.10.16 13:46 #222 添付のインジケータは、現在のビルド2177で動作します。 これがあなたのインジケーターです。編集されていますが、アルゴリズムは同じです。Symbol.mqhをMQL5Includeに配置しました。 行を変更する #include <Includes\Symbol.mqh> を使用して、Symbol.mqhを使用するようにします。 バーが形成される。MarketWatchに限らず、履歴に刻みが正しく反映されます ファイル: CustomTicksJaffer.mq5 5 kb jaffer wilson 2019.10.16 14:07 #223 Slava : 添付のインジケータは、現在のビルド2177で動作します。 これがあなたのインジケーターです。編集されていますが、アルゴリズムは同じです。Symbol.mqhをMQL5Includeに配置しました。 行を変更する を使用して、Symbol.mqhを使用するようにします。 バーが形成される。MarketWatchに限らず、歴史には刻みが正しく適用される 確認させていただきます。私のコードに問題があるのかもしれません。でも、コードは良さそうですね。 fxsaber 2019.12.11 07:21 #224 バグ25。 カスタムシンボルに 刻みを書き込むと、異なる正規化が行われる! sinput datetime inDateFrom = D'2019.12.01'; // Проверка нормализации числа. bool IsNorm( const double Price ) { return(NormalizeDouble(Price, _Digits) == Price); } #define TOSTRING(A) #A + " = " + DoubleToString(A, 16) + " " #define PRINT(A) Print(TOSTRING(A) + TOSTRING(NormalizeDouble(A, _Digits))) #define ISNORM(A) if (!IsNorm(A)) { PRINT(A); Count++; }; // Распечатка ненормализованных цен тиков. void CheckNorm( const MqlTick &Ticks[], const int MaxAmount = 10 ) { const int Size = ArraySize(Ticks); for (int i = 0, Count = 0; (i < Size) && (Count < MaxAmount); i++) { ISNORM(Ticks[i].bid) ISNORM(Ticks[i].ask) ISNORM(Ticks[i].last) } } // Нормализация цен тика. void Normalize( MqlTick &Tick, const int digits ) { Tick.bid = ::NormalizeDouble(Tick.bid, digits); Tick.ask = ::NormalizeDouble(Tick.ask, digits); Tick.last = ::NormalizeDouble(Tick.last, digits); } // Нормализация цен тиков. void Normalize( MqlTick &Ticks[], const int digits ) { for (int i = ArraySize(Ticks) - 1; i >= 0; i--) Normalize(Ticks[i], digits); } void OnStart() { const string Name = "TEMP12345"; // Имя кастомного символа const string SymbOrig = "EURUSD"; // Имя оригинального символа MqlTick Ticks[]; const int Size = CopyTicksRange(SymbOrig, Ticks, COPY_TICKS_ALL, (long)inDateFrom * 1000); // Считали EURUSD-тики. if ((Size > 0) && CustomSymbolCreate(Name, NULL, SymbOrig) && SymbolSelect(Name, true)) // Создали символ на основе EURUSD. { const int digits = (int)SymbolInfoInteger(Name, SYMBOL_DIGITS); Normalize(Ticks, digits); // Нормализовали цены тиков. Print("Check1"); CheckNorm(Ticks); // Проверили, что цены тиков нормализованы. CustomTicksReplace(Name, 0, LONG_MAX, Ticks); // Поместили в него историю EURUSD. MqlTick NewTicks[]; CopyTicksRange(Name, NewTicks, COPY_TICKS_ALL, (long)inDateFrom * 1000); // Считали тики из кастомного символа Print("Check2"); CheckNorm(NewTicks); // Проверили, что цены тиков нормализованы. } } 結果 Check1 Check2 Ticks[i].bid = 1.1024100000000001 NormalizeDouble(Ticks[i].bid,_Digits) = 1.1024099999999999 Ticks[i].bid = 1.1024100000000001 NormalizeDouble(Ticks[i].bid,_Digits) = 1.1024099999999999 Ticks[i].bid = 1.1024100000000001 NormalizeDouble(Ticks[i].bid,_Digits) = 1.1024099999999999 Ticks[i].bid = 1.1024100000000001 NormalizeDouble(Ticks[i].bid,_Digits) = 1.1024099999999999 Ticks[i].bid = 1.1023100000000001 NormalizeDouble(Ticks[i].bid,_Digits) = 1.1023099999999999 Ticks[i].bid = 1.1023100000000001 NormalizeDouble(Ticks[i].bid,_Digits) = 1.1023099999999999 Ticks[i].bid = 1.1023100000000001 NormalizeDouble(Ticks[i].bid,_Digits) = 1.1023099999999999 Ticks[i].bid = 1.1023100000000001 NormalizeDouble(Ticks[i].bid,_Digits) = 1.1023099999999999 Ticks[i].bid = 1.1023100000000001 NormalizeDouble(Ticks[i].bid,_Digits) = 1.1023099999999999 Ticks[i].bid = 1.1023100000000001 NormalizeDouble(Ticks[i].bid,_Digits) = 1.1023099999999999 Terminal内部に標準とは異なるNormalizeDoubleがあるようです。このバグは、目に見えない形で多くのアルゴリズムに影響を与える可能性があります。 修正お願いします。正規化された価格を書くという当然のニーズが実現できない。 Roman 2019.12.11 07:47 #225 fxsaber: バグ25 カスタムシンボルにテロップを書き込むと、テロップが混ざってしまう! 結果 Terminalは、標準のものとは異なる独自のNormalizeDoubleを持っているようです。このバグは、目に見えない形で多くのアルゴリズムに影響を与える可能性があります。 修正お願いします。正規化された価格を書くという当然のニーズが実現できない。 Normalize関数がオーバーロードされています。 関数名を変えてみてください。 もしかしたら、これで正常化が失敗するかもしれません。 Slava 2019.12.11 07:54 #226 fxsaber: バグ25 カスタムシンボルにテロップを書き込むと、テロップが混ざってしまう! 結果 Terminalは、標準のものとは異なる独自のNormalizeDoubleを持っているようです。このバグは、目に見えない形で多くのアルゴリズムに影響を与える可能性があります。 修正お願いします。正規化された価格を書くという当然のニーズが実現できない。 いずれの場合も、小数点以下が 正規化された結果である。 絶対的な平等を求める実数比較はまだか? 元のダニの発生源はどのサーバーですか? fxsaber 2019.12.11 10:31 #227 Roman:Normalize 関数がオーバーロードされています。 関数名を変更してみてください。 そのためか、正規化が正しく行われていない。 コード内に正しい正規化のためのテストがあります。カスタムシンボルに 目盛りを書き込む前に、このテストは成功します。コードを確認しました。 fxsaber 2019.12.11 10:36 #228 Slava: いずれの場合も、小数点 以下の桁数で正規化した結果です。 今でも絶対的な平等性を求めて実数を比較しているのでしょうか? 元のダニの発生源はどのサーバーですか? MQ-Betaサーバーです。しかし、この状況にサーバーは全く関係ない。私の仕事 刻みの配列を正規化し、そうであることを確認しています。 カスタムシンボルに書き込んでいます。 カスタムシンボルから書き込まれたティックを読み込む。 正規化されているかどうかを確認する - 正規化されていません。 つまり、1ティックを書くために送ったのに、他の人が書いてしまったということです。 fxsaber 2019.12.11 12:21 #229 Terminalの 緊急閉鎖の ためか、tailはbasesCustom フォルダに残っています。 fxsaber 2019.12.14 08:07 #230 fxsaber: バグ25 2280 - 修正済み、ありがとうございます。 1...161718192021222324252627282930...34 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
現時点では、今日ではない日(昨日、一昨日、昨年など)のティックを使ってカスタムツールバーを形成することはできません。
でも。訂正をいたしました。
CustomTicksReplaceを使用する場合(CustomTicksAddではありません!CustomTicksAddでティックを一括追加しないでください)、以前に今日のティックがなかった場合、追加したティックの最終日が「現在」になります。
次のビルドを待ってください。その後、実験とディスカッションを続ける
Build 2177を使用しています。一番新しいものだと思います。
しかし、CUSTOMSYMBOLと連携することはできない。いつ頃、私に役立つビルドを期待できるか教えてください。
ビルドの変更点はどこで確認できますか?
添付のインジケータは、現在のビルド2177で動作します。
これがあなたのインジケーターです。編集されていますが、アルゴリズムは同じです。Symbol.mqhをMQL5Includeに配置しました。
行を変更する
を使用して、Symbol.mqhを使用するようにします。
バーが形成される。MarketWatchに限らず、履歴に刻みが正しく反映されます
添付のインジケータは、現在のビルド2177で動作します。
これがあなたのインジケーターです。編集されていますが、アルゴリズムは同じです。Symbol.mqhをMQL5Includeに配置しました。
行を変更する
を使用して、Symbol.mqhを使用するようにします。
バーが形成される。MarketWatchに限らず、歴史には刻みが正しく適用される
確認させていただきます。私のコードに問題があるのかもしれません。でも、コードは良さそうですね。
バグ25。
カスタムシンボルに 刻みを書き込むと、異なる正規化が行われる!
結果
Terminal内部に標準とは異なるNormalizeDoubleがあるようです。このバグは、目に見えない形で多くのアルゴリズムに影響を与える可能性があります。
修正お願いします。正規化された価格を書くという当然のニーズが実現できない。
バグ25
カスタムシンボルにテロップを書き込むと、テロップが混ざってしまう!
結果
Terminalは、標準のものとは異なる独自のNormalizeDoubleを持っているようです。このバグは、目に見えない形で多くのアルゴリズムに影響を与える可能性があります。
修正お願いします。正規化された価格を書くという当然のニーズが実現できない。
Normalize関数がオーバーロードされています。
関数名を変えてみてください。
もしかしたら、これで正常化が失敗するかもしれません。
バグ25
カスタムシンボルにテロップを書き込むと、テロップが混ざってしまう!
結果
Terminalは、標準のものとは異なる独自のNormalizeDoubleを持っているようです。このバグは、目に見えない形で多くのアルゴリズムに影響を与える可能性があります。
修正お願いします。正規化された価格を書くという当然のニーズが実現できない。
いずれの場合も、小数点以下が 正規化された結果である。
絶対的な平等を求める実数比較はまだか?
元のダニの発生源はどのサーバーですか?
Normalize 関数がオーバーロードされています。
関数名を変更してみてください。
そのためか、正規化が正しく行われていない。
コード内に正しい正規化のためのテストがあります。カスタムシンボルに 目盛りを書き込む前に、このテストは成功します。コードを確認しました。
いずれの場合も、小数点 以下の桁数で正規化した結果です。
今でも絶対的な平等性を求めて実数を比較しているのでしょうか?
元のダニの発生源はどのサーバーですか?
MQ-Betaサーバーです。しかし、この状況にサーバーは全く関係ない。私の仕事
バグ25
2280 - 修正済み、ありがとうございます。