Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 928

 
Juer:

¿Qué carpeta compartida? No lo uso para nada. Siempre empiezo en modo portátil. Tengo todo en mi carpeta de instalación.

ArtículoLifeHack for Trader: Informe comparativo de varias pruebas.

*** Aquí hay un ejemplo de un simple scriptCheck_TerminalPaths.mq5:

//+------------------------------------------------------------------+
//|                                          Check_TerminalPaths.mq5 |
//|                        Copyright 2009, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2009, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   Print("TERMINAL_PATH = ",TerminalInfoString(TERMINAL_PATH));
   Print("TERMINAL_DATA_PATH = ",TerminalInfoString(TERMINAL_DATA_PATH));
   Print("TERMINAL_COMMONDATA_PATH = ",TerminalInfoString(TERMINAL_COMMONDATA_PATH));
  }
//+------------------------------------------------------------------+

Este script emite tres parámetros:

  • TERMINAL_PATH - carpeta desde la que se lanza el terminal
  • TERMINAL_DATA_PATH - carpeta donde se almacenan los datos del terminal
  • TERMINAL_COMMONDATA_PATH - la carpeta común de todos los terminales cliente instalados en el ordenador

Ejemplo para tres terminales (uno de ellos se inicia con el interruptor /Portable):

// Терминал запускается в основном режиме
TERMINAL_PATH 			= C:\Program Files\MetaTrader 5
TERMINAL_DATA_PATH 			= C:\Users\KVN\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075
TERMINAL_COMMONDATA_PATH 			= C:\Users\KVN\AppData\Roaming\MetaQuotes\Terminal\Common

// Терминал запускается в основном режиме
TERMINAL_PATH 			= D:\MetaTrader 5 3
TERMINAL_DATA_PATH 			= C:\Users\KVN\AppData\Roaming\MetaQuotes\Terminal\0 C46DDCEB43080B0EC647E0C66170465
TERMINAL_COMMONDATA_PATH 			= C:\Users\KVN\AppData\Roaming\MetaQuotes\Terminal\Common

// Терминал запускается в режиме Portable
TERMINAL_PATH 			= D:\MetaTrader 5 5
TERMINAL_DATA_PATH 			= D:\MetaTrader 5 5
TERMINAL_COMMONDATA_PATH 			= C:\Users\KVN\AppData\Roaming\MetaQuotes\Terminal\Common

***

 
Vladimir Karputov:

Carpeta compartida:FILE_COMMON. Busca, lee. Pensar.

¿Por qué recibo el error 5004 en el probador con el mismo archivo, pero al depurar en datos reales todo está bien?

 
Juer:

¿Y por qué me da error 5004 en el probador con el mismo archivo, mientras que al depurarlo con datos reales está bien?

No das la imagen completa. Tienes que sacar la información con pinzas.

Intenta describir la situación de forma inteligente. Proporcionar un CÓDIGO que se pueda iniciar.

 

Con FILE_COMMON pasa sin error tanto en datos reales como en el tester.

 

¿Pueden decirme cómo calcular el coste por lote sin utilizar OrderCalcMargin?

bool l=OrderCalcMargin(ORDER_TYPE_BUY,Symbol(),Lts,SymbolInfoDouble(Symbol(),SYMBOL_ASK),Margin);

Alerta(l);

porque mi función devuelve falso

 
Fast528:

Necesito que el indicador muestre las posiciones de entrada/salida en el gráfico y dibuje una línea entre ellas, en un periodo de hoy menos 1 día por ejemplo, como se suele hacer en un indicador o robot?

No entiendo cuál es la relación entre la pregunta original y las líneas. Hoy menos 1 día se puede establecer de varias maneras. o es una pregunta diferente?
 
Alexey Viktorov:
No entiendo la relación entre la pregunta original y las líneas. Hoy menos 1 día se puede asignar con varias opciones. o la pregunta es diferente?

¿preguntaste para qué sirve la variable de tiempo? aquí se ve cómo establecer el cálculo de la "fecha del servidor" menos 1-2 días

y, por supuesto, había una pregunta y cuál es la diferencia entre esas dos opciones para completar la Estructura,

MqlDateTime dt;
TimeTradeServer(dt);

и

MqlDateTime tm;
TimeToStruct(TimeTradeServer(),tm);
 
Fast528:

¿preguntaste para qué sirve la variable de tiempo? aquí se ve cómo establecer el cálculo de la "fecha del servidor" menos 1-2 días

y, por supuesto, había una pregunta y cuál es la diferencia entre esas dos opciones para llenar la Estructura,

Bueno, si sólo se rellena la estructura, es poco probable que haya alguna diferencia.

¿Y por qué determinar la hora del servidor a través de la hora del ordenador local? ¿Por qué no te gusta TimeCurrent() y lo utilizas?

 
ConTimeTradeServer en el fin de semana es más conveniente para experimentar con rangos de negociación
 

Código

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   for(int i=0;i<=21;i++)
     {
      Print("Timeframe: "+EnumToString((ENUM_TIMEFRAMES)i));
     }
  }

Da este resultado:

2018.09.17 00:59:59.716 CheckTF (EURUSD,H4)     Timeframe: PERIOD_CURRENT
2018.09.17 00:59:59.716 CheckTF (EURUSD,H4)     Timeframe: PERIOD_M1
2018.09.17 00:59:59.716 CheckTF (EURUSD,H4)     Timeframe: PERIOD_M2
2018.09.17 00:59:59.716 CheckTF (EURUSD,H4)     Timeframe: PERIOD_M3
2018.09.17 00:59:59.716 CheckTF (EURUSD,H4)     Timeframe: PERIOD_M4
2018.09.17 00:59:59.716 CheckTF (EURUSD,H4)     Timeframe: PERIOD_M5
2018.09.17 00:59:59.716 CheckTF (EURUSD,H4)     Timeframe: PERIOD_M6
2018.09.17 00:59:59.716 CheckTF (EURUSD,H4)     Timeframe: ENUM_TIMEFRAMES::7
2018.09.17 00:59:59.716 CheckTF (EURUSD,H4)     Timeframe: ENUM_TIMEFRAMES::8
2018.09.17 00:59:59.716 CheckTF (EURUSD,H4)     Timeframe: ENUM_TIMEFRAMES::9
2018.09.17 00:59:59.716 CheckTF (EURUSD,H4)     Timeframe: PERIOD_M10
2018.09.17 00:59:59.716 CheckTF (EURUSD,H4)     Timeframe: ENUM_TIMEFRAMES::11
2018.09.17 00:59:59.716 CheckTF (EURUSD,H4)     Timeframe: PERIOD_M12
2018.09.17 00:59:59.716 CheckTF (EURUSD,H4)     Timeframe: ENUM_TIMEFRAMES::13
2018.09.17 00:59:59.716 CheckTF (EURUSD,H4)     Timeframe: ENUM_TIMEFRAMES::14
2018.09.17 00:59:59.716 CheckTF (EURUSD,H4)     Timeframe: PERIOD_M15
2018.09.17 00:59:59.716 CheckTF (EURUSD,H4)     Timeframe: ENUM_TIMEFRAMES::16
2018.09.17 00:59:59.716 CheckTF (EURUSD,H4)     Timeframe: ENUM_TIMEFRAMES::17
2018.09.17 00:59:59.716 CheckTF (EURUSD,H4)     Timeframe: ENUM_TIMEFRAMES::18
2018.09.17 00:59:59.716 CheckTF (EURUSD,H4)     Timeframe: ENUM_TIMEFRAMES::19
2018.09.17 00:59:59.716 CheckTF (EURUSD,H4)     Timeframe: PERIOD_M20
2018.09.17 00:59:59.716 CheckTF (EURUSD,H4)     Timeframe: ENUM_TIMEFRAMES::21
¿Qué estoy haciendo mal?