Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 980

 
Igor Makanu:

Lo he visto, dudo que sea capaz de deshacer todo por sí mismo, por eso le sugerí que utilizara el método probado de cerrar una orden seleccionada a través de OrderSelect() con ClosePosBySelect() - puede hacerlo, al menos le he visto construir códigos por sí mismo con el constructor ))))

ZZY: Tengo otra sospecha de que cierra una orden dos veces, pero la función f de Kim imprime en el registro, no como bucles separados para cerrar en la segunda condición

:-) Sí.

Artyom Trishkin:

Está claro que las funciones de Igor lo harán todo por el usuario (y aun así, algunos usuarios también se las arreglan para equivocarse con ellas). Pero entonces él mismo no aprenderá a hacer nada. Aunque, por supuesto, es su elección.

Señores - escribiré aquí esta noche...

Parece que la vida útil de la cuenta ha expirado. No es el error habitual...

La captura de pantalla es sólo eso.

P.D. ¡Puedo y estoy capacitado para programar, en todo caso! :-) es a la cuestión de recoger el código constructor!!!!!!!!!!!!!!! :-)

PPS no levantes la bestia que hay en mí, por favor, el imbécil... :-)

SOY BUENO CON EL CÓDIGO Y NO SÓLO ESO, ¡TAMBIÉN SOY BUENO CON LAS OFERTAS!

 
Roman Shiredchenko:

:-) Sí.

Señores - Voy a publicar aquí esta noche...

Parece que la vida útil de la cuenta ha expirado allí. No es el error habitual...

La captura de pantalla es sólo eso.

P.D. ¡Puedo y estoy capacitado para programar, en todo caso! :-) es a la cuestión de recoger el código constructor!!!!!!!!!!!!!!! :-)

PPS no levantes la bestia que hay en mí, por favor, el imbécil... :-)

SOY UNA MIERDA EN CÓDIGO Y NO SÓLO ESO, ¡TAMBIÉN EN PUJA!

Muchas cartas. ¿Qué sentido tiene? No hay ninguna comprobación para obtener un precio. Y el error de cerrar posiciones a precios cero.

Eso es lo que pasa con los "capaces y entrenados".

 
Artyom Trishkin:

Tiene un cierre de precio cero allí.

En consecuencia, tengo que controlar lo que la función MarketInfo ha devuelto, pero no hay control. Sin embargo, como es habitual en el cuatro, algunas personas se utilizan para escribir - algo recibido, lo que - no han comprobado, pero envió el argumento.

. Lo he visto.

Parece que la vida de la cuenta ha expirado allí...

Cuando traté de cerrarlo manualmente, me devolvió "ERROR GENERAL" en la pantalla.

Antes - parece que la función funcionó, sólo que no tuve tiempo de comprobarlo.

La función está escrita correctamente. Sí, el deslizamiento en los diferenciales, ¿y qué?

Publicaré los totales aquí esta noche.

Recargue las operaciones en una nueva cuenta.

 
Roman Shiredchenko:

Señores - Voy a publicar aquí esta noche...

Parece que la vida de la cuenta ha expirado. Es sólo un error desacostumbrado...

¡se equivoca! ¿por qué debería adivinar cuál es el error si lo imprimió? - ¿O la pregunta iba dirigida originalmente a los telépatas... no, a los tushkas? )))


Roman Shiredchenko:

Al tratar de cerrar manualmente - volvió a la pantalla en el cuadro - "ERROR GENERAL".

Puede que el flujo de operaciones esté ocupado, puede que te lleguen recotizaciones, por eso el error general puede significar cualquier cosa - el mismo "lío" ocurrió en insta el año pasado, solía cerrar las órdenes exactamente con 5 minutos de diferencia - y el código se cerraba como debía con todas las comprobaciones e impresiones ;)

 
Artyom Trishkin:

Muchas cartas. ¿Qué sentido tiene? No hay comprobación de recibo de precios. Y no hay ningún error en el cierre de posiciones a precios cero.

Eso es lo que se puede hacer y aprender.

Sí porque ya estoy escribiendo desde una hoja de papel en vorde - gud. inmediatamente. NO TENGO ACCESO A LA TERMINAL.

Acceso a la terminal - no. Estará en la noche en Moscú - Voy a escribir aquí.

 
Igor Makanu:

¡el error! ¿por qué debería adivinar cuál es el error si lo imprimiste en letra de molde? - ¿o la pregunta fue planteada originalmente a los telépatas... no, a los tushkas? )))

¡О! Así está mejor, más sonrisas... :-)

Sí. Las impresiones no se imprimieron desde la pestaña de "Expertos"... bien. Había mucho que hacer... no tenía tiempo.

 
Igor Makanu:

¡se equivoca! ¿por qué debería adivinar cuál es el error si lo imprimió en letra de molde? - ¿o la pregunta iba dirigida originalmente a los telépatas... no, a los tushkas? )))


puede ser un flujo ocupado, requotes, por lo que tiene que adivinar - el error común podría significar cualquier cosa - en insta el año pasado el mismo "sombrero" estaba allí, las órdenes tomó 5 minutos para cerrar - y el código debe ser impreso con todos los cheques y las impresoras ;)

Bien. :-)

PD: Publicaré el resultado aquí esta noche.

 
 #property  indicator_chart_window
#property  indicator_buffers 1
#property  indicator_plots 1
#include  "Includes//Symbol.mqh"
enum price_types
  {
   Bid,
   Ask
  };
input datetime start_date = D'2019.10.07 00:00:00' ;
input int Chops = 10 ;
input price_types applied_price= 0 ; //Price
int data_filled = 0 ;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
string symbol_custom= StringFormat ( "%s_%dsec" , _Symbol ,Chops);
long chart_id = 0 ;
datetime start;
void OnInit ()
  {
//CustomSymbolDelete(symbol_custom);
   start=start_date- 60 ;
   Print ( "Ticks History Deleted : " , CustomTicksDelete (symbol_custom, 0 , LONG_MAX ));
   data_filled = 0 ;

   const SYMBOL SYMB(symbol_custom);
   SYMB.CloneProperties( _Symbol );
   SYMB.On();
   MqlTick ticks_add[];
   int len = CopyTicksRange ( _Symbol ,ticks_add, COPY_TICKS_INFO , ulong (start_date)* 1000 , ulong ( TimeCurrent ())* 1000 );
   Print ( "Ticks: " ,len);
   start = start - (len* 60 );
   Print ( "Start Date : " ,start);
   for ( int i= 0 ; i<len && ! IsStopped (); i++)
     {
       if (data_filled%Chops== 0 )
        {
         start = start+ 60 ;
         start = datetime ( TimeToString (start, TIME_DATE )+ " " + TimeToString (start, TIME_MINUTES )+ ":00" );
        }
       else
        {
         start++;
        }
      ticks_add[i].time = start;
      ticks_add[i].time_msc = long (ticks_add[i].time)* 1000 ;
      data_filled++;
     }
//Print(SYMB.CloneTicks(ticks_add));
   Print ( CustomTicksAdd (symbol_custom,ticks_add));
   chart_id = ChartOpen (symbol_custom, _Period );
   Print ( GetLastError ());
  }
void OnDeinit ( const int r)
  {
   if (chart_id != 0 )
     {
       ChartClose (chart_id);
     }
   return ;
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
   if (rates_total <= 0 )
       return 0 ;
   MqlTick ticks[ 1 ];
   CopyTicks ( _Symbol ,ticks, COPY_TICKS_INFO , ulong ( TimeCurrent ())* 1000 , 1 );
   if (data_filled%Chops== 0 )
     {
      start = start+ 60 ;
      start = datetime ( TimeToString (start, TIME_DATE )+ " " + TimeToString (start, TIME_MINUTES )+ ":00" );
     }
   else
     {
      start++;
     }
   Print (start);
   ticks[ 0 ].time = start;
   ticks[ 0 ].time_msc = long (start)* 1000 ;
   data_filled++;

   Print ( CustomTicksAdd (symbol_custom,ticks));
   Print ( GetLastError ());

   return (rates_total);
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

¿Por qué no se añaden los ticks a mi personaje personalizado?

Archivos adjuntos:
Symbol.mqh  7 kb
 
Igor Makanu:

¿Cuál es el error? Pantalla equivocada

en teoría debería funcionar, pero no he visto un cierre tan sofisticado teniendo en cuenta el spread y añadiéndolo como deslizamiento - imho, si decides cerrar, entonces el deslizamiento no es lo más importante a vigilar, los errores de cierre son más importantes, luego las recotizaciones, entonces la conexión se pierde completamente


Quita OrderClose(....) y sustitúyelo por ClosePosBySelect() de Kimhttps://www.mql5.com/ru/forum/131859/page2#comment_3359664

utilícelo, entonces verá claramente dónde se está rompiendo - ya sea en sus condiciones de cierre, o el servidor tiene algún tipo de truco

Artyom Trishkin:

Tiene un precio cero cerca de allí. Respectivamente, deberíamos comprobar lo devuelto por la función MarketInfo pero no tenemos control. Sin embargo, como es habitual en los cuatro algunas personas están acostumbradas a escribir - algo recibido, lo que - no comprobar, pero envió un argumento.

Colegas, gracias de todo corazón por la ayuda oportuna en el código, no es una broma, siempre me has ayudado antes y ayuda.

Todas las fi rmas de la última página sobre el cierre de las operaciones funcionan bien. Hubo un problema con el final del período de la cuenta demo aquí, por eso no había condiciones de cierre, incluyendo los precios cero...

He actualizado la cuenta y sigo con las pruebas.

 
jaffer wilson :

¿Por qué no se añaden los ticks a mi personaje personalizado?

@ Artyom Trishkin

Por favor, ¿puede responder a mi pregunta? No creo que a nadie le importe.