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

 
ifitstrue:

Pregunta sobre

¿Cuál sería el índice de la barra M1 inicial si dibujara una línea de tendencia en el H1 pasado?

Y por la hora de inicio y fin de la línea no está claro cómo encontrarla.

Lo siento, si no me estoy explicando claramente.

Es difícil para mí.

Además de los índices también hay tiempo...

 
//---
   for(int j=0;j<OrdersTotal();j++)
     {
      if(OrderSelect(j,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderMagicNumber()!=MAGICZZ || OrderSymbol()!=Symbol()) continue;
   //--- check order type 
      if(OrderType()==OP_BUY)
        {
         //if(OrderProfit()>0.0)
           //{//Print("OrderProfitB()=",OrderProfit());
         if(iClose(NULL,PERIOD_CURRENT,1)-iOpen(NULL,PERIOD_CURRENT,1)>0.0)
           {if(iOpen(NULL,PERIOD_CURRENT,0)-iClose(NULL,PERIOD_CURRENT,0)>0.0)
              {Print("iCloseB()=",iClose(NULL,PERIOD_CURRENT,0));
               if(!OrderClose(OrderTicket(),OrderLots(),Bid,3,White))
                  Print("OrderClose error ",GetLastError());
              }  
           }
        }
      if(OrderType()==OP_SELL)
        {
         //if(OrderProfit()>0.0)
           //{//Print("OrderProfitS()=",OrderProfit());
         if(iOpen(NULL,PERIOD_CURRENT,1)-iClose(NULL,PERIOD_CURRENT,1)>0.0)
           {if(iClose(NULL,PERIOD_CURRENT,0)-iOpen(NULL,PERIOD_CURRENT,0)>0.0)
              {Print("iCloseS()=",iClose(NULL,PERIOD_CURRENT,0));
               if(!OrderClose(OrderTicket(),OrderLots(),Ask,3,White))
                  Print("OrderClose error ",GetLastError());
              }
           }
¡Hola! 2021.03.01_19:49 GMT+3. Quería mejorar los resultados de mi sistema de comercio. Pero iOpen() y iClose() no parecen funcionar. En el probador de estrategias, comprobé el Asesor Experto, entre 175 operaciones, sólo 81 de ellas parecen estar cerradas por las condiciones descritas en el código anterior. Este código no funciona. ¿Qué podemos hacer para que funcione? ¿Qué tal si le preguntas a los programadores de MetaQuotes? Ahora miraré los registros del probador de estrategias y publicaré lo poco que funcionan estas funciones. Lo encontré. 20210228.log. Tiempo 13:53:02.192, abierto #155, iCloseB()=1.3434. Se adjunta el archivo de registro. Ahora espero que alguien pueda decirme qué hacer con estas funciones iClose() e iOpen() para que funcionen. Porque el sistema de comercio no es lo suficientemente eficiente. Eso es todo por ahora. 2021.03.01_20:12 GMT+3.
Archivos adjuntos:
20210228.log  277 kb
 
Sucede en mt5 que en un determinado marco de tiempo es el momento de que aparezca una nueva barra (y las cotizaciones parecen estar llegando), pero todavía no está. ¿Qué es? ¿Precios específicos?
 
ifitstrue:

Pregunta sobre

¿Cuál sería el índice de la barra M1 inicial si dibujara una línea de tendencia en el H1 pasado?

Y por la hora de inicio y fin de la línea no está claro cómo encontrarla.

Lo siento, si no me estoy explicando claramente.

Es difícil para mí.

H1 tiene una hora de apertura de la barra - es iTime()

Para entender el índice de una barra con este tiempo en M1 existe iBarShift()

Queda por conocer la barra mínima y máxima en M1 utilizando iHighest() y iLowest()

 
¡Hola de nuevo! 2021.03.01_20:24 GMT+3. Escribí en este hilo del foro en la página 1304 que mi probador de la versión 4 es lento. Y Vitaly Muzichenko me malinterpretó. Estoy escribiendo la hora en que terminé de escribir el comentario. Y no estoy apurando a nadie. Aunque no había respuestas a mi pregunta, encontré la respuesta por accidente. ¿Qué hago ahora con el probador de estrategias? Antes de probar el Asesor Experto, marco la casilla "optimizar". Lo optimizo. Aunque, por el momento, no necesito la optimización. Lo optimizo en aproximadamente un segundo. Luego desactivo la casilla "optimizar". Compruebo cómo funciona el Asesor Experto. A continuación, el comprobador de estrategias funciona rápidamente. No son cuarenta minutos ni una hora. Me sentí obligado a escribir esto. Quizá le sirva a alguien. Estoy escribiendo mi Expert Advisor en la cuarta versión del terminal porque mi broker tiene cuentas en rublo en la versión 4 del terminal y no en la versión 5. No quiero meterme con el dólar estadounidense: tiene un enorme techo de deuda nacional y mi agente de bolsa traduce mis dólares a mis rublos a un tipo de cambio que no es el del mercado. eso es todo por ahora. 20:39 GMT+3.
 
Николай Никитюк:
¡Hola! 2021.03.01_19:49 GMT+3. Quería mejorar los resultados de mi sistema de comercio. Pero parece que las funciones iOpen() y iClose() no funcionan. En el probador de estrategias, comprobé el Asesor Experto, entre 175 operaciones, sólo 81 de ellas parecen estar cerradas por las condiciones descritas en el código anterior. Este código no funciona. ¿Qué podemos hacer para que funcione? ¿Qué tal si le preguntas a los programadores de MetaQuotes? Ahora buscaré en los registros del probador de estrategias y publicaré lo poco que funcionan estas funciones. Lo encontré. 20210228.log. Tiempo 13:53:02.192, abierto #155, iCloseB()=1.3434. Se adjunta el archivo de registro. Ahora espero que alguien pueda decirme qué hacer con estas funciones iClose() e iOpen() para que funcionen. Porque el sistema de comercio no es lo suficientemente eficiente. Eso es todo por ahora. 2021.03.01_20:12 GMT+3.

El código parece estar bien, pero me confunde el deslizamiento... muy pequeño, pon más deslizamiento y comprueba

 
Alexey Viktorov:
¡Cielos! ¿Quería algo? ¿He pedido algo? ¿Quién crees que soy?
Mi error, lo siento. Persona equivocada, lugar equivocado. )
 
Николай Никитюк:
¡Hola! 2021.03.01_19:49 GMT+3. Quería mejorar los resultados de mi sistema de comercio. Pero parece que las funciones iOpen() y iClose() no funcionan. En el probador de estrategias, he probado el Asesor Experto, entre 175 operaciones, sólo 81 de ellas parecen estar cerradas por las condiciones descritas en el código anterior. Este código no funciona. ¿Qué podemos hacer para que funcione? ¿Qué tal si le preguntas a los programadores de MetaQuotes? Ahora buscaré en los registros del probador de estrategias y publicaré lo poco que funcionan estas funciones. Lo encontré. 20210228.log. Tiempo 13:53:02.192, abierto #155, iCloseB()=1.3434. Se adjunta el archivo de registro. Ahora espero que alguien pueda decirme qué hacer con estas funciones iClose() e iOpen() para que funcionen. Porque el sistema de comercio no es lo suficientemente eficiente. Eso es todo por ahora. 2021.03.01_20:12 GMT+3.

Intenta reescribirlo así, porque es lo mismo.

         if(Close[1]-Open[1]>0.0)
           {
            if(Close[0]-Open[0]>0.0)

O, así es como lo escribo yo.

         if(Close[1]>Open[1])
           {
            if(Close[0]>Open[0])
              {
 
klub2003:

Hola a todos!

Este es el problema:
El precio cruza la MA hacia abajo o hacia arriba.
Necesito memorizarlo para usarlo después en el cálculo del número de puntos pasados.

Así es como yo lo entiendo:

double FixPrice; // variable

bool Fix=false; // marcador

si ( Fix==false) {

if ( Close[0] > MA_lo ) FixPrice = Close[0];
} // medir hasta que el precio cruce la MA

if ( Close[0] < MA_lo ) Fix=true;

if ( Fix==true) FixPrice_L = FixPrice ;

Y aquí está el siguiente problema: ¡el precio no se memoriza!

Leagradecería mucho su ayuda.
//+------------------------------------------------------------------+
//|                                                         Test.mq4 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//---

double     FixPrice;        // переменная ТАК БУДЕТ ЗАПОМИНАТЬСЯ. ГЛОБАЛЬНАЯ ПЕРЕМЕННАЯ
bool       Fix = false;      // маркер
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(Fix == false)
     {
      if(Close[0] > MA_lo)
         FixPrice = Close[0];
     }                                                                              // делаем замер пока цена не пересечет МА
   if(Close[0] < MA_lo)
      Fix = true;
   if(Fix == true)
      FixPrice_L = FixPrice ;
//+------------------------------------------------------------------+
  }
//+------------------------------------------------------------------+

Así es como quieres que se memorice.

Pero ten en cuenta que en la apertura de una vela.

Close[0]=Open[0] 
и Close[0]=High [0] и Close[0]=Low[0]



Por lo tanto, si necesita datos inmediatos y en tiempo real, es mejor que utilice

double Bidd=NormalizeDouble(Bid,Digits); если цена сверху или
double Askk=NormalizeDouble(Askk,Digits); если цена снизу МА

double MA_lo=NormalizeDouble(MA_lo,Digits);

Es mejor normalizar todos los precios, que serán comparados en la condición, para que no te sorprendas :)

 
MakarFX:

Чтобы перевернуть ФИБО поменяй местами  р1 и р2

С алертом я не помогу(

MakarFX
:

Para invertir FIBO, intercambia p1 y p2

No puedo ayudar con las alertas(

Hola, gracias, tengo dos soluciones diferentes, la tuya es la más fácil....