Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 217

 
Valerius:


Tente atualizar as citações. Serviço - Arquivo de cotações - selecione seu par de moedas - faça o download.

Se isso não ajudar, reinstale o metatrader.


Eu tentei reinstalar várias vezes e até abrir uma nova conta.... Não funcionou. A que poderia estar relacionado?

Obrigado.

 
sidovi:


Eu tentei reinstalar várias vezes e até abrir uma nova conta.... Não funcionou. A que poderia estar relacionado?

Obrigado.


Você apagou todos os arquivos da pasta do instalador do MetaTrader antes da instalação?

E você já tentou com o arquivo de citações?

 
a196012a:

Todos os pedidos maiores abrirão apenas com um volume de 0,3 lotes. Todas as ordens de volume menor que são abertas em resposta a um fechamento no SL no volume de 0,3 lotes serão abertas no volume de 0,1 lote. Apenas 0,1 e 0,3. Não há outros volumes.

Ao fechar um pedido de 0,3 lotes através do SL, lembre-se da hora em que o pedido foi aberto em resposta ao fechamento do qual ele foi aberto (ou seja, 0,1 pedido de lote).

Obrigado por sua ajuda.

Poderia me dizer, por favor, onde está definida a opção de enviar uma mensagem para meus e-mails quando alguém responder ao meu correio?

Mais uma vez, muito obrigado.


E você realmente o que você precisa, um algoritmo ou a própria função escrita?
 
a196012a:

Obrigado por seu feedback.

Preciso ou do algoritmo ou da função.

O principal é que o código lembre o valor da hora após fechar um pedido de 0,3 SL

Eu não sei exatamente como codificar esta ação.

Se um pedido com um volume de 0,3 fechado no SL

{
A2= valor para a hora em que a ordem de um volume menor foi aberta em resposta ao fechamento do qual foi aberto
}

===================================================================================================

Se vários pedidos com um volume de 0,1 fechados no SL em SINGLE TICK

{

abrir uma ordem separada de 0,3 volume ao preço de fechamento de TODOS os pedidos fechados

}

===================================================================================================

Se vários pedidos com um volume de 0,3 fechados em um SL em UMA TIKE

{

lembrar o valor da hora de abertura de TODOS os pedidos relevantes por volume 0,1

}

Eu escrevi um código de trabalho para abrir e fechar pedidos (ver primeiro post)

Não tenho certeza de qual código incluir para economizar 0,1 tempo de abertura do pedido.

Não sei como codificar a abertura dos pedidos e lembrar o valor da hora de abertura no caso de vários pedidos serem fechados em um único tick.

Se em conexão com a realização de minha idéia de mudar o código que escrevi - eu não me importo se você o mudar.

O OBJETIVO FINAL DO MEU PROGRAMA É MEMORIZAR O VALOR DA HORA DE ABERTURA. Todas as outras operações (incluindo as ordens de abertura) estão subordinadas a este objetivo final e são de natureza auxiliar.

Se eu soubesse como passar sem eles, não os teria incluído no código.

Mais uma vez, obrigado.


Aqui está um exemplo de um programa. Por favor, dê uma olhada. Há alguns comentários aí dentro.

extern int MagicNumber=123;

datetime time;
//=================================================================
void start()
{
int er,se;

if(prov_open_orders()) //Проверяем, есть ли открытые ордера
 {
  se=sear();//Ищем последний ордер, который закрылся по стопу. Если последний ордер закрылся по профиту
            //то просто возвращается нулевое значение
            //Если Последний ордер закрылся по по стопу, то ищем ордер с лотом 0.1 и возвращаем
           //его время открытия. В переменной time будет время открытия ордера с лотом 0.1
  if(se==1)
   {
    if(OrderType()==OP_BUY && OrderProfit()<0)
     {//Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
      er=OrderSend(Symbol(),OP_SELL,0.3,Bid ,3,Bid+400*Point,Bid-200*Point,"jfh",MagicNumber);
      time=SearTim(se);//Теперь находим время ордера с лотом 0.1
     }
   }
  if(se==2)
   {
    if(OrderType()==OP_SELL && OrderProfit()<0)
     {//Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
      er=OrderSend(Symbol(),OP_BUY,0.3,Ask ,3,Ask-400*Point,Ask+200*Point,"jfh",MagicNumber);
      time=SearTim(se);//Теперь находим время ордера с лотом 0.1
     }
   }
 }

return;
}

//========================
bool prov_open_orders()
{
for(int is=OrdersTotal()-1; is >= 0; is--)
   {
    if(OrderSelect(is, SELECT_BY_POS, MODE_TRADES))
      {
       if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
         {
          if(OrderType()==OP_BUY || OrderType()==OP_SELL)
           {
            return(false); // есть открытые ордера (любые)
           }
         }
      }
   }
return(true);
}

//=================================================================
datetime SearTim(int s)
{
for(int is=OrdersHistoryTotal(); is>=0; is--)
   {
    if(OrderSelect(is, SELECT_BY_POS, MODE_HISTORY))
      {
       if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
         {
          if(OrderType()==OP_SELL && OrderProfit()<0 && OrderLots()==0.1)
           {//Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
            return(OrderOpenTime());
           }
          if(OrderType()==OP_BUY && OrderProfit()<0 && OrderLots()==0.1)
           {//Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
            return(OrderOpenTime());
           }
         }
      }
   }
return(NULL);
}

//=================================================================
int sear()
{
for(int is=OrdersHistoryTotal(); is>=0; is--)
   {
    if(OrderSelect(is, SELECT_BY_POS, MODE_HISTORY))
      {
       if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
         {
          if(OrderProfit()>0)
           {//Если  закрылся по профиту то просто ухоим из цикла.
              return(0);
           }
          if(OrderType()==OP_SELL && OrderProfit()<0)
           {//Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
            return(2);
           }
          if(OrderType()==OP_BUY && OrderProfit()<0)
           {//Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
            return(1);
           }
         }
      }
   }
return(0);
}
 
Valerius:


Você excluiu todos os arquivos da pasta onde o Metatrader está instalado antes da instalação?

E você já tentou com o arquivo de citações?


Sim, 0 resultado :((
 
sidovi:

Sim, 0 resultado :((


Então você tem que entrar em contato com seu CD para obter apoio...

É a primeira vez que eu vejo isso.

 
Valerius:


Então, contate seu CD apenas para suporte...

Esta é a primeira vez que vejo isto.


Você acha que existe um serviço no windows 10 que afeta isso?
 
sidovi:

Você acha que existe um serviço no windows 10 que afeta isso?

Não. Não há.
 
Victor Nikolaev:

Não. Não há nenhuma.

Obrigado
 
a196012a:

Muito obrigado por sua ajuda

Estou apenas aprendendo o básico da programação com o tutorial de Kovalev e as funções descritas nele.

Encontrei algumas funções em seu código, que não vi em meus livros ou na Base de Código

Aqui estão as funções que eu não conheço

busca();

SearTim(se);

prov_open_orders()

Eu ficaria muito grato se você me dissesse onde posso ler sobre eles.

Bem nesse mesmo código.
Razão: