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

 

Boris.45:

Yedelkin : ¿Qué devuelve Time_H1[1][0]?

No utilizo este elemento de la matriz, porque procedo inmediatamente al algoritmo de búsqueda de fractales en las últimas 5 barras. Mientras que Time_H1[1][0] es el tiempo de apertura de la barra cero donde los parámetros de esta barra no se han formado todavía.Tal vez me equivoque, pero por experiencia propia, he visto que el uso de parámetros de una barra de cero para formar series temporales conduce a su distorsión

Bien, déjame aclarar la pregunta:

Si "Time_H1[nomer_instr][i]=Time_buf[i];" y "Time_H1[1][1]=2011.01.03 11:00:00", ¿qué devuelve Time_buf[0]?

 

Por favor, envíenme un enlace para cerrar una posición determinada (específica).


Es decir, en un momento determinado, cuando se cumplen las condiciones para cerrar una posición, digamos de COMPRA, el Asesor Experto (de momento) cierra cualquier posición abierta de COMPRA. Ahora me encuentro con un problema, cuando necesito cerrar una determinada posición de compra (específica).

Por ejemplo, cuando se abre una posición de COMPRA, puede darle una designación específica, pero cuando se cierra, tiene que especificar "COMPRA" como condición.
 
Lester: Por favor, envíenme un enlace para cerrar una posición determinada (específica), es decir, en un momento determinado, cuando se cumplen las condiciones para cerrar una posición, digamos COMPRA, el asesor (de momento) cierra cualquier posición abierta de COMPRA. Ahora me encuentro con un problema, cuando necesito cerrar una determinada posición de compra (específica).

Por ejemplo, al abrir una posición de COMPRA, puede darle una designación específica, pero al cerrarla, debe especificar su "existencia".
¿Y cómo se cierra "cualquier posición abierta"? Esencialmente, cada posición abierta corresponde a un solo símbolo. Por lo tanto, al cerrar, debe utilizar el nombre de ese símbolo, en lugar de asignar un "símbolo específico" a la posición abierta.
 
He aquí un ejemplo. La primera compra en el plano, la segunda compra para cerrar la venta en el plano y la compra en la tendencia. El cierre de la compra también tiene lugar para todos los BAYs abiertos - lo que no es bueno, porque el segundo cierre sólo se refiere a la tendencia.
if(Buy_Condition_1 || Buy_Condition_2)
     { 
       if(Buy_Condition_3 && Buy_Condition_10)
        {
         // есть ли в данный момент открытая позиция на покупку?
         if(Buy_opened)
           {
            Alert("Позиция на покупку имеется");
            return;    // не добавлять к открытой позиции на покупку
           }        
         mrequest.action = TRADE_ACTION_DEAL;    // немедленное исполнение
         mrequest.symbol = _Symbol;              // символ
         mrequest.magic = EA_Magic;              // Magic Number
         mrequest.volume = Lot;                  // количество лотов для торговли
         mrequest.type = ORDER_TYPE_BUY;         // ордер на покупку
         mrequest.type_filling = ORDER_FILLING_FOK;   // тип исполнения ордера - все или ничего

         //--- отсылаем ордер
         OrderSend(mrequest,mresult);         
                 
         // анализируем код возврата торгового сервера
         if(mresult.retcode==10009 || mresult.retcode==10008) //запрос выполнен или ордер успешно помещен
           {
            Alert("Buy успешно помещен, тикет ордера #:",mresult.order,"!!");
           }
         else
           {
            Alert("Запрос на установку ордера Buy не выполнен - код ошибки:",GetLastError());
            return;
           }
         }
      }
 if(Buy_Condition_4 || Buy_Condition_5)
     { 
       if(Buy_Condition_6)
        {
         // есть ли в данный момент открытая позиция на покупку?
  if(Buy_opened)
      {
      Alert("Позиция на покупку во Флэте есть");
      return;    // не добавлять к открытой позиции на покупку
      }   
    if(PositionSelect(_Symbol)==true) // есть открытая позиция
      {
       if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
       {
        Alert("Закрываю ордер Sell флэт!!!");                  
                                  
         mrequest.action = TRADE_ACTION_DEAL;// немедленное исполнение
         mrequest.symbol = _Symbol;         // символ
         mrequest.magic = EA_Magic;        // Magic Number
         mrequest.volume = Lot;           // количество лотов для торговли
         mrequest.type = ORDER_TYPE_BUY; // ордер на продажу      
         mrequest.type_filling = ORDER_FILLING_FOK;  // тип исполнения ордера - все или ничего
        //--- отсылаем ордер
         OrderSend(mrequest,mresult);
         // анализируем код возврата торгового сервера
         if(mresult.retcode==10009 || mresult.retcode==10008) //запрос выполнен или ордер успешно помещен
           {
          Alert("тикет закрытия Sell флэт #:",mresult.order,"!!");
           }
         else
           {
          Alert("Запрос на установку ордера закрытия Sell флэт не выполнен - код ошибки:",GetLastError());
          return;
           }
         }
       }
   
         mrequest.action = TRADE_ACTION_DEAL;    // немедленное исполнение
         mrequest.symbol = _Symbol;              // символ
         mrequest.magic = EA_Magic;              // Magic Number
         mrequest.volume = Lot;                  // количество лотов для торговли
         mrequest.type = ORDER_TYPE_BUY;         // ордер на покупку
         mrequest.type_filling = ORDER_FILLING_FOK;   // тип исполнения ордера - все или ничего

         //--- отсылаем ордер
         OrderSend(mrequest,mresult);         
                 
         // анализируем код возврата торгового сервера
         if(mresult.retcode==10009 || mresult.retcode==10008) //запрос выполнен или ордер успешно помещен
           {
            Alert("Buy на тренд успешно помещен, тикет ордера #:",mresult.order,"!!");
           }
         else
           {
            Alert("Запрос на установку ордера Buy тренд не выполнен - код ошибки:",GetLastError());
            return;
           }         
         }
      }
....
...
if(Buy_Close_1 || Buy_Close_2)
     {
      if(Buy_Close_3)
        {
         if(PositionSelect(_Symbol)==true) // есть открытая позиция
           {
            if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
                {
           Alert("Закрываю ордер BUY!!!");                  
                                  
         mrequest.action = TRADE_ACTION_DEAL; // немедленное исполнение
         mrequest.symbol = _Symbol;           // символ
         mrequest.magic = EA_Magic;           // Magic Number
         mrequest.volume = Lot;               // количество лотов для торговли
         mrequest.type = ORDER_TYPE_SELL; // ордер на продажу      
         mrequest.type_filling = ORDER_FILLING_FOK; // тип исполнения ордера - все или ничего
         //--- отсылаем ордер
         OrderSend(mrequest,mresult);
         // анализируем код возврата торгового сервера
         if(mresult.retcode==10009 || mresult.retcode==10008) //запрос выполнен или ордер успешно помещен
           {            
            Alert("тикет закрытия Buy #:",mresult.order,"!!");
           }
         else
           {
            Alert("Запрос на установку ордера закрытия Buy не выполнен - код ошибки:",GetLastError());
            return;
           }
        }
      }
    }
  }

if(Buy_Close_4 || Buy_Close_5)
        {
         if(PositionSelect(_Symbol)==true) // есть открытая позиция
           {
            if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
                {
           Alert("Закрываю ордер BUY!!!");                  
                                  
         mrequest.action = TRADE_ACTION_DEAL; // немедленное исполнение
         mrequest.symbol = _Symbol;           // символ
         mrequest.magic = EA_Magic;           // Magic Number
         mrequest.volume = Lot;               // количество лотов для торговли
         mrequest.type = ORDER_TYPE_SELL; // ордер на продажу      
         mrequest.type_filling = ORDER_FILLING_FOK; // тип исполнения ордера - все или ничего
         //--- отсылаем ордер
         OrderSend(mrequest,mresult);
         // анализируем код возврата торгового сервера
         if(mresult.retcode==10009 || mresult.retcode==10008) //запрос выполнен или ордер успешно помещен
           {            
            Alert("тикет закрытия Buy #:",mresult.order,"!!");
           }
         else
           {
            Alert("Запрос на установку ордера закрытия Buy не выполнен - код ошибки:",GetLastError());
            return;
           }
        }
      }
    }
 
Lester: He aquí un ejemplo. La primera compra en el plano, la segunda compra para cerrar la venta en el plano y la compra en la tendencia. Sin embargo, esto no es bueno, porque el segundo cierre sólo está relacionado con la tendencia.
¿Así que va a cerrar diferentes "posiciones" en un símbolo?
 
Yedelkin:
¿Así que va a cerrar diferentes "posiciones" sobre el mismo símbolo?

La verdad es que no.

Si un piso de compra está abierto, no puedo cerrar una tendencia de compra. Y viceversa.

Es decir, cerrar ciertas posiciones sobre el mismo símbolo, ya sea una plana (si está abierta una plana) o una tendencia (si está abierta una tendencia).

 
Lester: No exactamente. Si un piso de compra está abierto, entonces no puedo cerrar una tendencia de compra. Y viceversa.

Es decir, cerrar determinadas posiciones sobre un mismo símbolo, ya sea plano (sujeto a la apertura plana) o tendencial (sujeto a la apertura tendencial).

Ya veo. Desgraciadamente, me he equivocado debido a inexactitudes terminológicas y no puedo ayudarle más. En MQL5 sólo puede existir una posición en cada símbolo. Las dos posiciones de tipo"buy-flat y buy-trend" no pueden existir en un símbolo a la vez. De hecho, su pregunta no se refiere a mql5-positions, sino al seguimiento de las órdenes de comercio que ha realizado. Si buscas en los foros, hace tres años había un artículo sobre las "órdenes virtuales" para MT5. Y más tarde ese tema se planteó muchas veces en el foro.
 
Yedelkin:

OK, voy a aclarar la pregunta:

Si "Time_H1[nomer_instr][i]=Time_buf[i];" y "Time_H1[1][1]=2011.01.03 11:00:00", ¿qué devuelve Time_buf[0]?

Voy a tratar de explicar la idea que estoy tratando de implementar en el EA.

Existen funciones estándar CopyTime(), CopyOpen(), CopyHigh(), etc., que utilizan las correspondientes matrices Time_buf[], Open_buf[], High_buf[], etc.

Utilizando estas funciones, podemos obtener los datos históricos para diferentes plazos y diferentes divisas. En este caso, Time_buf[0]es la hora de apertura de la barra cero,

High_buf[0] es el valor máximo del precio de la divisa especificada en la barra cero en el momento del último tick que llega.

Luego creo matrices bidimensionales para cada marco temporal para cada parámetro Tiempo, Apertura, etc. Entonces tengo las siguientes matrices para el marco temporal H1

Time_H1[i][j], Open_H1[i][j], High_H1[i][j], etc. En estas matrices cada fila está dedicada a los datos históricos de una determinada moneda. Así,

utilizando el bucle por número de moneda for( i=1; i<=nomer_instr; i++ ) sobrescribo los datos históricos Time_buf[j], High_buf[j] etc. con las filas correspondientes de las matrices

Tiempo_H1[i][j], Alto_H1[i][j], etc.

Si opera con ticks, puede utilizar los parámetros actuales de la barra cero. Naturalmente, los parámetros actuales de la barra de cero en el momento de

Tengo un Asesor Experto que utiliza barras en lugar de ticks. He visto que cuando el EA está operando en barras

los valores High_buf[0] y Low_buf[0] no son valores históricos en el momento del cierre de la barra cero, son unos valores aleatorios. Por lo tanto, si incluimos

parámetros de la barra de cero en una secuencia de historia, toda la secuencia de historia del parámetro será distorsionada. Por eso no utilizo los parámetros de la barra de cero.

Siento que sea tan largo.


 

Boris.45:

Yedelkin : Vale, déjame aclarar mi pregunta: si "Time_H1[nomer_instr][i]=Time_buf[i];" y "Time_H1[1][1]=2011.01.03 11:00:00", ¿qué devuelve Time_buf[0]?

Voy a tratar de explicar la idea que estoy tratando de implementar en mi Asesor Experto.

No preguntaba por la idea :)

Boris.45: Time_buf[0]- es el tiempo de apertura de la barra cero,

Eso es lo que pregunto, ¿qué valor devuelve el elemento del array que mencionas?

 

Por favor, aconséjeme.

Cómo cambiar el color de fondo de los pares de divisas en la visión general del mercado

O eliminar el color por completo.

Gracias de antemano.