Errores, fallos, preguntas - página 1453

 
Vladislav Andruschenko:

la tabla, sin embargo, muestra los siguientes valores:

Llenar o matar

SÍMBOLO_RELLENO_FOK

1

Esta política significa que una operación sólo puede ejecutarse con el volumen especificado. Si la cantidad necesaria de un instrumento financiero no está disponible actualmente en el mercado, la orden no se ejecutará. El volumen requerido puede llenarse utilizando varias ofertas disponibles en el mercado en este momento.

Inmediato o Cancelar

SYMBOL_FILLING_IOC

2

En este caso, un operador se compromete a ejecutar una operación con el volumen máximo disponible en el mercado dentro de lo indicado en la orden. En caso de que la orden no pueda ser atendida en su totalidad, se atenderá el volumen disponible de la orden y se cancelará el volumen restante. La posibilidad de utilizar órdenes IOC se determina en el servidor comercial.

Volver

Sin identificador

Esta política se utiliza sólo para las órdenes de mercado (Compra y Venta), órdenes limitadas y stop limitadas y sólo para los símbolos con ejecución de Mercado o Bolsa. En caso de llenado parcial, una orden de mercado o limitada con volumen restante no se cancela, sino que se sigue procesando.

Pero debe haber una confusión de datos.

No has leído toda la Ayuda.

Se puede establecer más de un modo para cada símbolo mediante una combinación de banderas. La combinación de banderas se expresa mediante una operación lógica OR (|), por ejemplo SYMBOL_FILLING_FOK|SYMBOL_FILLING_IOC. Para comprobar si un modo concreto está permitido para un instrumento, el resultado del AND lógico (&) debe compararse con el indicador de modo.

 

En el caso de los símbolos, la propiedad SYMBOL_FILLING_MODE significa una combinación de banderas, es decir, describe los modos de llenado permitidos al negociar ese símbolo.

¿Has probado a hacer la comprobación tal y como se indica en la documentación?

В режимах исполнения "По запросу" и "Немедленный" для рыночных ордеров всегда используется политика заполнения Все/Ничего, а для лимитных ордеров - режим "Вернуть". В данном случае, при от отсылке ордеров функциями OrderSend или OrderSendAsync тип заполнения для них можно не указывать.

En los modos de ejecución "Por mercado" y "Bolsa", la política de llenado de "Retorno" está siempre permitida para todos los tipos de órdenes. La permisibilidad de los otros tipos de órdenes puede comprobarse mediante las propiedades SYMBOL_FILLING_FOK y SYMBOL_FILLING_IOC.

Ejemplo:

//+------------------------------------------------------------------+
//| comprueba la permisividad del modo de llenado especificado |
//+------------------------------------------------------------------+
bool IsFillingTypeAllowed(string symbol,int fill_type)
{
//--- obtener el valor de la propiedad que describe el modo de llenado
int filling=(int)SymbolInfoInteger(symbol,SYMBOL_FILLING_MODE);
//--- devuelve true si el modo fill_type está activado
return((relleno&tipo_de_relleno)==tipo_de_relleno);
}


 
Rashid Umarov:

En el caso de los símbolos, la propiedad SYMBOL_FILLING_MODE significa una combinación de banderas, es decir, describe los modos de llenado permitidos al negociar ese símbolo.

¿Has probado a hacer la comprobación tal y como se indica en la documentación?


La siguiente solución funcionó

         switch((int)SymbolInfoInteger(Symbol(), SYMBOL_FILLING_MODE))
   {
   case SYMBOL_FILLING_FOK:
      request.type_filling=ORDER_FILLING_FOK;
      break;
   case SYMBOL_FILLING_IOC:
      request.type_filling=ORDER_FILLING_IOC;
      break;
   default:
      request.type_filling=ORDER_FILLING_RETURN;
   }
 
Vladislav Andruschenko:

esta solución ayudó

Si lee la ayuda con más atención, verá que no se maneja el caso de que ambos modos estén disponibles - el valor de SymbolInfoInteger será(SYMBOL_FILLING_FOK | SYMBOL_FILLING_IOC).
 

Y puedes comprobarlo en el servidor "RoboForex-MetaTrader 5" con este código:

//+------------------------------------------------------------------+
//|                                                 Info_FILLING.mq5 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property description "Варианты исполнения ордера по объему"
#include<Trade\Trade.mqh>
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
// Все/Ничего     SYMBOL_FILLING_FOK   1
// Все/Частично   SYMBOL_FILLING_IOC   2
// Вернуть        Идентификатор отсутствует
   Print("Все/Ничего: ",IsFillingTypeAllowed(Symbol(),SYMBOL_FILLING_FOK));
   Print("Все/Частично: ",IsFillingTypeAllowed(Symbol(),SYMBOL_FILLING_IOC));
   Print("Вернуть: ",IsFillingTypeAllowed(Symbol(),NULL));

   CTrade oTrade;
   switch((int)SymbolInfoInteger(Symbol(),SYMBOL_FILLING_MODE))
     {
      case SYMBOL_FILLING_FOK:
         Print("ORDER_FILLING_FOK");
         break;
      case SYMBOL_FILLING_IOC:
         Print("ORDER_FILLING_IOC");
         break;
      default:
         Print("ORDER_FILLING_RETURN");
     }
  }
//+------------------------------------------------------------------+ 
//| проверяет разрешенность указанного режима заполнения             | 
//+------------------------------------------------------------------+ 
bool IsFillingTypeAllowed(string symbol,int fill_type)
  {
//--- получим значение свойства, описывающего режим заполнения 
   int filling=(int)SymbolInfoInteger(symbol,SYMBOL_FILLING_MODE);
//--- вернем true, если режим fill_type разрешен 
   return((filling&fill_type)==fill_type);
  }
//+------------------------------------------------------------------+

Y el resultado del cambio:

2015.12.22 18:13:09.946 Info_FILLING (AUDCAD.m,D1)      Все/Ничего: true
2015.12.22 18:13:09.946 Info_FILLING (AUDCAD.m,D1)      Все/Частично: true
2015.12.22 18:13:09.946 Info_FILLING (AUDCAD.m,D1)      Вернуть: true
2015.12.22 18:13:09.946 Info_FILLING (AUDCAD.m,D1)      ORDER_FILLING_RETURN


Se puede ver que la variante del interruptor no nos dice la verdad. Pero aquí hay un ejemplo de la documentación que nos da la imagen completa.

 

¿Cuál es el problema con

MarketInfo(Symbol(),MODE_MARGININIT) y SymbolInfoDouble(Symbol(),SYMBOL_MARGIN_INITIAL)

Por qué devuelven ceros ?????

 
Vladimir Pastushak:

¿Cuál es el problema con

MarketInfo(Symbol(),MODE_MARGININIT) y SymbolInfoDouble(Symbol(),SYMBOL_MARGIN_INITIAL)

Por qué devuelven ceros ??????

Llevo seis meses esperando un servicio de ayuda con un problema de cálculo de garantías. La información en el servicio de ayuda no coincide con la información en el sitio la información en el servicio de ayuda y en el sitio no coincide con la información real.

Cálculo de la garantía

Errores,MetaTrader 5 MQL5,Abierto,Iniciado: 2015.07.13 16:23,#1259415

Aquí hay un ejemplo de la ayuda de MQL5 :

SYMBOL_CALC_MODE_FOREX

Modo Forex - cálculo de beneficios y márgenes para Forex

Margen:Lotes*Tamaño_del_contrato/Levante

Esta es una fórmula para calcular una cotización hacia adelante. La cotización hacia atrás será diferente para la cruz, y la tercera para la cruz. El sitio tiene el mismo error.

Así que, sea cual sea el tipo de mercado, las fórmulas son bastante dudosas...

Y ahora he descubierto que MarketInfo(Symbol(),MODE_MARGININIT) y SymbolInfoDouble(Symbol(),SYMBOL_MARGIN_INITIAL) devuelven ceros.

Pero en este recurso también hay escritos extraños, https://metaquotes5.wordpress.com/2012/08/ por lo que entiendo es el blog de MetaQuotes.

What are Expert Magic Numbers?
  • 2012.08.11
  • skebanga
  • metaquotes5.wordpress.com
Expert magic numbers are ids given to a particular expert advisor. Care should be taken to ensure the ids are unique. This is because the magic number is used by the MetaTrader back end to know which expert advisor to send information to. For example, when a trade notification is...
 
Hay enemigos por todas partes. Nadie nos quiere, excepto nuestras mujeres en el día de pago.
 
Алексей Тарабанов:
Hay enemigos por todas partes. Nadie nos necesita más que nuestras mujeres en el día de pago.

Saludos Alexey

Si puede reescribir el indicador iPulsar en MT5, por favor, reescríbalo en código base

Gracias


 

¡Hola colegas!

Perdón, me he hecho un lío en el hilo principal antes de ver este.

Por favor, aconséjeme cómo resolver este problema: El Asesor Experto de MT5 en FORTS sigue mostrando el error 10022: "Fecha devencimiento de la orden no válida en la solicitud" al colocar órdenes BAY_STOP o SELL_STOP.

La fecha de caducidad no es importante para mí, pero no encuentro ningún parámetro que acabe de fijar la orden. No tenemos ese problema en el mercado de divisas. Mi corredor está abierto. El error se produce en el probador.