エラー、バグ、質問 - ページ 3150 1...314331443145314631473148314931503151315231533154315531563157...3185 新しいコメント Nikolai Semko 2022.02.07 11:21 #31491 Nikolai Semko #:三項演算子の方が簡潔に見える (IMHO)int limit = prev_calculated==0 ? 0: prev_calculated-1; さらに簡潔な方法で. int limit = prev_calculated-bool(prev_calculated); :)) Roman 2022.02.07 11:22 #31492 Nikolai Semko #: そして、これはオーバーフローです。なぜなら、rates_total は、最後の要素がrates_total-1 であるバッファのサイズ だからです。はい......なぜ今、オーバーフローが起こっているのかがわかりましたなぜ、以前はこの構成がうまくいって、今はうまく いかないのか? int limit = rates_total-prev_calculated; for(int i=limit; i>=0; i--)バッファはrates_total、rates_total+1ではなく、正確に割り当てられているため この問題を理解しているアルテムの言葉を待っています。 Nikolai Semko 2022.02.07 11:24 #31493 Roman #:はい......なぜ今、オーバーフローが起こっているのかがわかりましたなぜ、以前はこのデザインがうまくいっていたのに、今は うまくいかないのか? バッファはrates_total、rates_total+1ではなく、正確に割り当てられているため 奇跡なんてないんだよ。 前はうまくいっていたのなら、別のコードだったのだろう。 Valeriy Yastremskiy 2022.02.07 11:47 #31494 Roman #:このデザインで インジケータ・バッファが範囲外になる。周期i>=0のティックの 例を示してください 多分、私が間違っていることを忘れているのだと思います。 念のため、最大エッジでインデックスを2〜3個減らす)。 Roman 2022.02.07 11:57 #31495 Nikolai Semko #:奇跡は起きない 以前に動作していたのなら、別のコードだったのだろう 従来は、正しい限度額の計算が int limit = rates_total-1-prev_calculated; となり、i>=0のループに移行してしまいます。 for(int i=limit; i>=0; i--) しかし、限界値が-1であることが判明したため、今はうまくいきません。 TheXpert 2022.02.07 12:12 #31496 この議論はオフトピックです、それはどこかの初心者スレッドに属しています。 Nikolai Semko 2022.02.07 12:12 #31497 Roman #:以前は、正しい計算はでループに入る i>=0制限値が-1であることが判明したため、入らなくなった 私も以前、同じコードでログインできませんでした。 作り話はやめてください。 信じられなければ、Hatimlanskyから 古いビルドをダウンロードし、確認してください。 Roman 2022.02.07 12:14 #31498 TheXpert #: この議論はここではオフトピックです、それはどこかの初心者スレッドに属しています。 もし、このデザインを使ったことがないのであれば、オフトップは控えてください。 Roman 2022.02.07 12:17 #31499 Nikolai Semko #:以前も同じコードでログインできなかった don't make up thisのHatimlanskyから 古いビルドをダウンロードし、それを確認してください。 アルテムもこのビルドを使用していました。 ということは、この問題を理解しているのは、彼だけなのです。 Artyom Trishkin 2022.02.07 12:21 #31500 Roman #:以前は、正しい計算はでループに入る i>=0そして今は、極限が-1であることが判明しているので、そうではありません。 常に、if(limit>1) limit=rates_total-1 というチェックが入っていました。これは、計算上i+somethingが存在しない場合に対応するものです。もしあるならば、この「何人何役」をlimit=rates_total-1-some-somethingのように構成する必要がある。 これがないと、必ずアレイのオーバーランが発生します。rates_total は Bars() 以外の何物でもないからです。したがって、5000本のバーがあるときにインデックス5000を指定すると、配列の限界から外れることになります(バーの計算はゼロから始まります)。 あなたの例では、限界値の計算が誤っています。 int limit = rates_total-1-prev_calculated; こんな感じでいいんじゃないでしょうか。 int limit = rates_total-prev_calculated; そして、その後に limit>1 をチェックします。 とし、limit が1より大きい場合は limit = rates_total-1 とする。 1...314331443145314631473148314931503151315231533154315531563157...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
三項演算子の方が簡潔に見える (IMHO)
さらに簡潔な方法で.
:))
そして、これはオーバーフローです。なぜなら、rates_total は、最後の要素がrates_total-1 であるバッファのサイズ だからです。
はい......なぜ今、オーバーフローが起こっているのかがわかりました
なぜ、以前はこの構成がうまくいって、今はうまく いかないのか?
バッファはrates_total
この問題を理解しているアルテムの言葉を待っています。、rates_total+1ではなく、正確に割り当てられているため
はい......なぜ今、オーバーフローが起こっているのかがわかりました
なぜ、以前はこのデザインがうまくいっていたのに、今は うまくいかないのか?
バッファはrates_total
、rates_total+1ではなく、正確に割り当てられているため
奇跡なんてないんだよ。
前はうまくいっていたのなら、別のコードだったのだろう。
このデザインで
インジケータ・バッファが範囲外になる。
周期i>=0のティックの 例を示してください
多分、私が間違っていることを忘れているのだと思います。
念のため、最大エッジでインデックスを2〜3個減らす)。
奇跡は起きない
以前に動作していたのなら、別のコードだったのだろう
従来は、正しい限度額の計算が
となり、i>=0のループに移行してしまいます。
しかし、限界値が-1であることが判明したため、今はうまくいきません。
以前は、正しい計算は
でループに入る i>=0
制限値が-1であることが判明したため、入らなくなった
私も以前、同じコードでログインできませんでした。
作り話はやめてください。
信じられなければ、Hatimlanskyから 古いビルドをダウンロードし、確認してください。
この議論はここではオフトピックです、それはどこかの初心者スレッドに属しています。
もし、このデザインを使ったことがないのであれば、オフトップは控えてください。
以前も同じコードでログインできなかった
don't make up this
のHatimlanskyから 古いビルドをダウンロードし、それを確認してください。
アルテムもこのビルドを使用していました。
ということは、この問題を理解しているのは、彼だけなのです。
以前は、正しい計算は
でループに入る i>=0
そして今は、極限が-1であることが判明しているので、そうではありません。
常に、if(limit>1) limit=rates_total-1 というチェックが入っていました。これは、計算上i+somethingが存在しない場合に対応するものです。もしあるならば、この「何人何役」をlimit=rates_total-1-some-somethingのように構成する必要がある。
これがないと、必ずアレイのオーバーランが発生します。rates_total は Bars() 以外の何物でもないからです。したがって、5000本のバーがあるときにインデックス5000を指定すると、配列の限界から外れることになります(バーの計算はゼロから始まります)。
あなたの例では、限界値の計算が誤っています。
こんな感じでいいんじゃないでしょうか。
int limit = rates_total-prev_calculated;
そして、その後に limit>1 をチェックします。
とし、limit が1より大きい場合は limit = rates_total-1 とする。