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

 
Alexey Viktorov:

¿Para la visualización en el probador? Sí. Cree una plantilla con todos los indicadores que necesite y guárdela con el nombre del EA o del probador y la prueba se abrirá con esta configuración.

En los gráficos de la cuenta real y de la cuenta demo.

 

¡Saludos!

¿Alguien sabe cómo contactar con Maxim Gutman?

Comerciante, desarrollador de un sistema de comercio automatizado

 
odyn:

En los gráficos de la cuenta real y de la cuenta demo.

Aquí está el MACD, por ejemplo

Todos los demás son iguales.

 

Buenas tardes, por favor asesorar o tirarme un enlace para ver

Necesito seleccionar de las posiciones abiertas aquellas que tienen una vida útil superior a un determinado periodo.

¿Cómo puedo comparar correctamente la hora de apertura de una posición con la hora actual?

He lanzado esta función, lo que hacer a continuación no puedo pensar (poca experiencia), ¿cómo comparar el tiempo?

//+------------------------------------------------------------------+
bool Selected_Positions_Time_Life(datetime time_life, int &array_base[][observations])
{
int n = 0;
int size = ArrayRange(array_base,0);

for(int i=0; i<size; i++)
{
   int index  = Arr_Position[i][0];
   int ticket = m_position.SelectByIndex(index);
   datetime tl = m_position.Time();
   datetime tc = TimeCurrent();
 //Вот тут наверное нужно сравнить tl и tc 
 //и если разница превышает time_life, то это наша позиция
}

return(n>0);
}
//+------------------------------------------------------------------+
 
Sergey Voytsekhovsky:

Buenas tardes, por favor asesorar o tirarme un enlace para ver

Necesito seleccionar de las posiciones abiertas aquellas que tienen una vida útil superior a un determinado periodo.

¿Cómo puedo comparar correctamente la hora de apertura de una posición con la hora actual?

He creado esta función, pero no tengo ni idea de qué hacer a continuación (falta de experiencia), ¿cómo puedo comparar los tiempos?

En el bucle, seleccione una posición y obtenga su billete.

ulong posTicket = PositionGetTicket(i);

A continuación, obtenga la hora de apertura de la posición

PositionGetInteger(POSITION_TIME)
y comparar con el tiempo de referencia ±.
 
Alexey Viktorov:

Seleccione una posición en el bucle y obtenga un billete para ella

A continuación, obtenga la hora de apertura de la posición

Y comparar con el tiempo de referencia ±.

Sólo este procedimiento de comparación tirar para arriba por favor, con la posición del billete, la hora de apertura y la hora del servidor, creo que me di cuenta, no puedo comparar. He mirado el comentario, sólo me salen fechas.

 
Sergey Voytsekhovsky:

Este es exactamente el procedimiento de comparación por favor, con el billete de posición, la hora de apertura y la hora del servidor creo que lo resolví, no puedo comparar. He mirado el comentario, sólo me salen las fechas.

Así que compara las fechas. Pero hay que tener en cuenta la discrepancia. Es mejor comparar la diferencia entre la hora de apertura y la hora de referencia con una desviación permitida.

fabs(время_позиции - эталонное_время) < допустимого_отклонения // например 600 секунд
 
Alexey Viktorov:

Así que compara las fechas. Pero hay que tener en cuenta la discrepancia. Es mejor comparar la diferencia entre el tiempo de apertura y el tiempo de referencia con una desviación de tolerancia.

Alexey Viktorov:

Así que compara las fechas. Pero hay que tener en cuenta la discrepancia. Es mejor comparar la diferencia entre el tiempo de apertura y el tiempo de referencia con la tolerancia.

Entendido, gracias, lo probaré en cuanto esté en mi ordenador (ahora estoy en el móvil).

 

Buenas tardes.

Quiero ordenar las líneas verticales por tiempo en el gráfico. He escrito un pequeño guión. Pero el resultado no es el que quiero.

Por favor, aconséjeme lo que estoy haciendo mal.

void OnStart()
{
int      vlines            = 0;
string   vlines_name[];
string   vlines_name_sort[];
datetime tm[];

   vlines = ObjectsTotal(ChartID(),0,OBJ_VLINE);
   if(vlines < 20 * 2)
   {
      Print("вертикальных линий меньше необходимиого. (",vlines," < ",20 * 2,")");
      return;
   }
   ArrayResize(vlines_name,vlines);
   ArrayResize(vlines_name_sort,vlines);
   
   for(int i = 0; i < vlines; i++)
   {
      vlines_name[i] = ObjectName(ChartID(),i,0,OBJ_VLINE);
   }
   ArrayPrint(vlines_name);
   
   for(int i = 0, n = 0; i < 9000; i++)
   {
      ArrayFree(tm);
      CopyTime(Symbol(),Period(),i,1,tm);
      
      for(int a = 0; a < vlines - 1; a++)
      {
         datetime tml = (datetime)ObjectGetInteger(ChartID(),vlines_name[a],OBJPROP_TIME);
         if(tml == tm[0])
         {
            vlines_name_sort[n++] = vlines_name[a];
            break;
         }
      }
   }
   ArrayPrint(vlines_name_sort);
}

El resultado:

(GBPUSD,H6)     [ 0] "H6 Vertical Line 10771" "H6 Vertical Line 10884" "H6 Vertical Line 12743" "H6 Vertical Line 1371"  "H6 Vertical Line 14306"
(GBPUSD,H6)     [ 5] "H6 Vertical Line 16501" "H6 Vertical Line 17907" "H6 Vertical Line 20277" "H6 Vertical Line 23365" "H6 Vertical Line 28358"
(GBPUSD,H6)     [10] "H6 Vertical Line 28756" "H6 Vertical Line 29445" "H6 Vertical Line 30340" "H6 Vertical Line 31840" "H6 Vertical Line 32885"
(GBPUSD,H6)     [15] "H6 Vertical Line 33779" "H6 Vertical Line 34048" "H6 Vertical Line 38532" "H6 Vertical Line 38756" "H6 Vertical Line 39075"
(GBPUSD,H6)     [20] "H6 Vertical Line 39458" "H6 Vertical Line 39649" "H6 Vertical Line 40385" "H6 Vertical Line 41116" "H6 Vertical Line 4150" 
(GBPUSD,H6)     [25] "H6 Vertical Line 41900" "H6 Vertical Line 42820" "H6 Vertical Line 43071" "H6 Vertical Line 46245" "H6 Vertical Line 48196"
(GBPUSD,H6)     [30] "H6 Vertical Line 50258" "H6 Vertical Line 50374" "H6 Vertical Line 55171" "H6 Vertical Line 56003" "H6 Vertical Line 56400"
(GBPUSD,H6)     [35] "H6 Vertical Line 57565" "H6 Vertical Line 59075" "H6 Vertical Line 59881" "H6 Vertical Line 59969" "H6 Vertical Line 63122"
(GBPUSD,H6)     [40] "H6 Vertical Line 63540" "H6 Vertical Line 63904" "H6 Vertical Line 64359" "H6 Vertical Line 64420" "H6 Vertical Line 65200"
(GBPUSD,H6)     [45] "H6 Vertical Line 6695"  "H6 Vertical Line 7743"  "H6 Vertical Line 8707"  "H6 Vertical Line 9491"  "H6 Vertical Line 9662" 

(GBPUSD,H6)     [ 0] "H6 Vertical Line 46245" "H6 Vertical Line 39075" "H6 Vertical Line 40385" "H6 Vertical Line 55171" "H6 Vertical Line 31840"
(GBPUSD,H6)     [ 5] "H6 Vertical Line 63904" "H6 Vertical Line 6695"  "H6 Vertical Line 59075" "H6 Vertical Line 28358" "H6 Vertical Line 10884"
(GBPUSD,H6)     [10] "H6 Vertical Line 38532" "H6 Vertical Line 29445" "H6 Vertical Line 23365" "H6 Vertical Line 64420" "H6 Vertical Line 7743" 
(GBPUSD,H6)     [15] "H6 Vertical Line 30340" "H6 Vertical Line 39649" "H6 Vertical Line 38756" "H6 Vertical Line 34048" "H6 Vertical Line 42820"
(GBPUSD,H6)     [20] "H6 Vertical Line 64359" "H6 Vertical Line 50374" "H6 Vertical Line 14306" "H6 Vertical Line 48196" "H6 Vertical Line 57565"
(GBPUSD,H6)     [25] "H6 Vertical Line 20277" "H6 Vertical Line 41116" "H6 Vertical Line 12743" "H6 Vertical Line 50258" "H6 Vertical Line 41900"
(GBPUSD,H6)     [30] "H6 Vertical Line 17907" "H6 Vertical Line 4150"  "H6 Vertical Line 59881" "H6 Vertical Line 56400" "H6 Vertical Line 10771"
(GBPUSD,H6)     [35] "H6 Vertical Line 63540" "H6 Vertical Line 65200" "H6 Vertical Line 9491"  "H6 Vertical Line 16501" "H6 Vertical Line 63122"
(GBPUSD,H6)     [40] "H6 Vertical Line 32885" "H6 Vertical Line 1371"  "H6 Vertical Line 33779" null                     null                    
(GBPUSD,H6)     [45] null                     null                     null                     null                     null                    
 
Сергей Таболин:

Buenas tardes.

Quiero ordenar las líneas verticales por tiempo en el gráfico. He escrito un pequeño guión. Pero el resultado no es el que quiero.

Por favor, aconséjeme lo que estoy haciendo mal.

El resultado:

Lógicamente, primero hay que recoger todas las líneas en una matriz, lo haría inmediatamente de dos dimensiones, así, o estructura de matriz, en la primera dimensión añadir un tiempo de creación, en el segundo - el nombre de la línea.

En el bucle para una ejecución, llenar la matriz, fuera del bucle después de llenar la matriz se ordena por la primera dimensión, es decir, el tiempo.

El resultado se imprime en el segundo bucle.

Como resultado, tenemos 2 ciclos y la clasificación entre ellos.

Eso es todo, si he entendido bien el problema :)

Razón de la queja: