初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 1496 1...148914901491149214931494149514961497149814991500150115021503 新しいコメント maxvoronin74 2024.02.07 14:53 #14951 Aleksandr Slavskii #:"Find the maximum value in the ticks array"-the maximum value of what are we finding?度数[度数-1].bid、度数[度数-1].flags。冗談です))))ーCopyTicksとーCopyRatesとーCopyTicksとーCopyRatesとーCopyTicksとーCopyTicksとーCopyTicksとーCopyTicksとーCopyTicksとーCopyRatesとーCopyTicksのーCopyTicksのーCopyTicksのーCopyTicksのー、ーCopyTicksのーCopyRates。double PrevClose = rates[copied-1].close;あなたのコードには余分な行がある。 ーCopyTicksとー CopyRates ー コピー時にー配列のーサイズをー。 ヒントをありがとう。知りませんでした。念のためこの行を挿入しておきます。 、ー レートではではではークではークする場合、ークではークする場合、ークするバーをークをークする場合、ークするバーのークをークするバークをークする場合、ークをークするバークをークをークするバークをークをークするバークをークをークするバークをークーだからータはータはータはータはーターCopyRatesのー私のー同様のー同様のー同様のー計算式ーーでーCopyRatesのー変数ーーにー時間間隔のー最大値ーーulong型ーーでーこの問題も解決できませんでした。 Aleksandr Slavskii 2024.02.07 15:56 #14952 maxvoronin74 #:情報をありがとう。知らなかったよ。念のため、この行を挿入しておくよ。レートはすべての価格が平均化され、バーを考慮するが、ティックは考慮しないという冗談を正しく理解していますか?だから私はティックをバー価格ではなく、任意の時間間隔を使用するように取った。私の似たような計算式のCopyRatesは、コピーされた変数に時間間隔のulong型の最大値を入れました。この問題も解決できなかった。 すべてが間違っている。 MqlRatesは 構造体であり、それを変数として扱っている。 MqlTickも 構造体です。 あなたは温故知新を組み合わせようとしているので、コンパイラーはあなたを理解できない。 私もそうだ)))) 何か役に立つことを提案できるかもしれないが、あなたのコードからは何を見つけようとしているのかがわからない。 maxvoronin74 2024.02.07 16:07 #14953 Aleksandr Slavskii #:すべて間違っている。MqlRatesは 構造体であり、あなたはそれを変数として扱っている。MqlTickも 構造体である。あなたはウォームとソフトを組み合わせようとしているので、コンパイラはあなたを理解できない。私もそうだ)))何か役に立つことを提案できるかもしれませんが、あなたのコードからは何を見つけようとしているのかがわかりません。 課題は、WPR (Williams Percent Range)を修正し、バーに関係なく、任意の期間のWPR値の差を取得することです。 Aleksandr Slavskii 2024.02.07 17:55 #14954 maxvoronin74 #: WPR(ウィリアムズ・パーセンテージ・レンジ)を修正し、小節に関係なく、任意の期間のWPR値の差を得るようにすることです。 これがあなたが得たかったものである可能性があります(しかし、確実ではありません)。 MqlTick ticks[]; int copied = CopyTicksRange(Symbol(), ticks, COPY_TICKS_INFO, t0, t1); double bid[]; for(int i = 0; i < copied; i++) bid[i] = ticks[i].bid; double PrevClose = bid[copied - 1]; // Получаем последний элемент массива как значение PrevClose double highestHigh = ArrayMaximum(bid, 0, copied); // Находим максимальное значение в массиве ticks double lowestLow = ArrayMinimum(bid, 0, copied); // Находим минимальное значение в массиве ticks maxvoronin74 2024.02.07 21:42 #14955 Aleksandr Slavskii #: double lowestLow =ArrayMinimum(bid,0, copied); ありがとうございます。私がレッスンを正しく理解していれば、私が得たものは次のとおりです:MqlTick ticks[]; int copied=CopyTicksRange(Symbol(),ticks,COPY_TICKS_INFO,t0,t1); double bid_arr[]; double ask_arr[]; for(int i = 0; i < copied; i++) { bid_arr[i] = ticks[i].bid; ask_arr[i] = ticks[i].ask; } double highestBid = ArrayMaximum(bid_arr, 0, copied-1); double lowestBid = ArrayMinimum(bid_arr, 0, copied-1); double highestAsk = ArrayMaximum(ask_arr, 0, copied-1); double lowestAsk = ArrayMinimum(ask_arr, 0, copied-1); double highestHigh = (highestBid+highestAsk)/2; // Средняя наибольшего ask и наибольшего bid элемента double lowestLow = (lowestBid+lowestAsk)/2; // Средняя наименьшего ask и наименьшего bid элемента double PrevClose = (bid_arr[copied-1]+ask_arr[copied-1])/2; // Средняя ask и bid последнего элемента double WPR_Past = -100 * (NormalizeDouble((highestHigh - PrevClose) / (highestHigh - lowestLow),_Digits)); // Формула предыдущего WPR しかし、残念ながら、bid_arr[i] = ticks[i].bid; の行で、Expert Advisor は 'namemyexpert.mq5' (204,12) の範囲外の配列のためにチャートから外れてしまいました。 JRandomTrader 2024.02.07 21:55 #14956 maxvoronin74 #:ありがとう。教訓を生かした結果がこれだ: どうせすべての目盛りをループしているのだから、このループでコピーすることはできない。 ちなみに、コピーするのであれば、コピーする配列のサイズを最初に設定しておくといいでしょう。コピー先の配列のサイズを変更するのは CopyTicksRange だけです。 Aleksandr Slavskii 2024.02.08 02:08 #14957 JRandomTrader #:とにかくすべてのティックを循環させるので、このサイクルでコピーすることはできないが、最大-最小を一度に探すことはできる。ちなみに、コピーするのであれば、最初にコピー先の配列のサイズを設定しておくとよい。CopyTicksRange だけがコピー先の配列のサイズを変更します。 私は完璧主義者で、構造体の配列の別々の要素をソートするのは、発泡スチロールでガラスをたたくようなものだ。未割り当ての配列については、ちゃんとした理由がある。夜中の1時に妻が耳元で「寝る時間よ、寝る時間よ」と言っているのだ。) Aleksandr Slavskii 2024.02.08 05:18 #14958 Aleksandr Slavskii #: 私は完璧主義者で、構造体の配列の個々の要素を並べ替えるのは、発泡スチロールでガラスを叩くようなものだ。配列が分散していないことについては、それなりの理由がある。時刻は午前1時、妻が耳元で「寝る時間よ、寝る時間よ」と言う。) なんだ、夜か朝かイチジクか)。そう、一度に最大限のものを探すというのは正しい。今朝はちょっと頭が悪い。 maxvoronin74 2024.02.08 22:11 #14959 JRandomTrader #:とにかくすべてのティックを循環させるので、このサイクルでコピーすることはできないが、最大-最小を一度に探すことはできる。ちなみに、コピーするのであれば、最初にコピー先の配列のサイズを設定しておくとよい。コピー先の配列のサイズを変更するのは CopyTicksRange だけです。 すみません。不注意でした。修正しました。ありがとう。ArrayMaximumの値が価格ではなくインデックスであることを忘れていました。でもこれで直りました。 MqlTick ticks[]; int copied=CopyTicksRange(Symbol(),ticks,COPY_TICKS_INFO,t0,t1); double bid_arr[]; ArrayResize(bid_arr,copied,100000); double ask_arr[]; ArrayResize(ask_arr,copied,100000); for(int i = 0; i < copied; i++) { bid_arr[i] = ticks[i].bid; ask_arr[i] = ticks[i].ask; } int IndMaxBid = ArrayMaximum(bid_arr, 0, copied-1); // Индекс элемента массива bid_arr с максимальной ценой double highestBid = bid_arr[IndMaxBid]; // Самая высокая цена bid за период int IndMinBid = ArrayMinimum(bid_arr, 0, copied-1); // Индекс элемента массива bid_arr с минимальной ценой double lowestBid = bid_arr[IndMinBid]; // Самая низкая цена bid за период int IndMaxAsk = ArrayMaximum(ask_arr, 0, copied-1); // Индекс элемента массива ask_arr с максимальной ценой double highestAsk = ask_arr[IndMaxAsk]; // Самая высокая цена ask за период int IndMinAsk = ArrayMinimum(ask_arr, 0, copied-1); // Индекс элемента массива ask_arr с минимальной ценой double lowestAsk = ask_arr[IndMinAsk]; // Самая низкая цена ask за период double highestHigh = (highestBid+highestAsk)/2; // Средняя наибольшего ask и наибольшего bid элемента double lowestLow = (lowestBid+lowestAsk)/2; // Средняя наименьшего ask и наименьшего bid элемента double PrevClose = (bid_arr[copied-1]+ask_arr[copied-1])/2; // Средняя ask и bid последнего элемента double WPR_Past = -100 * (NormalizeDouble((highestHigh - PrevClose) / (highestHigh - lowestLow),_Digits)); // Формула предыдущего WPR ArrayMaximumはticks配列では機能しなかったので、ループ内のifを使った代替計算を試してみました。なぜその方が良いのでしょうか? Aleksandr Slavskii 2024.02.09 02:35 #14960 maxvoronin74 #:なぜそれが良いのか? MqlTick ticks[]; int copied = CopyTicksRange(Symbol(), ticks, COPY_TICKS_INFO, t0, t1); double highestHigh = 0, lowestLow = DBL_MAX; for(int i = 0; i < copied; i++) { if(highestHigh < ticks[i].ask) // Находим максимальное значение в массиве ticks highestHigh = ticks[i].ask; if(lowestLow > ticks[i].bid) // Находим минимальное значение в массиве ticks lowestLow = ticks[i].bid; } 1...148914901491149214931494149514961497149814991500150115021503 新しいコメント 理由: キャンセル 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
"Find the maximum value in the ticks array"-the maximum value of what are we finding?
度数[度数-1].bid、度数[度数-1].flags。
冗談です))))
ーCopyTicksとーCopyRatesとーCopyTicksとーCopyRatesとーCopyTicksとーCopyTicksとーCopyTicksとーCopyTicksとーCopyTicksとーCopyRatesとーCopyTicksのーCopyTicksのーCopyTicksのーCopyTicksのー、ーCopyTicksのーCopyRates。
double PrevClose = rates[copied-1].close;
あなたのコードには余分な行がある。
ーCopyTicksとー CopyRates ー コピー時にー配列のーサイズをー。ヒントをありがとう。知りませんでした。念のためこの行を挿入しておきます。
、ー レートではではではークではークする場合、ークではークする場合、ークするバーをークをークする場合、ークするバーのークをークするバークをークする場合、ークをークするバークをークをークするバークをークをークするバークをークをークするバークをークーだからータはータはータはータはーターCopyRatesのー私のー同様のー同様のー同様のー計算式ーーでーCopyRatesのー変数ーーにー時間間隔のー最大値ーーulong型ーーでーこの問題も解決できませんでした。
情報をありがとう。知らなかったよ。念のため、この行を挿入しておくよ。
レートはすべての価格が平均化され、バーを考慮するが、ティックは考慮しないという冗談を正しく理解していますか?だから私はティックをバー価格ではなく、任意の時間間隔を使用するように取った。私の似たような計算式のCopyRatesは、コピーされた変数に時間間隔のulong型の最大値を入れました。この問題も解決できなかった。
すべてが間違っている。
MqlRatesは 構造体であり、それを変数として扱っている。
MqlTickも 構造体です。
あなたは温故知新を組み合わせようとしているので、コンパイラーはあなたを理解できない。
私もそうだ))))
何か役に立つことを提案できるかもしれないが、あなたのコードからは何を見つけようとしているのかがわからない。
すべて間違っている。
MqlRatesは 構造体であり、あなたはそれを変数として扱っている。
MqlTickも 構造体である。
あなたはウォームとソフトを組み合わせようとしているので、コンパイラはあなたを理解できない。
私もそうだ)))
何か役に立つことを提案できるかもしれませんが、あなたのコードからは何を見つけようとしているのかがわかりません。
WPR(ウィリアムズ・パーセンテージ・レンジ)を修正し、小節に関係なく、任意の期間のWPR値の差を得るようにすることです。
これがあなたが得たかったものである可能性があります(しかし、確実ではありません)。
double lowestLow =ArrayMinimum(bid,0, copied);
ありがとうございます。私がレッスンを正しく理解していれば、私が得たものは次のとおりです:
しかし、残念ながら、bid_arr[i] = ticks[i].bid; の行で、Expert Advisor は 'namemyexpert.mq5' (204,12) の範囲外の配列のためにチャートから外れてしまいました。ありがとう。教訓を生かした結果がこれだ:
どうせすべての目盛りをループしているのだから、このループでコピーすることはできない。
ちなみに、コピーするのであれば、コピーする配列のサイズを最初に設定しておくといいでしょう。コピー先の配列のサイズを変更するのは CopyTicksRange だけです。
とにかくすべてのティックを循環させるので、このサイクルでコピーすることはできないが、最大-最小を一度に探すことはできる。
ちなみに、コピーするのであれば、最初にコピー先の配列のサイズを設定しておくとよい。CopyTicksRange だけがコピー先の配列のサイズを変更します。
私は完璧主義者で、構造体の配列の個々の要素を並べ替えるのは、発泡スチロールでガラスを叩くようなものだ。
とにかくすべてのティックを循環させるので、このサイクルでコピーすることはできないが、最大-最小を一度に探すことはできる。
ちなみに、コピーするのであれば、最初にコピー先の配列のサイズを設定しておくとよい。コピー先の配列のサイズを変更するのは CopyTicksRange だけです。
すみません。不注意でした。修正しました。ありがとう。ArrayMaximumの値が価格ではなくインデックスであることを忘れていました。でもこれで直りました。
ArrayMaximumはticks配列では機能しなかったので、ループ内のifを使った代替計算を試してみました。なぜその方が良いのでしょうか?
なぜそれが良いのか?