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

 
grezky #:
El indicador se ejecutará en una ventana separada, ¿cómo va a saber para comprobar el valor de la variable terminal no después de 3600 segundos, pero después de unos segundos, de acuerdo con el trabajo del probador?

Pregunta poco clara.

 
Artyom Trishkin #:

No es una pregunta clara.

Lo describí hace 1-2 páginas.
En el probador en el modo de visualización se ejecutará el simulador de trading Expert Advisor (ya hecho) sobre la acción del precio en M5, operando manualmente.
Para el análisis también necesitamos el gráfico H1 - se abrirá en una ventana separada, y para no poder mirar hacia el futuro a la derecha de la barra actual de M5 del probador en la ventana con H1 el indicador dibujará un rectángulo negro. El tiempo de apertura de la última (es decir, cero en el probador) barra de M5 se transmitirá al indicador a través de la variable terminal (las barras estarán ocultas por un rectángulo a la derecha de este tiempo).

Si envío un nuevo valor del tiempo de apertura de la barra H1 desde el probador una vez por hora, en realidad tardará 1-2-3 segundos en el probador, pero el indicador comprobará el valor de la variable terminal cada 3600 segundos.
Creo que - probablemente haré una comprobación en el indicador no después de 3600 segundos, sino después de 2-3 segundos.

PS Metatrader está desconectado de Internet, los ticks no llegan al indicador.

- - -

He escrito un indicador para probar, pero me da un error (he utilizado init, deinit, start, y no he encontrado OnCalculate(), etc.), ¿cuál es el error?
.

OnCalculate function declared with wrong type or/and parameters CHECK___TESTER_TermVariable.mq4 33      5
OnCalculate function not found in custom indicator              1       1
1 errors, 1 warnings            2       2


#property indicator_chart_window

datetime   MTF_Time_0            = 0;




void OnInit() {
//   EventSetTimer(3600);   // 3600 секунд = 60 минут
   EventSetTimer(3);        // 3 секунды - периодичность запуска функции OnTimer()
   return;
}



void OnDeinit(const int reason) {
   EventKillTimer();
}




void OnTimer() {
   if(GlobalVariableGet("_AA__MTF_Time_0")>MTF_Time_0 ) {
      MTF_Time_0                 = GlobalVariableGet("_AA__MTF_Time_0");
      GlobalVariableSet("_AA__MTF_Time_0", 0);
   } // if(GlobalVariableGet("_AA___Time_Control_Check")>=Time[0] ) {
} // void OnTimer() {




int OnCalculate(int Time_tmp) {
   if(MTF_Time_0>0) {
      ObjectDelete(       "VLINE_Name_1");
      FUNCTION_DRAW_VLINE("VLINE_Name_1", clrPink, 1, MTF_Time_0, true, TimeToStr(MTF_Time_0, TIME_DATE|TIME_MINUTES), 0);
   }
   Time_tmp                      = MTF_Time_0;

   return(Time_tmp);
} // void OnCalculate() {


 
grezky #:
Lo describí hace 1-2 páginas.
En el probador en el modo de visualización se ejecutará el simulador de trading Expert Advisor (ya hecho) sobre la acción del precio en M5, operando manualmente.
Para el análisis también necesitamos el gráfico H1 - se abrirá en una ventana separada, y para no poder mirar hacia el futuro a la derecha de la barra actual de M5 del probador en la ventana con H1 el indicador dibujará un rectángulo negro. El tiempo de apertura de la última (es decir, cero en el probador) barra de M5 se transmitirá al indicador a través de la variable terminal (las barras estarán ocultas por un rectángulo a la derecha de este tiempo).

Si envío un nuevo valor del tiempo de apertura de la barra H1 desde el probador una vez por hora, en realidad tardará 1-2-3 segundos en el probador, pero el indicador comprobará el valor de la variable terminal cada 3600 segundos.
Creo que - probablemente haré una comprobación en el indicador no después de 3600 segundos, sino después de 2-3 segundos.

PS Metatrader está desconectado de Internet, los ticks no llegan al indicador.

- - -

He escrito un indicador para probar, pero me da un error (he utilizado init, deinit, start, y no he encontrado OnCalculate(), etc.), ¿cuál es el error?
.





De nuevo, no entiendo por qué todo esto de los cuadraditos negros y las diferentes gráficas es tan complicado, pero lo repetiré: el tiempo en el tester es emulado. Una hora de tester no es igual a una hora de tiempo real. Es igual a una hora de tiempo de tester emulado.

Que impide que el Asesor Experto cubra (por alguna razón) el gráfico con una cortina negra al abrir una nueva barra horaria no está claro....

 
Artyom Trishkin #:
Que impide que el EA para cubrir (por alguna razón) el gráfico con una cortina de negro al abrir una nueva barra horaria no es clear....

M5 gráfico está abierto en el probador, pero necesito H1 (al menos) para analizar la situación del mercado.
(las operaciones se abren en M5 en el probador, pero de forma manual, el análisis en H1 también se hace "manualmente").
H1 se abrirá en otra ventana, no en el probador, el indicador que cierra el lado derecho se ejecutará allí.
El indicador obtendrá el tiempo del tester, pero el=indicador lo comprobará por el tiempo real, es decir, a través de la hora real, no a través de la del tester.

Por favor, compruebe dónde está el error en el código dado en el mensaje anterior.
Tal vez esté satisfecho con la comprobación después de 3 segundos y entonces el problema estará resuelto.
Código PS para MT4.

 
grezky #:

El gráfico M5 está abierto en el tester, pero necesito H1 (al menos) para analizar la situación del mercado.
(las operaciones se abren en M5 en el tester, pero manualmente, el análisis en H1 también se hace 'manualmente').
H1 se abrirá en otra ventana, no en el tester, allí se ejecutará un indicador que cierra la parte derecha.
El indicador obtendrá el tiempo del tester, pero el=indicador comprobará por el tiempo real, es decir, a través de la hora real, no a través de la del tester.

Por favor, compruebe dónde está el error en el código dado en el mensaje anterior.
Tal vez me conformaré con comprobar después de 3 segundos y entonces el problema estará resuelto.
PS Código para MT4.

Para preguntas sobre MT4, por favor escriba al hilo apropiado. Aquí - preguntas sobre MQL5 y MetaTrader 5 terminal.

 
Artyom Trishkin #:

Una vez más no está claro cuál es el propósito de todo esto con cuadrados negros y diferentes gráficos, pero una vez más repito: el tiempo en el probador es emulado. Una hora de tiempo en el probador no es igual a una hora de tiempo real. Es igual a una hora de tiempo emulado en el probador.

Que impide que el Asesor Experto cubra (por alguna razón) el gráfico con una cortina negra al abrir una nueva barra horaria no está claro....

La emulación horaria no suele estar clara para todo el mundo.)))))

Siempre es mejor ser más detallado, sólo significa que el probador pasará por todos los eventos de una hora en un segundo o más rápido.)))))

 

Buenas tardes.

¿Pueden decirme cómo hacer para volver a ejecutar los parámetros de optimización recibidos, pero para un período de tiempo diferente?

Optimizado para la última mitad de un año en un par de divisas parámetros, registrados en Excel. Tomé el período para el último año, y quiero ejecutar los parámetros. ¿Cómo puedo ponerlos de nuevo en el probador u optimizador.
Compruebe lo que va a pasar, lo que no va a pasar, anótelo en Excel. Tal vez entonces también puedo correr por ejemplo para los últimos 2 años.

 
Maksim Burov #:

Buenas tardes.

Podrían indicarme cómo realizar una nueva ejecución de los parámetros de optimización obtenidos, pero para un periodo de tiempo diferente.

Optimizado para el último medio año en los parámetros de un par de divisas, registrado en Excel. Tomé el período para el último año, y quiero ejecutar los parámetros. ¿Cómo puedo ponerlos de nuevo en el probador u optimizador.
Compruebe lo que va a pasar, lo que no va a pasar, anótelo en Excel. A continuación, ejecute, por ejemplo, para los últimos 2 años.

Seleccione el período en el que desea ejecutar sus datos. Y luego en la pestaña de los parámetros obtenidos, haga clic con el botón derecho del ratón en los parámetros deseados y seleccione prueba única.
 
Roman Kutemov #:
Seleccione el periodo sobre el que desea analizar los datos. Y luego en la pestaña de los parámetros obtenidos, haga clic con el botón derecho del ratón sobre el deseado y seleccione prueba única.

Gracias.
¿Y cómo hacer todo en el ámbito, y no hurgar en cada parámetro?

 

¿Podría ayudarme con los cálculos?


Necesito tener un take profit 3 veces el stop. Parece que funciona, pero algo está mal)). El robot opera con oro e índices, pero se niega a operar con divisas (aunque calcula todo correctamente).

Primero fijo el stop en el mínimo de la vela 1:

//---Устанавливаем стоп
   double stoploss = iLow(_Symbol,PERIOD_CURRENT,1);
      Print("Цена стопа ", stoploss);

Luego calculo la distancia del ASK al stop en puntos, y asigno este valor a los puntos del pert:

//---Опредеяем размер стопа в пунктах
   double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
   double low = iLow(_Symbol, 0, 1);
   double points = NormalizeDouble((ask - low) / _Point, _Digits);
      Print("Размер стопа ", points);

Después calculo el stop también en pips:

//---Считаем тейкпрофит
   double TP = NormalizeDouble(points * 3, _Digits);
   Print("Размер тейка ", TP);


Luego abro una operación y añado TR al ASK :

//---Открываем сделку на покупку
         if(Close > maHandle && Close > Open)
            {
               if(trade.Buy(Lot,_Symbol,SYMBOL_ASK,stoploss, ask + TP,"Это я, твой робот") == true)
                  {
                     Print("Открыта покупка");
                  }


Y en el tester todos los cálculos son correctos, en puntos de 5 dígitos, el stop también está en Low1, el tamaño del stop también es correcto en puntos de 5 dígitos. Pero hay algo mal con el take profit, no es 507 pips, sino 5070 pips.