こんにちは!配列について質問です。悩みに悩んで一次元配列を作成しました。コンパイル時にエラーが出ないので大丈夫なはずですが、テスターで実行するとエラー EURUSD,M1: array out of range in ,, (218,12) が出て、まさに私の悲しみの配列の位置を示していることがわかります。どこが悪いか教えてください
int Totall=OrdersTotal();
double Price; // Цена выбранного ордераdouble Mas[]; //массив для упорядочивания всех ордеровfor(int i=0; i<OrdersTotal(); i++) // Цикл перебора ордер
{
if(OrderSelect(i,SELECT_BY_POS)) // Если есть следующий
{
Price=OrderOpenPrice();
Mas [i] = Price; //Как раз перед квадратной скобкой и есть ошибка array out of range in ,, (218,12)
ArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND); // Теперь цены открытия упорядочены по убываниюint Blizko2=ArrayBsearch(Mas,Ask,WHOLE_ARRAY,0,MODE_DESCEND); //Определен индекс ближайшего большего по значению елемента к текущей цене
PriceBlizko2 = Mas[Blizko2]; // Цена выбранного ордераArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND); // Теперь цены открытия упорядочены по убываниюint Blizko1=ArrayBsearch(Mas,Bid,WHOLE_ARRAY,0,MODE_ASCEND); //Определен индекс ближайшего меньшего по значению елемента к текущей цене
PriceBlizko1=Mas[Blizko1];
}
}
こんにちは!配列について質問です。悩みに悩んで一次元配列を作成しました。コンパイル時にエラーが出ないので大丈夫なはずですが、テスターで実行するとエラー EURUSD,M1: array out of range in ,, (218,12) が出て、まさに私の悲しみの配列の位置を示していることがわかります。どこが悪いか教えてください
for(int i=0; i<OrdersTotal(); i++) // Цикл перебора ордер
{
if(OrderSelect(i,SELECT_BY_POS)) // Если есть следующий
{
ArrayResize(Mas, i+1);
Mas[i] = OrderOpenPrice(); //Как раз перед квадратной скобкой и есть ошибка array out of range in ,, (218,12)/*
ArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND); // Теперь цены открытия упорядочены по убыванию
int Blizko2=ArrayBsearch(Mas,Ask,WHOLE_ARRAY,0,MODE_DESCEND); //Определен индекс ближайшего большего по значению елемента к текущей цене
PriceBlizko2 = Mas[Blizko2]; // Цена выбранного ордера
ArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND); // Теперь цены открытия упорядочены по убыванию
int Blizko1=ArrayBsearch(Mas,Bid,WHOLE_ARRAY,0,MODE_ASCEND); //Определен индекс ближайшего меньшего по значению елемента к текущей цене
PriceBlizko1=Mas[Blizko1];
*/
}
}
double Price; // Цена выбранного ордераdouble Mas[]; //массив для упорядочивания всех ордеровfor(int i=0; i<OrdersTotal(); i++) // Цикл перебора ордер
{
if(OrderSelect(i,SELECT_BY_POS)) // Если есть следующий
{
Price=OrderOpenPrice();
ArrayResize(Mas, i+1);
Mas [i] = Price;
}
}
ArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND); // Теперь цены открытия упорядочены по убываниюint Blizko2=ArrayBsearch(Mas,Ask,WHOLE_ARRAY,0,MODE_DESCEND); //Определен индекс ближайшего большего по значению елемента к текущей цене
PriceBlizko2 = Mas[Blizko2]; // Цена выбранного ордера Вот в этой строкеArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND); // Теперь цены открытия упорядочены по убываниюint Blizko1=ArrayBsearch(Mas,Bid,WHOLE_ARRAY,0,MODE_ASCEND); //Определен индекс ближайшего меньшего по значению елемента к текущей цене
PriceBlizko1=Mas[Blizko1];
if(ArraySize(Mas)>0) { // если массив не пустой, тоArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND); // Теперь цены открытия упорядочены по убываниюint Blizko2=ArrayBsearch(Mas,Ask,WHOLE_ARRAY,0,MODE_DESCEND); //Определен индекс ближайшего большего по значению елемента к текущей цене
PriceBlizko2 = Mas[Blizko2]; // Цена выбранного ордераArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND); // Теперь цены открытия упорядочены по убываниюint Blizko1=ArrayBsearch(Mas,Bid,WHOLE_ARRAY,0,MODE_ASCEND); //Определен индекс ближайшего меньшего по значению елемента к текущей цене
PriceBlizko1=Mas[Blizko1];
}
こんにちは!配列について質問です。悩みに悩んで一次元配列を作成しました。コンパイル時にエラーが出ないので大丈夫なはずですが、テスターで実行するとエラー EURUSD,M1: array out of range in ,, (218,12) が出て、まさに私の悲しみの配列の位置を示していることがわかります。どこが悪いか教えてください
こんにちは!配列について質問です。悩みに悩んで一次元配列を作成しました。コンパイル時にエラーが出ないので大丈夫なはずですが、テスターで実行するとエラー EURUSD,M1: array out of range in ,, (218,12) が出て、まさに私の悲しみの配列の位置を示していることがわかります。どこが悪いか教えてください
あなたのコードは根本的に間違っていますが、エラーは配列のサイズが 充填される前に設定 されていなかったことに起因しています
あなたのコードは根本的に間違っていますが、エラーは配列のサイズが 充填前に設定 されていないことが原因です
ありがとうございました。順序が正しくないのか、教えてください。下から上へ最も近い注文の価格を決定することである。あなたの視点を教えてください。
ありがとうございました。配列がおかしいのか、教えてください。下から、そして上から、最も近い注文の価格を決定することです。ぜひ、あなたの意見を聞かせてください。
ループの中に不要なものがたくさんあるんですね。ループの中で配列に価格を入れ、ループの外で価格を操作する必要があります。
ループの中に不要なものがたくさんあるんですね。ループの中では配列に価格を入れ、ループの外ではそれを操作する必要があります。
なるほど、ありがとうございました!!!ちゃんと理解できたかな?
なるほど、ありがとうございました!!!ちゃんと理解できましたか?
可能なんです。同じ作業でも、いくつかの方法で実現することができます。
Vitaly Muzichenko:
可能です。同じタスクでも、いくつかの方法で実装することができます。
今、最も近いアイテムインデックスを決定するループを作りましたが、テスターではMas[Blizko2]でエラーが表示されます。EAを実行してもまだ注文がないからでしょうか?
(アドバイスお願いします。もしかしたら、似たようなものがどこにあるかご存知ですか?)私はちょうどループのうち、最も近い要素のインデックスの定義を入れているとテスターでは、場所Mas[Blizko2] .MaybeそれはあなたがEAを実行したときに、まだ注文がないので、エラーを示しています?
このように試してみてください。
お試しください
本当にありがとうございました!!!MODE_DESCENDをMODE_ASCENDに 変更することで、現在の価格に最も近い小さい要素のインデックスを正しく決定することができるのでしょうか?
ありがとうございました!!!MODE_DESCENDをMODE_ASCENDに 変更することで、現在の価格に最も近い下位要素のインデックスを正しく決定できているのでしょうか?
ArrayBsearchを 使ったことがないので、回答なし