초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 1480

 
Artyom Trishkin #:
Can. 그러면 참조로 전달된 변수에서만 두 개의 값이 수신됩니다. 즉, 함수는 세 가지 값을 반환합니다 .

흥미를 위해 d 변수를 제거했습니다. 함수만 남겼습니다. 인쇄 결과는 변경되지 않았습니다. 솔직히 말해서 세 가지 값에 대해 전혀 이해하지 못합니다.

안부, 블라디미르.

 
MrBrooklin #:

흥미를 위해 d 변수를 제거했습니다. 함수만 남겼습니다. 인쇄 결과는 변경되지 않았습니다. 솔직히 세 가지 값에 대해 전혀 이해하지 못했습니다.

안부, 블라디미르.

이 값이 인쇄되지 않았기 때문에 변경되지 않았습니다.

인쇄를 추가하면 볼 수 있습니다.

 
Alexey Viktorov #:

이 값이 인쇄되지 않았으므로 변경되지 않았습니다.

인쇄를 추가하면 확인할 수 있습니다.

인쇄했습니다. 동일하게 유지되었습니다.

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 #:

모든 포지션을 찾았습니다! 하지만 찾은 포지션 중 필요한 기호가 있는 포지션은 없습니다.

이제 알겠어요. 감사합니다!!! 오픈 포지션이 하나 이상 있으면 오류 코드 4753이 나타나지 않는 것으로 밝혀졌습니다.

감사합니다, 블라디미르.

사유: