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

 
the size of local variables is too large (more than 512 kb)

이러한 컴파일 오류는 무엇을 의미하며 어떻게 처리합니까? 여기에 수업이 있습니다. 약 80,000줄이 있습니다. 글쎄, 나는 지금 두 수업 또는 무엇에서 무엇을해야합니까? 말도 안되는 소리. 모든 것이 그렇게 제한되어 있다면 이 64비트 버전에서 요점은 무엇입니까?
 
Juer :
긴 컴파일(10분 이상)의 원인이 정확히 무엇인지 어떻게 알 수 있습니까? 결과 ex5 파일의 무게는 약 12MB로 그다지 크지 않습니다. 그렇게 긴 컴파일을 유발하는 원인을 진단하고 제거하는 방법은 무엇입니까?

https://www.mql5.com/ru/forum/165399#comment_3968004

최적화=0

그것을 알아 냈습니다.

Время компиляции
Время компиляции
  • 2017.01.02
  • www.mql5.com
Всем привет! Код компилируется очень долго (около минуты). Строк кода - около 4000. От чего зависит время и как можно ускорить...
 
Order를 수정할 때 point= 전에 OrderGetDouble 이 참조하는 순서를 지정해야 합니다.
 
Ivan Ivanov :
Order를 수정할 때 point= 전에 OrderGetDouble 이 참조하는 순서를 지정해야 합니다.

Ivan에게 감사합니다. 노력하고 있지만 뭔가 효과가 없습니다.

논리 자체, 티켓이 아닌 유형별로 수정 주문을 선택한 다음 속성으로 전환하는 방법을 이해하지 못합니다.

주문 수정 구조 자체에서 필수 필드는 티켓이고 주문 유형이 없기 때문입니다.

m_trade. OrderModify ( ticket , Bid -(SHAG_s* _Point ), Ask +((SLL_s-SHAG_s) * _Point ), Ask -((TPP_s+SHAG_s)* _Point ), 0 , 0 , 0 );

제 경우에는 Buy_Stop 및 Sell_Stop 두 개의 미결 주문이 있습니다. 여는 순서는 무엇이든 될 수 있습니다.

티켓 번호는 여기에서 나에게 도움이 되지 않습니다.

테스트 조건에서는 미결제 주문(예를 들어) 중 Sell_Stop 주문이 있는지 알 수 있습니다.

그러나 이 특정 Sell_Stop 주문을 처리하는 방법을 알 수 없습니다. OrderModify 를 호출하면 어떻게 될까요?

수정된 것은 Sell_Stop이었고 실수로 티켓 아래에 떨어진 것이 아닙니다.

나는 OrderModify의 티켓 필드를 채우기 위해 언어의 구문이 티켓당 모든 주문을 통과하게 만든다는 느낌을 받았습니다.

여기에서 주문 수정과 혼동했습니다. 프로세스 로직을 잃어버렸습니다...

 

전문가 차트에 첨부하는 기능이 있나요? ChartIndicatorAdd() 처럼.

또는 템플릿이 없는 경우 지정된 차트에 Expert Advisor를 프로그래밍 방식으로 연결하는 방법은 무엇입니까?

 

mql5로 번역하는 방법?

OP_LOTS = ((( AccountBalance () * _LosPercent) / 100 ) / MarketInfo ( Symbol (), MODE_TICKVALUE )) / (pp);
        OP_LOTS = MathRound (OP_LOTS / MarketInfo ( Symbol (), MODE_LOTSTEP )) * MarketInfo ( Symbol (), MODE_LOTSTEP );
        OP_LOTS = MathMax (OP_LOTS, MarketInfo ( Symbol (), MODE_MINLOT ));
        OP_LOTS = MathMin (OP_LOTS, MarketInfo ( Symbol (), MODE_MAXLOT ));
 
Sprut112 :

mql5로 번역하는 방법?

 double point = SymbolInfoDouble ( _Symbol , SYMBOL_POINT );
double lotMax = SymbolInfoDouble ( _Symbol , SYMBOL_VOLUME_MAX );
double lotMin = SymbolInfoDouble ( _Symbol , SYMBOL_VOLUME_MIN );
double lotStep = SymbolInfoDouble ( _Symbol , SYMBOL_VOLUME_STEP );
int digits = ( int ) SymbolInfoInteger ( _Symbol , SYMBOL_DIGITS );
두 버전 모두에서 작동합니다.
 

프롬프트하십시오.

도움말에는 주문 작업을 위한 일반 알고리즘의 예가 있습니다.

  {
//--- получим общее количество ордеров
   int orders= OrdersTotal ();
//--- пробежим по списку ордеров
   for ( int i= 0 ;i<orders;i++)
   {
   ResetLastError ();
//--- скопируем в кэш ордер по его номеру в списке
   ulong ticket= OrderGetTicket (i);
   if (ticket!= 0 ) // если ордер успешно скопирован в кэш, работаем с ним
   {
   double price_open   = OrderGetDouble ( ORDER_PRICE_OPEN );
   datetime time_setup = OrderGetInteger ( ORDER_TIME_SETUP );
   string symbol       = OrderGetString ( ORDER_SYMBOL );
   long magic_number   = OrderGetInteger ( ORDER_MAGIC );
   if (magic_number    ==m_magic)
   {
//  обработаем ордер с заданным ORDER_MAGIC
   }
   PrintFormat ( "Ордер #%d по %s был выставлен %s, ORDER_MAGIC=%d" ,ticket,symbol, TimeToString (time_setup),magic_number);
   }
   else    // вызов OrderGetTicket() завершился неудачно
   {
   PrintFormat ( "Ошибка при получении ордера из списка в кэш. Код ошибки: %d" , GetLastError ());
   }
   }
  }

컴파일할 때 datetime 형식에 경고가 표시되며, 분명히 형식 간에 변환 충돌이 발생합니다.

도움말에 따르면 문제가 무엇인지 이해할 수 없습니다. ORDER_TIME_SETUP 에는 날짜/시간 유형이 있습니다.

문제는 무엇이며 해결 방법은 무엇입니까?

 
vladzeit :

프롬프트하십시오.

도움말에는 주문 작업을 위한 일반 알고리즘의 예가 있습니다.

컴파일할 때 datetime 형식에 경고가 표시되며, 분명히 형식 간에 변환 충돌이 발생합니다.

도움말에 따르면 문제가 무엇인지 이해할 수 없습니다. ORDER_TIME_SETUP 에는 날짜/시간 유형이 있습니다.

문제는 무엇이며 해결 방법은 무엇입니까?

 datetime time_setup =( datetime ) OrderGetInteger ( ORDER_TIME_SETUP );
//....
long magic_number   =( long ) OrderGetInteger ( ORDER_MAGIC );

OrderGetInteger는 INT와 마찬가지로 원하는 유형으로 캐스트해야 할 필요가 있습니다.

 
Konstantin Nikitin :

OrderGetInteger는 INT와 마찬가지로 원하는 유형으로 캐스트해야 할 필요가 있습니다.

예를 들어 주셔서 감사합니다.

여전히 지정하십시오... 올바르게 이해했는지 여부.

이것으로 =( datetime ) OrderGetInteger . 우리는 OrderGetInteger에 명시적 날짜/시간 유형을 사용하도록 지시합니다. ?  

이 규칙은 명시적 유형이 없거나 할당되는 변수의 유형과 일치하지 않는 모든 함수에 적용됩니까? 아니면 이것은 단지 특별한 경우입니까?

이것이 규칙인지 아니면 특별한 경우로 기억해야 하는지 알고 싶습니다.

사유: