[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 14

 

もし、else 条件で再入力さ れると、この関数自体が動作を停止します。

if ( res!=-1){    
//..
}else{
    err = GetLastError();
    if ( err > 1) try = 0;
    Comment("Ошибка - ", err);          
}

try = 0 とすると while ループが停止し、openOrder() は false を返します。

しかし、while(!openOrder(...)){}構文を使用すると、注文を開くまでチャグチャグになり続けます。

 
キーケーン .そこで気になるのが、start()関数のwhile(!openOrder(...)){}で、そこで何が行われているのかが開示されていないことです。リクオートの 試行回数を制限しているのでしょうか?
 

注文を開くべきと書かれているので、開くべきなら何回試行しても開くという「硬い」構造にしました... 普通に注文を開くなら、while は必要なく、試行回数を try で渡して、関数内ですでに重大エラーに 反応するか無視するか決めて、一回だけ注文を開こうとします... 。


while(!openOrder(...)){} のポイントは、永遠のループを作ること、つまり、注文がオープンされるまで動作することです。

実際に、注文を開始するときにどのような戦術を使用すべきかを定義し、私たちはそれを支援します。

 

ここで質問です。

配列で作業できない。

配列を初期化 し、任意のデータを入れても、読み込むとゼロになっている。

私は何を間違えているのだろう?


double MASS[];

for (int i = 0; i < 10; i++)
 {
  MASS[ i]= i;
 }
for (int n = 0; n < 10; n++)
 {
  Print( MASS[ n]);
 }
 
Kontra писал(а)>>

配列で作業できない。

配列の宣言時などに、サイズを指定する必要があります。

double MASS[10];

あるいは、その後。

ArrayResize(MASS,10);
 

配列のサイズが わからない場合はどうすればよいですか?

しかも、やってもコンパイルできない。

外部変数を挿入しています。

extern int Razmer = 10;

そして、残りのテキスト。

   double MASS[ Razmer];

for (int i = 0; i < 10; i++)
 {
  MASS[ i]= i;
 }
for (int n = 0; n < 10; n++)
 {
  Print( MASS[ n]);

と出力されます。

'Razmer' - integer number expected C:\Program FilesMetaTrader - Alpari2﹑experts﹑temp.mq4 (36, 16)
']'.- comma or semicolon expected C:\Program FilesMetaTrader - Alpari2experts Filtertemp.mq4 (36, 22)
'MASS' - variable not defined C:\Program FilesMetaTrader - Alpari2experts Filtertemp.mq4 (40, 3)
'MASS' - variable not defined C:\Program FilesMetaTrader - Alpari2experts Filtertemp.mq4 (44, 9)

 
Kontra писал(а)>>

配列のサイズがわからない場合はどうすればよいですか?

そのため、配列に入る要素の数がわかっている場合は、ArrayResize関数を使う必要があります。

外部変数では、ご覧の通り、うまくいきません:)

このようにしてもよいでしょう。

ArrayResize(MASS,Razmer);
 

ありがとうございます、外科医様。

効いてますね :)

 
int init()
  { 
   double A=AccountBalance()         //Определяем баланс
   double B=NormalizeDouble( A/50,0)  //Выполняем вычисления и делаем результат целым числом
   double Lots= B*0.01                //Вычисление лота.

if ( Lots>0)Alert("Лот будет ", Lots )

   return(0);
  }
ここでのエラーは何なのか、どうすれば実装できるのか。
 

具体的に何を目指しているのでしょうか?