OI (interés abierto) rezagado - página 6

 
Renat Akhtyamov:

Tiene una habitación privada para eso.

Y ahora está escribiendo a los medios de comunicación, por lo que estamos teniendo una discusión.

También te lo aclaro, usa sincrónico.

Yo sí uso la sincronización, qué más puedo hacer desde un submarino.

 
Dmi3:

....., pero no estoy contento con el mecanismo que utiliza prostotrader con los magos torcidos.


O no entiendes en absoluto la naturaleza de los magos "torcidos" o no quieres hacerlo.

https://www.mql5.com/ru/blogs/post/557544

Отслеживание ордера, после команды OrderSendAsync
Отслеживание ордера, после команды OrderSendAsync
  • 2016.10.29
  • www.mql5.com
Отслеживание ордера, после команды OrderSendAsync Михаил | 23 апреля, 2015 В статье рассказывается принцип отслеживания ордера после команды OrderSendAsync, если нет события TradeTransaction
 
prostotrader:

O no entiendes para nada a los magos "torcidos" o no quieres hacerlo.

https://www.mql5.com/ru/blogs/post/557544

¿Por qué? Entiendo exactamente cómo funciona. Pero no quiero perder a los magos "rectos". Sin ellos me sería difícil saber rápidamente dónde y qué hay en mi cuenta en este momento.

 
Dmi3:

¿Por qué? Entiendo exactamente cómo funciona. Pero no quiero perder las medallas "directas". Sin ellos me sería difícil saber rápidamente dónde y qué hay en mi cuenta en este momento.

El majik es grande, y tanto la parte constante (el id de la estrategia, por ejemplo) como la parte "variable" (el número de la solicitud) se pueden envolver en él.

 
Stanislav Korotky:

El majik es grande, por lo que puedes envolver en él tanto la parte constante (id de estrategia, por ejemplo) como la parte "variable" (número de consulta).

tiene un int, no un long
 
Renat Akhtyamov:
Tiene una int, no una larga

No te lo vas a creer : ) Incluso con int magic puedes operar con 1000+ EAs con 1000000+ combinaciones de estrategias en cada uno.

 
prostotrader:

Oyes un timbre y no sabes dónde está.

"Golpear" el código publicado.

......

¿Cómo se puede hablar de resultados si el código está mal escrito?

......

Muchos "escritores" de Asesores Expertos, se aferran al trabajo para MICEX, ¡sin saber siquiera muchos fundamentos de la negociación en el Mercado de Valores y Derivados!


¡Estás sacando demasiado provecho de ello! La chica lo hacía bien, sobre todo en comparación con los personajes de los temas vecinos, que intentan conseguir vendedores en el Mercado sin ni siquiera aprobar las notas de Informática con BASIC))

 
Aleksey Mavrin:

No te lo vas a creer : ) Incluso con int magic puedes operar con 1000+ EAs con 1000000+ combinaciones de estrategias en cada uno.

Y si tienes lógica en tu cerebro, estarás bien sin magos.

Por cierto, lo que decía de int para ir a largo si es muy interesante.

desde el programador, por así decirlo...
 
Aleksey Mavrin:


¡Estás haciendo una gran cosa de esto! La chica estaba bien, sobre todo comparada con los personajes de los hilos vecinos, que van al Mercado como vendedores sin pasar ni siquiera la prueba de lo básico).

¿qué le pasa?

ni siquiera entiende cuál debe ser el resultado ni qué debe hacer para ello.

incluso los experimentados no me dijeron la pregunta difícil porque no se puede hablar de ello en cada esquina

Sin embargo, sé cómo obtener el resultado correcto, porque he dedicado unos 5 años a estudiar este tema.

 
Dmi3:

¿Por qué? Entiendo exactamente cómo funciona. Pero no quiero perder las medallas "directas". Sin ellos me sería difícil saber rápidamente dónde y qué hay en mi cuenta en este momento.

Si escribes así, ¡no entiendes cómo funciona todo!

Los bits altos del Majic se forman a partir del nombre del símbolo, además, se puede asignar un ID a cada EA, y los bits bajos

crear una serie de majicles infantiles.

Por lo tanto, ¡tienes que afirmar que entiendes cómo funciona!

//+------------------------------------------------------------------+
//|                                                    AutoMagic.mqh |
//|                                 Copyright 2017-2018 prostotrader |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
//version   "1.02
ulong symb_magic;
int exp_id;
//-------------------------------------------------------------------+
// Split string function                                             |
//+------------------------------------------------------------------+
string SplitString(const string a_str,ulong &a_month,ulong &a_year)
  {
   int str_size=StringLen(a_str);
   int str_tire=StringFind(a_str, "-");
   int str_tochka=StringFind(a_str, ".", str_tire);
   if((str_tire>0) && (str_tochka>0) &&(str_size > 0))
     {
      a_month= ulong(StringToInteger(StringSubstr(a_str,str_tire+1,str_tochka-str_tire-1)));
      a_year = ulong(StringToInteger(StringSubstr(a_str,str_tochka+1,str_size-str_tochka-1)));
      if((a_month > 0) && (a_year > 0)) return(StringSubstr(a_str, 0, str_tire));
     }
   return("");
  }
//-------------------------------------------------------------------+
// Get Magic function                                                |
//+------------------------------------------------------------------+
ulong GetMagic(const string a_symbol, const int sov_id)
{
  exp_id = -1;
  symb_magic = 0;
  if(SymbolSelect(Symbol(), true) == false)
  {
    Print(__FUNCTION__, ": Нет такого символа!");
    return(0);
  }
  ulong month = 0;
  ulong year = 0;
  string new_str = SplitString(a_symbol,month,year);
  if(StringLen(new_str)>0)
  {
    uchar char_array[];
    int result=StringToCharArray(new_str, char_array, 0, WHOLE_ARRAY, CP_ACP);
    if(result>0)
   {
     ulong value;
     for(int i = 0; i < result - 1; i++)
     {
       value=ulong(char_array[i]);
       value<<=(56 -(i*8));
       symb_magic += value;
     }
     month<<=24;
     symb_magic += month;
     year<<=16;
     symb_magic += year;
     exp_id = sov_id;      //New!!!
     int s_id = exp_id;
     s_id<<=8;             //New !!!   
     symb_magic += s_id;   //New !!!
     return(symb_magic);
   }
 }
  return(0); 
}
//-------------------------------------------------------------------+
// Is my magic function                                              |
//+------------------------------------------------------------------+
bool IsMyMagic(const ulong m_magic)
{
  if(m_magic > 0)
  {
    ulong stored_magic = symb_magic;
   // stored_magic>>=16;
    stored_magic>>=8;   //New!!!
    ulong in_magic = m_magic;
   // in_magic>>=16;
    in_magic>>=8;      //New!!!
    if(in_magic == stored_magic) return(true);
  }  
  return(false);
}
//-------------------------------------------------------------------+
// Get stored magic function                                         |
//+------------------------------------------------------------------+
ulong GetStoredMagic()
{
  if(symb_magic > 0) return(symb_magic);
  return(0);  
}
//-------------------------------------------------------------------+
// Get expert ID function                                            |
//+------------------------------------------------------------------+
int GetExpertId()
{
  return(exp_id);                //New!!!
}
//+------------------------------------------------------------------+

Comprueba

//+------------------------------------------------------------------+
//|                                                   Test_magic.mq5 |
//|                                      Copyright 2021 prostotrader |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021 prostotrader"
#property link      "https://www.mql5.com"
#property version   "1.00"
#include "AutoMagic.mqh"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   ulong new_magic = GetMagic(Symbol(), 22);
   Print("Magic is: ", new_magic);
   ulong f_magic = new_magic;
   ulong a_letter = (f_magic>>56)&255;
   Print("7 byte: ", CharToString(uchar(a_letter)));   
   f_magic = new_magic;
   a_letter = (f_magic>>48)&255;
   Print("6 byte: ", CharToString(uchar(a_letter))); 
   f_magic = new_magic;
   a_letter = (f_magic>>40)&255;
   Print("5 byte: ", CharToString(uchar(a_letter))); 
   f_magic = new_magic;
   a_letter = (f_magic>>32)&255;
   Print("4 byte: ", CharToString(uchar(a_letter))); 
   f_magic = new_magic;
   a_letter = (f_magic>>24)&255;
   Print("3 byte (month): ", a_letter);
   f_magic = new_magic;
   a_letter = (f_magic>>16)&255;
   Print("2 byte (year)): ", a_letter);
   f_magic = new_magic;
   a_letter = (f_magic>>8)&255;
   Print("1 byte (expert id or series of magics): ", a_letter);
   f_magic = new_magic;
   a_letter = (f_magic&255);
   Print("0 byte (series of magics): ", a_letter);
//---
   return(INIT_SUCCEEDED);
  }

Resultado

2021.01.19 03:05:15.363 Test_magic (GOLD-3.21,M1)       Magic is: 5138409554846225920
2021.01.19 03:05:15.363 Test_magic (GOLD-3.21,M1)       7 byte: G
2021.01.19 03:05:15.363 Test_magic (GOLD-3.21,M1)       6 byte: O
2021.01.19 03:05:15.363 Test_magic (GOLD-3.21,M1)       5 byte: L
2021.01.19 03:05:15.363 Test_magic (GOLD-3.21,M1)       4 byte: D
2021.01.19 03:05:15.363 Test_magic (GOLD-3.21,M1)       3 byte (month): 3
2021.01.19 03:05:15.363 Test_magic (GOLD-3.21,M1)       2 byte (year)): 21
2021.01.19 03:05:15.363 Test_magic (GOLD-3.21,M1)       1 byte (expert id or series of magics): 22
2021.01.19 03:05:15.363 Test_magic (GOLD-3.21,M1)       0 byte (series of magics): 0

Cambia el símbolo y el identificador del EA a 122

2021.01.19 03:07:06.225 Test_magic (RTS-3.21,M1)        Magic is: 5932457868670630400
2021.01.19 03:07:06.225 Test_magic (RTS-3.21,M1)        7 byte: R
2021.01.19 03:07:06.225 Test_magic (RTS-3.21,M1)        6 byte: T
2021.01.19 03:07:06.225 Test_magic (RTS-3.21,M1)        5 byte: S
2021.01.19 03:07:06.225 Test_magic (RTS-3.21,M1)        4 byte: 
2021.01.19 03:07:06.225 Test_magic (RTS-3.21,M1)        3 byte (month): 3
2021.01.19 03:07:06.225 Test_magic (RTS-3.21,M1)        2 byte (year)): 21
2021.01.19 03:07:06.225 Test_magic (RTS-3.21,M1)        1 byte (expert id or series of magics): 122
2021.01.19 03:07:06.225 Test_magic (RTS-3.21,M1)        0 byte (series of magics): 0

Añadir al código

   for(int i = 0 ; i<256;i++)
   {
     Print("My magic: ", string(IsMyMagic(new_magic + ulong(i))));
}Print("My magic: ", string(IsMyMagic(new_magic + ulong(256))));

Resultado

2021.01.19 10:25:45.855 Test_magic (RTS-3.21,M1)        My magic: true
2021.01.19 10:25:45.855 Test_magic (RTS-3.21,M1)        My magic: true
2021.01.19 10:25:45.855 Test_magic (RTS-3.21,M1)        My magic: true
2021.01.19 10:25:45.855 Test_magic (RTS-3.21,M1)        My magic: true
2021.01.19 10:25:45.855 Test_magic (RTS-3.21,M1)        My magic: true
2021.01.19 10:25:45.855 Test_magic (RTS-3.21,M1)        My magic: true
2021.01.19 10:25:45.855 Test_magic (RTS-3.21,M1)        My magic: true
.......................................................................
2021.01.19 10:53:40.451	Test_magic (RTS-3.21,M1)	My magic: false

El nombre del símbolo + el id de EA asegurarán que el magik sea único,

y en el byte 0 una serie de majicies hijas (también únicas).

El bigge se creará automáticamente.

Dado que el inicio de sesión estándar de FORTS está limitado a 30 tr./seg., 256 magias infantiles serán suficientes para ti sin 1 byte.

Y todo este "baile de nudillos" es necesario sólo en casos extremos, cuando se pierde la conexión (el servidor de MT5 se estrelló) y no ha recibido una orden de entrada.

Документация по MQL5: Предопределенные переменные / _Symbol
Документация по MQL5: Предопределенные переменные / _Symbol
  • www.mql5.com
_Symbol - Предопределенные переменные - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5