오류, 버그, 질문 - 페이지 2100

 
Slava :

동기 명령과 비동기 명령의 차이를 느꼈습니다.

비동기 함수 목록을 제공할 수 있습니까?

내가 올바르게 이해한다면 개체 및 차트 기능(다른 것은 무엇입니까?)은 모두 비동기식입니다. 그렇다면 ChartGet이 ChartXY보다 빠른 이유가 완전히 명확하지 않습니까?

 
Slava :

동기 명령과 비동기 명령의 차이를 느꼈습니다.

응...
그러나 관찰에 따르면 이러한 기능은 비동기식으로 매우 동기적입니다. :)
글쎄, 나는 개발자들에게 질문을 다르게 공식화할 것이다: 이러한 비동기 기능을 동기 기능으로 다시 만들 기회(또는 욕망)가 있습니까?
 
fxsaber :

비동기 함수 목록을 제공할 수 있습니까?

내가 올바르게 이해한다면 개체 및 차트 기능(다른 것은 무엇입니까?)은 모두 비동기식입니다. 그렇다면 ChartGet이 ChartXY보다 빠른 이유가 완전히 명확하지 않습니까?

그것들은 또한 매우 느립니다. 제 "빠른" 알고리즘의 본질은 차트 기능을 사용하지 않고 차트 기능 없이 수행할 가능성을 계산하는 것입니다. 그리고 제 예시의 차트를 마우스로 "잡아" 좌-우로 움직이기 시작하자마자 이벤트 발생으로 인해 차트 기능이 적용되기 시작하기 때문에 모든 속도가 사라집니다.
 CHARTEVENT_CHART_CHANGE
 

안녕하세요! https://www.mql5.com/en/articles/100 에서 MQL5를 배우기 시작했습니다. 코드를 실행했는데 오류 4756이 발생했고 설명서를 살펴보았지만 더 쉬워지지 않았습니다. 좋아, 간단한 것(경고/인쇄...)으로 시작해야겠다고 생각했습니다. 가장 중요한 기능 중 하나는 OrderSend입니다. OrderSend를 사용하는 방법에 대한 forum\documentation 검색을 시작했습니다. 이 기사 https://www.mql5.com/ru/docs/constants/tradingconstants/enum_trade_request_actions 에서 구매 위치를 여는 코드를 보았습니다. 오류 4756 및 retcode 10030을 받았습니다. 10030 - 이것이 OrderSend 속성이라는 것을 깨달았지만 이 속성을 사용하는 방법(다른 사람의 코드를 보았음)과 가장 중요한 것은 무엇을 위한 것인지 이해하지 못했습니다. 그런 다음 https://www.mql5.com/ru/docs/trading/ordersend 를 열고 코드를 복사하고 실행했습니다. 모든 것이 정상이었고 작동했습니다.
그러나 나는 여전히 오류 4756이 나타나는 이유와 10030뿐만 아니라 그것을 제거하는 방법을 이해하지 못합니다.

사이의 코드를 살펴보니

 void OnTick (){
       //--- объявление и инициализация запроса и результата
       MqlTradeRequest request={ 0 };
       MqlTradeResult   result={ 0 };
       //--- параметры запроса
      request.action   = TRADE_ACTION_DEAL ;                     // тип торговой операции
      request.symbol   = Symbol ();                               // символ
      request.volume   = 0.1 ;                                   // объем в 0.1 лот
      request.type     = ORDER_TYPE_BUY ;                         // тип ордера
      request.price    = SymbolInfoDouble ( Symbol (), SYMBOL_ASK ); // цена для открытия
      request.deviation= 5 ;                                     // допустимое отклонение от цены
      request.magic    =EXPERT_MAGIC;                           // MagicNumber ордера
       //--- отправка запроса
       if (! OrderSend (request,result))
         PrintFormat ( "OrderSend error %d" , GetLastError ());     // если отправить запрос не удалось, вывести код ошибки
         Alert ( GetLastError ());
       //--- информация об операции
       PrintFormat ( "retcode=%u  deal=%I64u  order=%I64u" ,result.retcode,result.deal,result.order);
   }

 uint SendRandomPendingOrder( long const magic_number) 
  { 
//--- готовим запрос 
   MqlTradeRequest request={ 0 }; 
   request.action= TRADE_ACTION_PENDING ;         // установка отложенного ордера 
   request.magic=magic_number;                   // ORDER_MAGIC 
   request.symbol= _Symbol ;                       // инструмент 
   request.volume= 0.1 ;                           // объем в 0.1 лот 
   request.sl= 0 ;                                 // Stop Loss не указан 
   request.tp= 0 ;                                 // Take Profit не указан    
//--- сформируем тип ордера 
   request.type=GetRandomType();                 // тип ордера 
//---сформируем цену для отложенного ордера 
   request.price=GetRandomPrice(request.type);   // цена для открытия 
//--- отправим торговый приказ 
   MqlTradeResult result={ 0 }; 
   OrderSend (request,result); 
//--- выведем в лог ответ сервера   
   Print ( __FUNCTION__ , ":" ,result.comment); 
   if (result.retcode== 10016 ) Print (result.bid,result.ask,result.price); 
//--- вернем код ответа торгового сервера 
   return result.retcode; 
  } 

제 생각에는 거의 동일하며 이러한 오류가 나타나는 위치(4756 및 10030)를 보지 못합니다. 손가락으로 가리키며 설명해주세요

 
damirqa :

안녕하세요! https://www.mql5.com/en/articles/100 에서 MQL5를 배우기 시작했습니다. 코드를 실행했는데 오류 4756이 발생했고 설명서를 살펴보았지만 더 쉬워지지 않았습니다. 좋아, 간단한 것(경고/인쇄...)으로 시작해야겠다고 생각했습니다. 가장 중요한 기능 중 하나는 OrderSend입니다. OrderSend를 사용하는 방법에 대한 forum\documentation 검색을 시작했습니다. 이 기사 https://www.mql5.com/ru/docs/constants/tradingconstants/enum_trade_request_actions 에서 구매 위치를 여는 코드를 보았습니다. 오류 4756 및 retcode 10030을 받았습니다. 10030 - 이것이 OrderSend 속성이라는 것을 깨달았지만 이 속성을 사용하는 방법(다른 사람의 코드를 보았음)과 가장 중요한 것은 무엇을 위한 것인지 이해하지 못했습니다. 그런 다음 https://www.mql5.com/ru/docs/trading/ordersend 를 열고 코드를 복사하고 실행했습니다. 모든 것이 정상이었고 작동했습니다.
그러나 나는 여전히 오류 4756이 나타나는 이유와 10030뿐만 아니라 그것을 제거하는 방법을 이해하지 못합니다.

사이의 코드를 살펴보니

제 생각에는 거의 동일하며 이러한 오류가 나타나는 위치(4756 및 10030)를 보지 못합니다. 손가락으로 가리키며 설명해주세요


CTrade 거래 클래스를 사용하십시오 - 이 방법을 사용하면 실수를 최소화할 수 있습니다.

매수를 열기 위해 거래 요청을 보내는 예:

 //+------------------------------------------------------------------+
//|                                                     Open Buy.mq5 |
//|                              Copyright © 2018, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2018, Vladimir Karputov"
#property link        "http://wmua.ru/slesar/"
#property version    "1.000"
//---
#include <Trade\Trade.mqh>
CTrade         m_trade;                       // trading object
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
//---
   m_trade.Buy( 1.0 ); // open Buy position, volume 1.0 lot
  }
//+------------------------------------------------------------------+
파일:
Open_Buy.mq5  2 kb
 
Vladimir Karputov :

CTrade 거래 클래스를 사용하십시오. 이 방법을 사용하면 실수를 최소화할 수 있습니다.

매수를 열기 위해 거래 요청을 보내는 예:


CTrade - 일반 클래스입니까? 즉, 다른 코드를 대체할 수 있습니까?

 
damirqa :

CTrade - 일반 클래스입니까? 즉, 다른 코드를 대체할 수 있습니까?


CTradeStandard Library -> Trade Classes -> CTrade 에 터미널과 함께 제공됩니다.

 
damirqa :

제 생각에는 거의 동일하며 이러한 오류가 나타나는 위치(4756 및 10030)를 보지 못합니다. 손가락으로 가리키며 설명해주세요

https://www.mql5.com/en/search#!keyword=지원되지 않음%20filling%20mode

Поиск - MQL5.community
Поиск - MQL5.community
  • www.mql5.com
Поиск выполняется с учетом морфологии и без учета регистра. Все буквы, независимо от того, как они введены, будут рассматриваться как строчные. По умолчанию наш поиск показывает страницы...
 

코드베이스의 예


ME에서 코드를 얻는 방법에는 여러 가지가 있습니다.

  1. ME에서 직접 다운로드하십시오. 아마도 누군가에게는 편리합니다. 그러나 나에게는 전혀 그렇지 않습니다.
  2. 파일을 디스크에 업로드하고 MQL5 폴더에 복사한 다음 ME에서 엽니다. 이 불편한 방법을 가장 자주 사용합니다.
  3. "보기" 버튼을 누르고 복사-붙여넣기(복사 - CTRL + A 및 CTRL + C)를 통해 ME(CTRL + V)에 코드를 놓습니다. 가장 빠르고 편리한 방법입니다.
스크린샷과 같이 "복사" 버튼을 만드는 것이 좋을까요?

 

MT5 테스터 에서 "Edit field" OBJ_EDIT 개체는 그 안에 포함된 값을 편집할 수 없습니다. 이것은 의도된 것입니까 아니면 버그입니까?

터미널과 테스터에서는 MT4가 편집되지만 테스터에서는 MT5가 편집하고 싶지 않아 개체를 만들 때 프로그래밍 방식으로 입력한 값이 모두 사라집니다.