[ARCHIVO]Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No puedo ir a ningún sitio sin ti - 5. - página 378

 
Dimka-novitsek:
Quería mostrar los datos en la prueba de visualización durante las pruebas. Comienzo una prueba de un Asesor Experto. Arrastro otro EA en el mismo gráfico que se está probando. ¡No veo ningún comentario! El Asesor Experto está sonriendo...


No funcionará así. Un EA arrastrado en un gráfico de prueba visual no mostrará nada en absoluto o mostrará lo que está en la cuenta, no en el probador (no lo sé exactamente, de alguna manera me faltó creatividad para crear tal cosa:)

 

No veo ningún comentario en el gráfico.

int start()
  { Comment("OrdersProfit  ",OrderProfit(),"AccountBalance  ",AccountBalance(),"Equity  ",AccountEquity());
//----
  double Itogo_Profit=Orderasthitaem();
  if (Itogo_Profit>ProfitSeriyniy){Pozuminusudalaem();}
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
Integer:

Vadim, ¿has probado a aplicarlo? No sincroniza nada. He estado jugando con él recientemente. Tienes que construir la cola tú mismo. Por desgracia, lo único que hace es reducir el código en tres líneas. O tal vez no lo entiendo.
No lo he probado. Lo intentaré ahora. Ahora lo hago todo en DLL. Allí es más fácil.
 
¡¡¡Gracias, Integer!!!
 

VVel en init()
{
//----
Comment("OrdersProfit ",OrderProfit(), "AccountBalance ",AccountBalance(), "Equity ",AccountEquity());
//----
return(0);
}

No hay nada en el probador. Bueno...

 

Dimka-novitsek:


VVel en init()
{
//----
Comment("OrdersProfit ",OrderProfit(), "AccountBalance ",AccountBalance(), "Equity ",AccountEquity());
//----
return(0);
}

No hay nada en el probador. Bueno...


Tal vez, el Asesor Experto en el que se ha pegado, tiene la función de salida de comentarios? Compruebe cuántas veces se llama a la función Comment() en este EA.

Para dar salida a OrderProfit(), la orden debe ser seleccionada primero.

Además... ¿qué sentido tiene hacerlo en el init? Debería hacerse en start().

 
Integer:


¿Tal vez el EA, en el que se inserta esto, también tiene una función de salida de comentarios? Compruebe con qué frecuencia se llama a la función Comment() en el EA.

Para dar salida a OrderProfit(), primero hay que seleccionar la orden.

Además... ¿qué sentido tiene hacerlo en el init? Debería hacerse en start().



Inite, quería ver si mis cosas escriben algo, pero no hay garrapatas. Y he duplicado esta línea en el init. ¡Y la he liado con OrderProfit()!

Aquí tenemos todo un rompecabezas. ¿Puedes creerlo? 4063 se espera que sea un parámetro entero.

aquí -

OrderClose(  Orderasthitaem[i,0,1], Orderasthitaem[i,0,2], Bid, 5, 0) ; Error=GetLastError(); 

Matriz de tipo doblete. El billete es exactamente un entero y el billete, pero resulta ser un doble. ¿Cómo desde la función doblete se obtiene un número entero?

Disculpe, no lo entiendo en absoluto.

 
Integer:

Vadim, ¿has intentado aplicarlo? No se sincroniza de ninguna manera. He estado jugando con él recientemente. Tiene que organizar la cola usted mismo. Por desgracia, sólo permite acortar el código en tres líneas. O tal vez no lo entiendo.

La cola se organiza como en cualquier otra lengua. Por sí mismo a través de la organización de la entrada y salida del bloque a proteger.

Esto es un guión:

#property show_inputs

extern int Pause = 1000;

int    hwndChart = NULL; // Уникальный идентификатор скрипта.
string sName = "Condition";

void init()
 {
  hwndChart = WindowHandle(Symbol(), 0);
  // Создаём глобальную переменную синхронизации скриптов.
  if (!GlobalVariableCheck(sName)) GlobalVariableSet(sName, 0);
 }
 
void deinit()
 {
  GlobalVariableDel(sName);
 }

void start()
 {
  while (!IsStopped())
   {// Начало блока синхронизации.
    GlobalVariableSetOnCondition(sName, hwndChart, 0);
    if (GlobalVariableGet(sName) == hwndChart)
     {
      Print("Start");
      Sleep(Pause); // Имитация работы.
      Print("End");
     }
    GlobalVariableSetOnCondition(sName, 0, hwndChart);
    // Завершение блока синхронизации.
    Sleep(200);
   }
 }
En cuanto al corte, como la sustitución con otras funciones, no funcionará. Para eso está el acceso atómico. Sólo una función puede hacer esto en MQL4.
Entero:
Es decir, el uso de esta función permite asegurar que sólo un EA trabaja a la vez, pero la cola no se construye, un EA puede permanecer inactivo, y otro puede ser llamado dos veces.

Parece que funciona bien. Cargado 6 scripts con pausas de 3000, 2000, 1000, 500, 300, 200. Aquí está parte del registro:

19:58:36 Check_GlobalVariableSetOnCondition() GBPJPY,M1: GBPJPY Start
19:58:37 Check_GlobalVariableSetOnCondition() GBPJPY,M1: GBPJPY Fin
19:58:37 Check_GlobalVariableSetOnCondition() EURUSD,M1: EURUSD Start
19:58:39 Check_GlobalVariableSetOnCondition() EURUSD,M1: EURUSD Fin
19:58:39 Check_GlobalVariableSetOnCondition() USDCAD,M1: USDCAD Start
19:58:39 Check_GlobalVariableSetOnCondition() USDCAD,M1: USDCAD Fin
19:58:39 Check_GlobalVariableSetOnCondition() AUDUSD,M1: AUDUSD Start
19:58:43 Check_GlobalVariableSetOnCondition() AUDUSD,M1: AUDUSD Fin
19:58:43 Check_GlobalVariableSetOnCondition() GBPUSD,M1: GBPUSD Start
19:58:43 Check_GlobalVariableSetOnCondition() GBPUSD,M1: GBPUSD Fin
19:58:43 Check_GlobalVariableSetOnCondition() EURUSD,M1: EURUSD Start
19:58:45 Check_GlobalVariableSetOnCondition() EURUSD,M1: EURUSD Fin
19:58:45 Check_GlobalVariableSetOnCondition() GBPUSD,M1: GBPUSD Start
19:58:46 Check_GlobalVariableSetOnCondition() GBPUSD,M1: GBPUSD Fin
19:58:46 Check_GlobalVariableSetOnCondition() NZDUSD,M1: NZDUSD Start
19:58:46 Check_GlobalVariableSetOnCondition() NZDUSD,M1: NZDUSD Fin
19:58:46 Check_GlobalVariableSetOnCondition() USDCAD,M1: USDCAD Start
19:58:46 Check_GlobalVariableSetOnCondition() USDCAD,M1: USDCAD Fin
19:58:46 Check_GlobalVariableSetOnCondition() NZDUSD,M1: NZDUSD Start
19:58:47 Check_GlobalVariableSetOnCondition() NZDUSD,M1: NZDUSD Fin
19:58:47 Check_GlobalVariableSetOnCondition() GBPJPY,M1: GBPJPY Start
19:58:48 Check_GlobalVariableSetOnCondition() GBPJPY,M1: GBPJPY Fin
19:58:48 Check_GlobalVariableSetOnCondition() EURUSD,M1: EURUSD Start
19:58:50 Check_GlobalVariableSetOnCondition() EURUSD,M1: EURUSD Fin
19:58:50 Check_GlobalVariableSetOnCondition() USDCAD,M1: USDCAD Start
19:58:50 Check_GlobalVariableSetOnCondition() USDCAD,M1: USDCAD Fin
19:58:50 Check_GlobalVariableSetOnCondition() AUDUSD,M1: AUDUSD Start
19:58:54 Check_GlobalVariableSetOnCondition() AUDUSD,M1: AUDUSD Fin
19:58:54 Check_GlobalVariableSetOnCondition() NZDUSD,M1: NZDUSD Start
19:58:54 Check_GlobalVariableSetOnCondition() NZDUSD,M1: NZDUSD Fin
19:58:54 Check_GlobalVariableSetOnCondition() EURUSD,M1: EURUSD Start
19:58:56 Check_GlobalVariableSetOnCondition() EURUSD,M1: EURUSD Fin
19:58:56 Check_GlobalVariableSetOnCondition() USDCAD,M1: USDCAD Start
19:58:57 Check_GlobalVariableSetOnCondition() USDCAD,M1: USDCAD Fin
19:58:57 Check_GlobalVariableSetOnCondition() AUDUSD,M1: AUDUSD Start
19:59:00 Check_GlobalVariableSetOnCondition() AUDUSD,M1: AUDUSD Fin
19:59:00 Check_GlobalVariableSetOnCondition() GBPUSD,M1: GBPUSD Start
19:59:00 Check_GlobalVariableSetOnCondition() GBPUSD,M1: GBPUSD Fin
19:59:00 Check_GlobalVariableSetOnCondition() USDCAD,M1: USDCAD Start
19:59:01 Check_GlobalVariableSetOnCondition() USDCAD,M1: USDCAD Fin

 
Funciona, en el sentido de que se ejecuta una función en un momento dado, pero no se respeta el orden.
 
Dimka-novitsek:


...¿Cómo se obtiene un número entero a partir de una función de doblete?

int Int(double v){

return(v);

}
Razón de la queja: