초보자의 질문 MQL4 MT4 MetaTrader 4 - 페이지 249

 
Taras Slobodyanik # :

요점이 아니라 이것이 바로 요점입니다. 연산자는 함수를 사용하지 않고 간단한 프로세서 명령을 사용하여 어셈블러로 변환할 수 있습니다. 이것이 바로 연산자입니다.

그리고 더 복잡한 것, 복잡한 절차를 호출해야 하는 것은 이미 함수입니다.

음, 본질에 대해 말하자면, 함수는 어셈블러에서 CALL이고 이것은 시컨트 주소를 스택에 저장하는 하드웨어 구현입니다. 그러면 함수 매개변수가 프로그래밍 방식으로 스택으로 전송되고, 함수의 로컬 변수도 스택 ....

저것들. 함수 호출은 언어 및 PC 하드웨어의 규칙에 연결된 특정 작업 시퀀스입니다.


그리고 연산자 ... 솔직히 말해서, 나는 토론 시작 전보다 지금 Wiki에서 더 많은 것을 배웠습니다.

 
Igor Makanu # :

음, 본질에 대해 말하자면, 함수는 어셈블러에서 CALL이고 이것은 시컨트 주소를 스택에 저장하는 하드웨어 구현입니다. 그러면 함수 매개변수가 프로그래밍 방식으로 스택으로 전송되고, 함수의 로컬 변수도 스택 ....

저것들. 함수 호출은 언어 및 PC 하드웨어의 규칙에 연결된 특정 작업 시퀀스입니다.


그리고 연산자 ... 솔직히 말해서, 나는 토론 시작 전보다 지금 Wiki에서 더 많은 것을 배웠습니다.

CALL 은 함수 자체가 아니라 호출(연산자)입니다.

저것들. 함수는 많은 수의 연산자입니다)

 
Taras Slobodyanik # :

CALL 은 함수 자체가 아니라 호출(연산자)입니다.

저것들. 함수는 많은 수의 연산자입니다)

그리고 만약 하나의 연산자라면 그것은 함수가 아니라는 것을 의미합니까?

 void OnStart ()
{
   int x = 0 ;
   inc(x);
}
//+------------------------------------------------------------------+
void inc( int &v)
{
   v = v + 1 ;
}
 
Igor Makanu # :

그리고 만약 하나의 연산자라면 그것은 함수가 아니라는 것을 의미합니까?

질문은 "만약"과 "경고"에 관한 것이었습니다.
첫 번째는 연산자이고 두 번째는 함수인 이유.

"Alert"라는 단어 자체도 연산자이지만 이 단어는 함수를 호출합니다)

"if"라는 단어는 함수를 호출하지 않습니다.

함수는 많은 단어(연산자)입니다.

 
여러분, 답변 감사합니다. 토론이 진행되었습니다. 안타깝게도 아직 교과서에서 본 적 없는 심오한 용어를 사용하셔서 대부분 이해가 되지 않습니다.

Maxim과 Taras의 답변에서 나는 언어의 용어 장치가 엄격하지 않고 일부 연산자 기능을 호출하는 가정이 있다는 결론을 내릴 수 있습니다. 연산자가 하나의 단어이고 함수에 많은 단어가 있다는 대답에 따라 일반 및 중괄호의 동일한 "if" 연산자에 많은 단어/동작이 있을 수 있다는 것도 불명확해집니다.
 
Ivan Butko # :
여러분, 답변 감사합니다. 토론이 진행되었습니다. 안타깝게도 아직 교과서에서 본 적 없는 심오한 용어를 사용하셔서 대부분 이해가 되지 않습니다.

Maxim과 Taras의 답변에서 나는 언어의 용어 장치가 엄격하지 않고 일부 연산자 기능을 호출하는 가정이 있다는 결론을 내릴 수 있습니다. 연산자가 하나의 단어이고 함수에 많은 단어가 있다는 대답에 따라 일반 및 중괄호의 동일한 "if" 연산자에 많은 단어/동작이 있을 수 있다는 것도 불명확해집니다.

함수는 서브루틴입니다.
연산자는 프로그램 단어입니다.

함수는 매번 동일한 연산자를 많이 쓰지 않기 위해 만들어지며 여러 번 호출됩니다.

단일 명령문을 실행하기 위해 함수를 호출하는 것은 즉시 수행될 수 있기 때문에 의미가 없습니다.


추신. 경고는 모든 사람이 사용할 수 있도록 개발자가 작성한 기능(서브루틴)입니다.

 
Taras Slobodyanik # :

함수는 서브루틴입니다.
연산자는 프로그램 단어입니다.

함수는 매번 동일한 연산자를 많이 쓰지 않기 위해 만들어지며 여러 번 호출됩니다.

단일 명령문을 실행하기 위해 함수를 호출하는 것은 즉시 수행될 수 있기 때문에 의미가 없습니다.


추신. 경고는 모든 사람이 사용할 수 있도록 개발자가 작성한 기능(서브루틴)입니다.

정확히는 Alert에는 기능의 표시로 숨겨져 있는 설명이 있습니다. 섹션을 다시 읽고주의를 기울이십시오.

설명 감사합니다. 이 문제에 대해 더 이상 불협화음이 없는 것 같습니다.

 
double CalculateProfitHistory() 
{
   double profit = 0 ;
   int cnt = LockTicket, i , ototal = OrdersHistoryTotal();
   for (i = 0 ; i < ototal; i++)
     {
       if ( OrderSelect (cnt, SELECT_BY_TICKET, MODE_HISTORY))
        {
         if (OrderSymbol() == Symbol () && OrderCloseTime() > 0 )
           {
             if (OrderType() == OP_BUY || OrderType() == OP_SELL)
              {
               if (OrderMagicNumber() == Magic )
                 {
                  profit += OrderProfit()+OrderCommission()+OrderSwap();
                                    
                 }
              }
           }
        }
     }
   return (profit);
}
안녕하세요. 말하다. 왜 옳지 않습니다. 보다 정확하게는 이전 주문에 추가하지 않고 다음 주문의 이익을 표시합니다.
아이디어는 다음과 같습니다. 일정한 이익을 얻은 후 위쪽으로 이동해야 하는 티켓을 변경합니다.
 
i를 반복하고 cnt로 대체
 
Aleksei Stepanenko # :
i를 반복하고 cnt로 대체

plz는 올바른 방법을 작성합니다.