Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 98

 

Boris.45:

Yedelkin : O que é que o Time_H1[1][0] devolve?

Não utilizo este elemento da matriz, porque procedo imediatamente ao algoritmo de pesquisa de fractais nas últimas 5 barras. Enquanto Time_H1[1][0] é o tempo aberto da barra de zero onde os parâmetros desta barra ainda não foram formados.Talvez eu esteja enganado, mas pela minha própria experiência, vi que a utilização de parâmetros de uma barra zero para formar séries temporais leva à sua distorção

Ok, deixem-me esclarecer a questão:

Se "Time_H1[nomer_instr][i]=Time_buf[i];" e "Time_H1[1][1]=2011.01.03 11:00:00", o que é que o Time_buf[0] devolve?

 

Por favor, envie-me um link para fechar uma determinada posição (específica).


Ou seja, num determinado momento, quando as condições para encerrar uma posição estão preenchidas, digamos COMPRAR, o Conselheiro Especialista (no momento) encerra qualquer posição em aberto COMPRAR. Agora enfrento um problema, quando preciso de fechar uma certa (específica) posição de COMPRA.

Por exemplo, quando uma posição COMPRAR é aberta, pode dar-lhe uma designação específica, mas quando é fechada, tem de especificar 'COMPRAR' como condição.
 
Lester: Por favor, envie-me um link para fechar uma determinada posição (específica), ou seja, num determinado momento, quando as condições para fechar uma posição estão preenchidas, digamos COMPRAR, o conselheiro (no momento) fecha qualquer posição em aberto COMPRAR. Agora enfrento um problema, quando preciso de fechar uma certa (específica) posição de COMPRA.

Por exemplo, ao abrir uma posição de COMPRA, pode dar-lhe uma designação específica, mas ao fechá-la, precisa de especificar a sua "existência".
E como se fecha "qualquer posição aberta"? Essencialmente, cada posição aberta corresponde a um único símbolo. Assim, ao fechar, deve usar o nome desse símbolo, em vez de atribuir um "símbolo específico" à posição aberta.
 
Aqui está um exemplo. A primeira Buy in the flat, a segunda Buy in the flat para fechar a venda no flat e Buy in the trend. O fecho da Buy também tem lugar para todas as BAYs abertas - o que não é bom, porque o segundo fecho apenas se refere à tendência.
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: Aqui está um exemplo. A primeira Buy in the flat, a segunda Buy in the flat para fechar a venda no flat e Buy in the trend. No entanto, isto não é bom, porque o segundo fecho está apenas relacionado com a tendência.
Então vai fechar "posições" diferentes num só símbolo?
 
Yedelkin:
Então vai fechar "posições" diferentes sobre o mesmo símbolo?

Nem por isso.

Se um plano de compra estiver aberto, não posso fechar uma tendência de compra. E vice versa.

Ou seja, para fechar certas posições no mesmo símbolo - ou um apartamento (se um apartamento estiver aberto) ou uma tendência (se uma tendência estiver aberta).

 
Lester: Não exactamente. Se um plano de compra estiver aberto, então não posso fechar uma tendência de compra. E vice versa.

Ou seja, para fechar certas posições sobre um único símbolo - ou um plano (sujeito a abertura plano) ou uma tendência (sujeito a tendência de abertura).

Estou a ver. Infelizmente, fui enganado devido a imprecisões terminológicas e não posso ajudá-lo mais. Na MQL5 só pode existir uma posição em cada símbolo. As duas posições do tipo"buy-flat e buy-trend" não podem existir sobre um símbolo de cada vez . De facto, a sua pergunta não é sobre mql5-posições, mas sobre o seguimento das encomendas comerciais que fez. Se procurar nos fóruns, há três anos atrás houve um artigo sobre as "encomendas virtuais" para o MT5. E mais tarde, este tópico foi repetidamente levantado no fórum.
 
Yedelkin:

OK, vou esclarecer a questão:

Se "Time_H1[nomer_instr][i]=Time_buf[i];" e "Time_H1[1][1]=2011.01.03 11:00:00", o que é que o Time_buf[0] devolve?

Vou tentar explicar a ideia que estou a tentar implementar na EA.

Existem funções padrão CopyTime(), CopyOpen(), CopyHigh(), etc., utilizando as matrizes correspondentes Time_buf[], Open_buf[], High_buf[], etc.

Utilizando estas funções, podemos obter os dados históricos para diferentes períodos de tempo e diferentes moedas. Neste caso, Time_buf[0]é o tempo da abertura da barra zero,

High_buf[0] é o valor máximo do preço da moeda especificada na barra de zero no momento da última chegada do tick.

Depois crio matrizes bidimensionais para cada período de tempo para cada parâmetro Tempo, Aberto, etc. Depois tenho as seguintes matrizes para o período H1

Time_H1[i][j], Open_H1[i][j], High_H1[i][j], etc. Nestas matrizes, cada linha é dedicada aos dados históricos de uma determinada moeda. Assim,

utilizando o laço por número de moeda para( i=1; i<=nomero_instr; i++ ) Eu escrevo por cima dos dados históricos Time_buf[j], High_buf[j] etc. com as filas correspondentes das matrizes

Time_H1[i][j], High_H1[i][j] etc.

Se negociar usando carraças, pode usar os parâmetros actuais a partir da barra zero. Naturalmente, os parâmetros actuais da barra de zero no momento de

Tenho um consultor especializado que usa barras em vez de carraças. Vi isso quando a EA está a operar em bares

os valores High_buf[0] e Low_buf[0] não são valores históricos no momento do fecho da barra zero, são alguns valores aleatórios. Portanto, se incluirmos

parâmetros da barra de zero numa sequência histórica, toda a sequência histórica do parâmetro será distorcida. É por isso que não utilizo parâmetros da barra de zero.

Lamento que seja tão longo.


 

Boris.45:

Yedelkin : Ok, deixa-me esclarecer a minha pergunta: se "Time_H1[nomer_instr][i]=Time_buf[i];" e "Time_H1[1][1]=2011.01.03 11:00:00", o que é que o Time_buf[0] devolve?

Vou tentar explicar a ideia que estou a tentar implementar no meu Conselheiro Especialista.

Eu não estava a perguntar sobre a ideia :)

Boris.45: Time_buf[0]- é hora de abertura da barra de zero,

É isso que estou a perguntar, que valor devolve o elemento de matriz que menciona?

 

Aconselhe por favor!

Como mudar a cor de fundo dos pares de moedas na visão geral do mercado

Ou remover a cor por completo!

Obrigado de antemão!