Errores, fallos, preguntas - página 2100

 
Slava:

Ha percibido la diferencia entre un comando sincrónico y uno asincrónico.

¿Podría proporcionar una lista de funciones asíncronas?

Si he entendido bien, las funciones Object y Chart (¿cuáles otras?) son todas asíncronas. Entonces no está muy claro por qué ChartGet funciona más rápido que ChartXY.

 
Slava:

Ha percibido la diferencia entre un comando sincrónico y uno asincrónico.

Sí...
Pero las observaciones muestran que estas funciones son bastante sincrónicas en su asincronía. :)
Bien, formularé mi pregunta de forma diferente para los desarrolladores: ¿Existe la oportunidad (o el deseo) de cambiar estas funciones asíncronas por otras síncronas?
 
fxsaber:

¿Podría proporcionar una lista de funciones asíncronas?

Si he entendido bien, las funciones Object y Chart (¿cuáles otras?) son todas asíncronas. Entonces no está muy claro por qué ChartGet funciona más rápido que ChartXY.

También son terriblemente lentos, es que el punto de mi algoritmo "rápido" es calcular una oportunidad para no llamar a las funciones de los gráficos y prescindir de ellos. Y en cuanto se "agarra" el gráfico en mi ejemplo y se empieza a mover de izquierda a derecha, se pierde toda la velocidad porque las funciones del gráfico empiezan a aplicarse debido a la ocurrencia del evento
CHARTEVENT_CHART_CHANGE
 

Hola, he empezado a estudiar MQL5 desdehttps://www.mql5.com/ru/articles/100. He lanzado el código y he recibido el error 4756. El error no ha mejorado después de mirar la documentación. Bien, he pensado que voy a empezar con funciones sencillas (Alerta/Impresión...). Una de las funciones más importantes es OrderSend. Empecé a buscar en el foro/documentación sobre cómo utilizar OrderSend. Encontré este artículohttps://www.mql5.com/ru/docs/constants/tradingconstants/enum_trade_request_actions y encontré el código para abrir una posición de compra. Tengo el error 4756 y el retcódigo 10030. He entendido que 10030 - es la propiedad OrderSend, pero no he entendido cómo se debe utilizar esta propiedad (he mirado el código de otra persona) y para qué se utiliza principalmente. Entonces abríhttps://www.mql5.com/ru/docs/trading/ordersend, copié el código, lo lancé, todo está bien, funcionó.
Pero sigo sin entender por qué aparece el error 4756 y cómo deshacerse de él, así como del 10030.

Miré el código entre

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);
   }

y esta otra.

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; 
  } 

Me parecen casi idénticos, no veo dónde aparecen esos errores (4756 y 10030). Por favor, señale con el dedo y explique.

 
damirqa:

Hola! He empezado a estudiar MQL5 desdehttps://www.mql5.com/ru/articles/100. He lanzado el código y he recibido el error 4756. Así que he pensado en empezar por la más sencilla (Alerta/Impresión...). Una de las funciones más importantes es OrderSend. Empecé a buscar en el foro/documentación sobre cómo utilizar OrderSend. Encontré este artículohttps://www.mql5.com/ru/docs/constants/tradingconstants/enum_trade_request_actions y encontré el código para abrir una posición de compra. Tengo el error 4756 y el retcódigo 10030. He entendido que 10030 - es la propiedad OrderSend, pero no he entendido cómo se debe utilizar esta propiedad (he mirado el código de otra persona) y para qué se utiliza principalmente. Entonces abríhttps://www.mql5.com/ru/docs/trading/ordersend, copié el código, lo ejecuté y funcionó bien.
Pero sigo sin entender por qué aparece el error 4756 y cómo deshacerse de él, así como del 10030.

Miré el código entre

y esta otra.

Me parecen casi idénticos, no veo dónde aparecen esos errores (4756 y 10030). Por favor, señale con el dedo y explique


Utilice la clase de comercio de CTrade: así se garantiza que cometa el menor número de errores posible.

Ejemplo de envío de una orden de apertura de compra:

//+------------------------------------------------------------------+
//|                                                     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
  }
//+------------------------------------------------------------------+
Archivos adjuntos:
Open_Buy.mq5  2 kb
 
Vladimir Karputov:

Utilice la clase de comercio de CTrade para asegurarse de cometer el menor número de errores posible.

Ejemplo de envío de una orden de compra:


CTrade: ¿es una clase universal? Es decir, ¿puede sustituir a cualquier otro código?

 
damirqa:

CTrade: ¿es una clase universal? Entonces, ¿es posible sustituir cualquier otro código por éste?


CTrade se suministra con el terminal en laBiblioteca Estándar->Clases de Comercio->CTrade.

 
damirqa:

Me parecen casi idénticos, no veo dónde aparecen esos errores (4756 y 10030). Por favor, señale con el dedo y explique

https://www.mql5.com/ru/search#!keyword=Unsupported%20filling%20mode

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

Un ejemplo de kodobase


Hay varias formas de introducir el código en ME

  1. Cárguelo directamente desde ME. Esto es probablemente útil para algunas personas. Pero para mí, en absoluto.
  2. Descargue el archivo en el disco, cópielo en la carpeta MQL5 y ábralo en ME. La mayoría de las veces utilizo esta forma inconveniente.
  3. Pulsa el botón "ver" y copia (copiar - CTRL+A y CTRL+C) y copia el código al ME (CTRL+V). La forma más rápida y cómoda.
¿Es razonable hacer el botón "copiar" como se muestra en la captura de pantalla?

 

En el probador de MT5, el objeto "Campo de entrada" OBJ_EDIT no permite editar un valor en él. ¿Está diseñado así o es un error?

En los terminales y en el probador de MT4 es editable, pero en el probador de MT5 no lo es, el valor introducido en él programáticamente al crear el objeto desaparece.