初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 1480

 
Artyom Trishkin #:
できる。すると、参照渡しされた変数にのみ、2つの値が返される。つまり、この関数は3つの値を返す

興味深さのために、d変数を削除した。関数だけを残した。印刷結果は変わっていない。正直なところ、3つの値についてはまったく 理解できません。

ありがとう、ウラジミール。

 
MrBrooklin #:

興味を引くために、d変数を取り除いた。関数だけを残した。印刷結果は変わっていない。正直なところ、3つの値についてはまったく 理解できない。

ありがとう、ウラジミール。

この値は印刷されなかったので、変わっていません。

印刷を追加すればわかります。

 
Alexey Viktorov #:

この値は印刷されなかったため、変更されていない。

printを追加してください。

印刷しました。変わらない。

2023.11.22 19:48:24.110 10 (EURUSDrfd,H1)       a и b перед вызовом:14 8
2023.11.22 19:48:24.110 10 (EURUSDrfd,H1)       a и b после вызова:28 4

また何か誤解していたのかな?それともd変数を プリントする必要が あったのか?これは私たちが話していたことですか?

ありがとう、ウラジミール。

 
MrBrooklin #:

プリントアウトした。そのままで、全ては変わらない。

よろしく、ウラジーミル

どこで印刷したんだ?

//+------------------------------------------------------------------+
//| передача параметров по ссылке                                    |
//+------------------------------------------------------------------+
double SecondMethod(int &i,int &j)
  {
   double res;
//---
   i*=2;
   j/=2;
   res=i+j;
//---
   return(res);
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---.
   int a=14,b=8;
   Print("a и b перед вызовом:",a," ",b);
   double d=SecondMethod(a,b);
   Print("Результат выполнения функции ", d);
   Print("a и b после вызова:",a," ",b, " ",d);// или здесь. А можно и там и тут…
  }
//+------------------------------------------------------------------+
 
Alexey Viktorov #:

どこで印刷したのですか?

これで全部わかったよ。))ありがとう!

ウラジーミル

 
おはようございます!MQL5プログラミング 言語の勉強を続けています。オープンポジションの総数を計算し、エラーコードを含むいくつかのパラメータを出力する小さなスクリプトを書きました:
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   ResetLastError(); // установим значение предопределенной переменной _LastError в ноль
   int pos_total = PositionsTotal(); // объявим переменную для хранения количества открытых позиций
   if(pos_total > 0) // если есть открытые позиции
     {
      for(int i=0; i<pos_total; i++) // запустим цикл и переберём все открытые позиции
        {
         if(PositionGetSymbol(i) == _Symbol) // выберем все открытые позиции по текущему символу
           {
            ulong  pos_id = PositionGetInteger(POSITION_IDENTIFIER);
            double pos_price = PositionGetDouble(POSITION_PRICE_OPEN);
            double pos_tp = PositionGetDouble(POSITION_TP);
            double pos_sl = PositionGetDouble(POSITION_SL);
            PrintFormat("Позиция #%d цена = %G тейк-профит = %G стоп-лосс = %G", pos_id, pos_price, pos_tp, pos_sl);
           }
         else // если выбрать позицию не удалось
           {
            PrintFormat("Не удалось выбрать позицию по символу %s. Ошибка = ", _Symbol, GetLastError());
           }
        }
     }
  }
//+------------------------------------------------------------------+

オープンポジションがあるシンボルで実行してみました。正しく動作し、情報は正しく印刷されました。次へ。オープンポジションのないシンボルで実行。オープンポジションがないことの情報は正しく表示されますが、エラーの原因のコードはなぜか表示されません。エラーコードが表示されない理由を教えてください。

よろしくお願いします。

 
MrBrooklin #:

オープンポジションのあるシンボルで起動した。正しく動作し、情報は正しく表示されます。次にオープンポジションのないシンボルで実行してみました。オープンポジションがないことの情報は正しく表示されますが、エラーの原因のコードはなぜか表示されません。エラーコードが表示されない理由を教えてください。

エラーがない場合、エラーコードはどこから来るのでしょうか?ポジションのシンボルが間違っているだけです。

 
JRandomTrader #:

エラーがないのに、なぜエラーコードがあるのですか?ポジションの記号が間違って いるだけだ。

ご回答ありがとうございます!少なくともこのエラーコードは表示されると思っていました:

err_trade_position_not_found

4753

ポジションが見つかりません


シンボルについては同意できません。このシンボルは、まさにこのスクリプトが投げられたチャートのシンボルです。現在、GBPUSDrfdというシンボルのオープンポジションはありませんが、エラーもありません。よくわからない!

2023.11.23 13:27:26.385 7 (GBPUSDrfd,H1)        Не удалось выбрать позицию по символу GBPUSDrfd. Ошибка = 
2023.11.23 13:27:26.385 7 (GBPUSDrfd,H1)        Не удалось выбрать позицию по символу GBPUSDrfd. Ошибка = 

ありがとう、ウラジミール。

 
MrBrooklin #:

ご回答ありがとうございます!少なくともこのエラーコードが表示されると思っていました:

err_trade_position_not_found

4753

ポジションが見つかりません


シンボルについては同意できない。シンボルは、このスクリプトが投げられたチャートのシンボルとまったく同じです。GBPUSDrfdというシンボルのオープンポジションはありませんが、エラーもありません。理解できない!

よろしく、ウラジミール。

すべてのポジションが見つかりました!しかし、見つかったポジションの中に必要なシンボルがありません。

 
JRandomTrader #:

すべてのポジションが見つかった!しかし、見つかったポジションの中に、必要なシンボルを持つものがない。

今わかったよ。ありがとうございます!少なくとも1つのオープンポジションがあれば、エラーコード4753は表示されないことがわかりました。

ありがとう、ウラジミール。

理由: