Errores, fallos, preguntas - página 1151

 

Cualquiera que tenga problemas o preguntas sobre la contabilidad de la conversión del programa de afiliados - escríbeme, voy a probarlo:

    1. Tableta (Windows 8.1)
    2. PC (Windows 8.1)
    3. Smartphone(Android)
 

Tengo un problema con la función StringConcatenate() en MQL4. Aparece un bloque de ceros en la cadena. Esto se puede ver al imprimir la cadena de resumen en un archivo.

void OnStart()
  {
//---
  string sample = "0123456789ABCDEF";
  string s = "";
  for(int i=0;i<260;i++)
  {
   s = StringConcatenate(s, sample);
   Print(StringBufferLen(s), " ", StringLen(s), " ", s);
  } 
  Print(s);
  }

Esto es lo que escribe el terminal

2014.06.05 12:28:25.378 String_concat_test EURUSD,Daily: 3872 3872 ???????????????

2014.06.05 12:28:25.378 String_concat_test EURUSD,Daily: 3856 3856 ???????????????

2014.06.05 12:28:25.378 String_concat_test EURUSD,Daily: 3840 3840 ???????????????

2014.06.05 12:28:25.378 String_concat_test EURUSD,Daily: 3824 3824 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123

2014.06.05 12:28:25.378 String_concat_test EURUSD,Daily: 3808 3808 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123

2014.06.05 12:28:25.378 String_concat_test EURUSD,Daily: 3792 3792 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123

 
Los ceros significan cero bytes de unos pocos kilobytes
 
Luckhuman:

Tengo un problema con la función StringConcatenate() en MQL4. Aparece un bloque de ceros en la cadena. Esto se puede ver cuando se envía la cadena de resumen a un archivo.

Gracias por el post, arreglado. La corrección se incluirá en la próxima versión.
 
Por favor, explique por qué en la pestaña "Trading" los precios actuales (esta es la columna Precio a la derecha de SL/TP - ¡no confundir con el precio abierto a la izquierda de SL/TP!) para las posiciones de mercado y las órdenes pendientes se muestran de manera diferente para el mismo instrumento, del mismo tipo (por ejemplo, comprar)? En teoría el precio actual del símbolo debería ser el mismo, al menos para varias órdenes abiertas cambia de forma sincronizada (coincide).
 
marketeer:
Por favor, explique por qué en la pestaña "Trading" los precios actuales (esta es la columna Precio a la derecha de SL/TP - ¡no confundir con el precio abierto a la izquierda de SL/TP!) para las posiciones de mercado y las órdenes pendientes se muestran de manera diferente para el mismo instrumento, del mismo tipo (por ejemplo, comprar)? El precio actual en el símbolo debe ser el mismo, al menos para varias órdenes abiertas cambia de forma sincronizada (coincide).

Porque hay un precio de oferta y un precio de demanda:

bid_ask

En la imagen, hay una posición abierta(venta) y hay dos órdenes pendientes (límite deventa y límite de compra). Para una posición abierta(de venta) se especifica el precio actual de venta. Para unlímite de venta se especifica el precio actual de venta. Para el límite de compra se especifica el precio deventa actual.

 
No tengo la pestaña "Calendario". Terminal MetaTrader 5 x64 build 946 iniciado (MetaQuotes Software Corp.). Cuenta demo en el servidor MetaQuotes-Demo. Además hay varias cuentas reales en el terminal.

Y sólo falta en el portátil. En una tableta y en un PC, hay una pestaña de Calendario.


 
Al iniciar MT4 en el indicador, init() falla porque MarketInfo(xxx, MODE_TICKVALUE) devuelve cero (para todos los símbolos). Está claro que el valor del tick está ligado a la moneda de la cuenta, pero el terminal muestra las ventanas incluso antes del inicio de sesión. Entonces resulta que ningún script vinculado al valor funcionará correctamente? ¿Es una característica o un error?
 
¿Cómo puedo saber si un indicador se coloca en el gráfico por sí mismo o si se llama desde otro indicador a través de iCustom?
 
marketeer:
Cuando se inicia MT4 en el indicador, init() no tiene lugar, porque MarketInfo(xxx, MODE_TICKVALUE) devuelve cero (para todos los símbolos). Está claro que el valor del tick está ligado a la moneda de la cuenta, pero el terminal muestra las ventanas antes del ingreso. Entonces resulta que ningún script vinculado al valor funcionará correctamente? ¿Es una característica o un error?

MetaTrader 4. Versión: 4.00 Build 654.

Intente utilizar Symbol() en lugar de xxx y utilice OnInit() en lugar de init():

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
//--- превращение динамических массивов в индикаторные буферы
   SetIndexBuffer(0,ExtMapBufferEMA,INDICATOR_DATA);
//--- MarketInfo
   Print("Symbol=",Symbol());
   Print("Минимальная дневная цена=",MarketInfo(Symbol(),MODE_LOW));
   Print("Максимальная дневная цена=",MarketInfo(Symbol(),MODE_HIGH));
   Print("Время поступления последней котировки=",(MarketInfo(Symbol(),MODE_TIME)));
   Print("Последняя поступившая цена предложения=",MarketInfo(Symbol(),MODE_BID));
   Print("Последняя поступившая цена продажи=",MarketInfo(Symbol(),MODE_ASK));
   Print("Размер пункта в валюте котировки=",MarketInfo(Symbol(),MODE_POINT));
   Print("Количество цифр после запятой в цене инструмента=",MarketInfo(Symbol(),MODE_DIGITS));
   Print("Спрэд в пунктах=",MarketInfo(Symbol(),MODE_SPREAD));
   Print("Минимально допустимый уровень стоп-лосса/тейк-профита в пунктах=",MarketInfo(Symbol(),MODE_STOPLEVEL));
   Print("Размер контракта в базовой валюте инструмента=",MarketInfo(Symbol(),MODE_LOTSIZE));
   Print("Размер минимального изменения цены инструмента в валюте депозита=",MarketInfo(Symbol(),MODE_TICKVALUE));
   Print("Минимальный шаг изменения цены инструмента в пунктах=",MarketInfo(Symbol(),MODE_TICKSIZE));
   Print("Размер свопа для ордеров на покупку=",MarketInfo(Symbol(),MODE_SWAPLONG));
   Print("Размер свопа для ордеров на продажу=",MarketInfo(Symbol(),MODE_SWAPSHORT));
   Print("Календарная дата начала торгов (фьючерсы)=",MarketInfo(Symbol(),MODE_STARTING));
   Print("Календарная дата окончания торгов (фьючерсы)=",MarketInfo(Symbol(),MODE_EXPIRATION));
   Print("Разрешение торгов по указанному инструменту=",MarketInfo(Symbol(),MODE_TRADEALLOWED));
   Print("Минимальный размер лота=",MarketInfo(Symbol(),MODE_MINLOT));
   Print("Шаг изменения размера лота=",MarketInfo(Symbol(),MODE_LOTSTEP));
   Print("Максимальный размер лота=",MarketInfo(Symbol(),MODE_MAXLOT));
   Print("Метод вычисления свопов=",MarketInfo(Symbol(),MODE_SWAPTYPE));
   Print("Способ расчета прибыли=",MarketInfo(Symbol(),MODE_PROFITCALCMODE));
   Print("Способ расчета залоговых средств=",MarketInfo(Symbol(),MODE_MARGINCALCMODE));
   Print("Начальные залоговые требования для 1 лота=",MarketInfo(Symbol(),MODE_MARGININIT));
   Print("Размер залоговых средств для поддержки открытых ордеров в расчете на 1 лот=",MarketInfo(Symbol(),MODE_MARGINMAINTENANCE));
   Print("Маржа, взимаемая с перекрытых ордеров в расчете на 1 лот=",MarketInfo(Symbol(),MODE_MARGINHEDGED));
   Print("Размер свободных средств, необходимых для открытия 1 лота на покупку=",MarketInfo(Symbol(),MODE_MARGINREQUIRED));
   Print("Уровень заморозки ордеров в пунктах=",MarketInfo(Symbol(),MODE_FREEZELEVEL));
//---
   return(INIT_SUCCEEDED);
  }
Razón de la queja: