MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 388

 

皆さん、こんにちは。

配列について勉強中です。

配列から必要な値を削除する方法を教えてください。

私の理解では、値を削除した後、配列のサイズが 縮小され、おそらく

の場合、新しい配列のサイズも指定する必要があります。

リファレンスマニュアルには、配列の値を削除するような関数は見当たらないのですが。全体の手順がどのようなものか、見せていただけますか?

を使用することで、削除後も配列が機能し続けるようになります。

ありがとうございます。

以下、必要なものを具体的に説明します。

int start()                                             
{

double mass[3]=
{
1.2414,
1.2438,
1.2874
};

double value =  Bid ;
int S = ArrayBsearch(mass,  value,  WHOLE_ARRAY,  0, MODE_ASCEND);

if ( Bid == mass[S]) //Bid = 1.2874
OrderSend(Symbol(),OP_SELL,0.1,Bid ,3,Ask+400*Point,Ask-200*Point,"jfh",123 );
}
// после того как открылся ордер по цене элемента массива с индексом 2 (1.2874)
// КАК УДАЛИТЬ ИЗ МАССИВА ЗНАЧЕНИЕ 1.2874 так что бы массив продолжил функционировать дальше.
 
ANDREY:

皆さん、こんにちは。

配列について勉強中です。

配列から必要な値を削除する方法を教えてください。

私の理解では、値を削除した後、配列のサイズが縮小され、おそらく

また、新しい配列のサイズも指定する必要があります。

リファレンスマニュアルには、配列の値を削除するような関数は見当たらないのですが。配列の値を削除するには、全体の手順がどのように見えるか教えてください。

削除後も配列が機能し続けるように。

ありがとうございます。

具体的な例を挙げますと、こんな感じです。

配列を「自分の中に」コピーして、1つ減らしてリサイズすることができます。配列の 0番目を削除して最後の1番目を記入した例ですが、任意のインデックスから任意の数の要素をコピーすることができます。

2つ目の選択肢は、「解放」された空間の最後の値を上書きし、配列のサイズも小さくすることです。

Подскажите про массивы
Подскажите про массивы
  • 2017.12.03
  • www.mql5.com
Я только учусь и на массивах попал в засаду: пытаюсь написать скрипт в котором массив данных будет перезаписываться...
 
Alexey Viktorov:

配列を「自分自身に」コピーし、それを1つ減らしてサイズを変更することができます。例として、配列の 0番目を削除して最後の1番目を埋めることが挙げられますが、コピーは任意のインデックス、任意の要素数から行うことができます。

2つ目の選択肢は、「解放」された空間の最後の値を上書きし、配列のサイズも小さくすることです。

ご指摘ありがとうございます。
 

こんにちは!!!初心者でもないのに説明してくれ、しかし、ある一つの問題にひどくうんざりしている。インジケータから呼び出しています。ある値で新しいバーを受け取った時、すぐにリコンパイルすると全く違う値が表示されます。時間による指標の計算の 遅れは、何も生まない。その結果、自動運転機能は全くありません。質問です。なぜ?疲れ果ててしまったよ。この信じられないような不具合は何なんだ・・・。もう、うんざりだ...。

 

こんにちは!価格がシグナルレベルを超えた場合、シグナルレベルを移動させるという問題が解決できないのですが。コンパイルの時点ではすべてOKなのに、テスターで "suitable "の条件が来ても、何も変化がない。シグナルレベルを超えて価格が動いている状態について、何が問題なのかご教示ください。

//-------------------------выход цены за пределы сигнальных уровней-----------------------------------------------------------------------------------------------
 price=iHigh(Symbol(),PERIOD_M15,0);                                                               //Сигнальный уровень О(Сердцевина)
 ObjectCreate("UrO",OBJ_HLINE,0,0,price);
 ObjectSet("UrO",OBJPROP_COLOR,clrYellowGreen);                               
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
 priceA=price+30*Point;                                                                            //Сигнальный уровень А(Максимум)
 ObjectCreate("UrA",OBJ_HLINE,0,0,priceA);
 ObjectSet("UrA",OBJPROP_COLOR,clrDarkSlateBlue); 
//---------------------------------------------------------------------------------------------------------------------------------------------------------------- 
 priceB=price-30*Point;                                                                            //Сигнальный уровень B(Минимум)
 ObjectCreate("UrB",OBJ_HLINE,0,0,priceB); 
 ObjectSet("UrB",OBJPROP_COLOR,clrOrangeRed); 
//--------------------------------------------------------------------------
if((Bid>=priceA) ||(Bid<=priceB)){                                                                 //если цена вышла за одну из ГРАНИЦ, сдвинуть уровни
  ObjectSet("UrO",OBJPROP_PRICE1,iHigh(Symbol(),PERIOD_M15,0));  
                                                                                             

UrA」 または「UrB」 レベルは、m15で最後のローソク足の最大値に移動するはずですが、そうなりません。誰か理由を知っていますか?

 
vikzip:

こんにちは!価格がシグナルレベルを超えた場合、シグナルレベルを移動させるという問題が解決できないのですが。コンパイルの時点ではすべてOKなのに、テスターで "suitable "の条件が来ても、何も変化がない。シグナルレベルを超えて価格が動いている状態について、何が問題なのかご教示ください。

UrA」 または「UrB」 レベルは、m15で最後のローソク足の最大値に移動するはずですが、そうなりません。誰か理由を知っていますか?


ObjectMove() の何が問題なのでしょうか?

 
Vitalie Postolache:

ObjectMove() の何が問題なのでしょうか?


ありがとうございました!!(笑)

 
Vitalie Postolache:

ObjectMove() の何が問題なのでしょうか?


機能は最高です!しかし、なぜか条件が満たされない!?その理由をご存知の方はいらっしゃいますか?

  double price;                                                                                    //цена сердцевины
  double priceA;                                                                                   //цена верхнего сигнального уровня
  double priceB;                                                                                   //цена нижнего сигнального уровня
//+------------------------------------------------------------------------------------------------------------------------------------------------------------
int start(){
//-------------------------выход цены за пределы сигнальных уровней-----------------------------------------------------------------------------------------------

price=iHigh(Symbol(),PERIOD_M15,0);                                                               //Сигнальный уровень О(Сердцевина)
ObjectCreate("UrO",OBJ_HLINE,0,0,price);
ObjectSet("UrO",OBJPROP_COLOR,clrYellowGreen);                                                                                                                               
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
 priceA=price+30*Point;                                                                            //Сигнальный уровень А(Максимум)
ObjectCreate("UrA",OBJ_HLINE,0,0,priceA);
ObjectSet("UrA",OBJPROP_COLOR,clrDarkSlateBlue); 
//---------------------------------------------------------------------------------------------------------------------------------------------------------------- 
 priceB=price-30*Point;                                                                            //Сигнальный уровень B(Минимум)
ObjectCreate("UrB",OBJ_HLINE,0,0,priceB); 
ObjectSet("UrB",OBJPROP_COLOR,clrOrangeRed); 
 //---------------------------------------------------------------------------------------------------------------------------------------------------------------
if((Bid<=priceB)||(Bid>=priceA)){                                                                 //если цена вышла за одну из ГРАНИЦ
  ObjectsDeleteAll();                                                                             //для примера удаляю все объекты, но этого не происходит!
  }                                                                                               //Почему ведь очевидно на тестере цена выходит за пределы, но ни чего не происходит???
return(0);
}
どなたか、何がエラーなのか説明してください。
 

こんにちは。

MQL4を学び始めたところです。MT4(ver.4.0 build 1090)の「自動売買を許可する」ボタンをスクリプトが無視する理由がわかりません。

このような作りでは、どうにもなりませんね。

int start()
{

     Alert("Привет!");

return;
}

ボタンを押さないのに、アラート付きのウィンドウが表示される。スクリプトで注文を設定すると、Autotradeボタンが押されても押されても、停止することなく毎ティックで注文が発射されます。


そんな作りに挑戦してみました。


int start()
{

 while(!IsStopped())
    {
    
      Alert("Привет!");

     if(!IsExpertEnabled()) break;
    }


return;
}

最初はうまくいっていたようですが、スクリプトを複雑にしていく過程で、それもうまくいかなくなり......。

こんなはずじゃなかったのに、EAを変えてもバックグラウンドのように古いものが動き続けるという、EAの仕事の流麗さが感じられないのですが、まだ分かっていないのかもしれません。

 
Dimitry-1983:

こんにちは。

MQL4を学び始めたところです。MT4(ver.4.0 build 1090)の「自動売買を許可する」ボタンをスクリプトが無視する理由がわかりません。

このような作りでは、どうにもなりませんね。

ボタンを押さないのに、アラート付きのウィンドウが表示される。スクリプトで注文を設定すると、Autotradeボタンが押されても押されても、停止することなく毎ティックで注文が発射されます。


そんな作りに挑戦してみました。


最初はうまくいっていたようですが、スクリプトを複雑にしていく過程で、それもうまくいかなくなり......。

こんなはずじゃなかったのに、EAを変えてもバックグラウンドのように古いものが動き続けるという、EAの仕事の流麗さが感じられないのですが、まだ分かっていないのかもしれません。

このボタンは、トレーディング機能のみに影響します。その他はすべて正常に動作しています。