Perguntas de Iniciantes MQL4 MT4 MetaTrader 4 - página 236

 
s4sha45:

Olá a todos! Comecei agora a aprender como escrever um simples robô comercial a partir dos exemplos dos vídeos do YouTube. Eu quero escrever um script para abrir a primeiraordem de compra, e ele deve abrir se eu não tiver outras ordens abertas, o script escreveu isso, mas a ordem não abre, por favor avise onde está o erro!

<

nulo OnTick()

{

se(OP_SELL==0 && OP_BUY==0)

int ticket=OrderSend(Symbol(),OP_BUY,Lot1,Ask,Slippage,StopLoss,TakeProfit, "My order",MagicNumber,0,clrGreen);

Você escreveu (literalmente em russo):

Se 1 for igual a 0 e 0 for igual a 0, então abra uma posição.

 
Artyom Trishkin:

Você escreveu (literalmente em russo):

Se 1 for igual a 0 e 0 for igual a 0, então abra uma posição.

No vídeo o autor escreveu esta linha como se (b==0&& s==0) e funcionasse. e antes disso ele não inseriu nenhuma variável b e s. talvez a versão seja antiga. se isto estiver errado, então como deveria ser a linha que determina que eu não tenho ordens agora?
 
bool FindOrder(int eType, int eMagic, string eSymbol)
   {
   for(int i=OrdersTotal()-1; i>=0; i--)
      {
      if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
      if(OrderCloseTime()>0) continue;
      if(OrderSymbol()!=eSymbol) continue;
      if(OrderMagicNumber()!=eMagic) continue;
      if(OrderType()!=eType) continue;
      return(true);
      }
   return(false);
   }
bool b=FindOrder(OP_BUY,Magic,Symbol());
if(b)
   {
   
   }
 
s4sha45:

Olá a todos! Comecei agora a aprender como escrever um simples robô comercial a partir dos exemplos dos vídeos do YouTube. Eu quero escrever um script para abrir a primeiraordem de compra, e ele deve abrir se eu não tiver outras ordens abertas, o script escreveu isto, mas a ordem não abre, por favor avise onde está o erro!

<

void OnTick()

  {

  if (OrdersTotal()==0)   int ticket=OrderSend(Symbol(),OP_BUY,Lot1,Ask,Slippage,StopLoss,TakeProfit,"My order",MagicNumber,0,clrGreen);

  }

Se você precisar abrir um pedido quando não houver pedidos de compra, venda, parada ou limite.

OrdersTotal()
As ordens fechadas não são levadas em conta.
 
Александр:

Se você precisar abrir um pedido quando não houver pedidos de compra, venda, parada ou limite.

As ordens fechadas não são levadas em conta.
Obrigado!
 

Boa noite, tenho uma pergunta: preciso comparar os preços de mercado em cada tick com os preços de um determinado arquivo csv (7 colunas), e os pedidos são agrupados em séries e o número de pedidos em cada série pode ser arbitrário. Quero entender o que seria mais rápido: gastar tempo na inicialização para criar uma matriz com todos os dados em cada pedido, e depois iterar sobre a matriz em um tick, ou abrir o arquivo e copiar tudo para o cursor a cada vez. Qual será o tempo aproximado para acessar o arquivo e a matriz, quanto tempo vou ganhar. Obrigado!

 
Karomos:

Boa noite, tenho uma pergunta: preciso comparar os preços de mercado em cada tick com os preços de um determinado arquivo csv (7 colunas), e os pedidos são agrupados em séries e o número de pedidos em cada série pode ser arbitrário. Quero entender o que seria mais rápido: gastar tempo na inicialização para criar uma matriz com todos os dados em cada pedido, e depois iterar sobre a matriz em um tick, ou abrir o arquivo e copiar tudo para o cursor a cada vez. Qual será o tempo aproximado para acessar o arquivo e a matriz, quanto tempo vou ganhar. Obrigado!

O que você escreveu não é muito claro, mas o acesso à memória é definitivamente mais rápido do que a leitura de um arquivo.

 

Olá. Você pode me dizer se é possível chamar PROGRAMAMaticamente a janela de parâmetros da EA ?

O problema é que os parâmetros só podem ser inicializados com constantes e eu quero primeiro calculá-los usando um certo algoritmo.

Eu tenho níveis BUY_STOP e SELL_STOP nos meus parâmetros EA. Na verdade, o Expert Advisor pode calcular estes níveis por si só na maioria dos casos, eu só preciso verificar sua correção.

Portanto, quero que minha EA calcule esses níveis na inicialização e os coloque nos parâmetros e exiba a janela de parâmetros. Se estiverem corretas, pressiono OK e a EA continua seu funcionamento normal. Se meu consultor especializado identificou incorretamente os níveis, eu os corrijo para os valores corretos. Se for impossível exibir programticamente a janela de parâmetros, então informe se podemos de alguma forma inicializar os parâmetros (eu escrevi uma função para seu cálculo) ANTES de exibir a janela de parâmetros da EA.

 

Caros especialistas!

Você pode me dizer como encontrar um mandado?

A situação é a seguinte:

- minha EA está abrindo 2 pedidos ao mesmo tempo. SL é o mesmo, TP não está definido.

- E então, sob certas circunstâncias, minha EA fechará a primeira ordem e eu terei que corrigir o SL na segunda.

A questão é como encontrar a segunda encomenda?

O problema é que pode haver vários pares abertos. Mas o tempo de abertura é diferente para cada par.


A meu ver, pode haver muitas variantes. Como tornar mais fácil e mais correto?

Eu não quero escrever o bilhete nos comentários porque o corretor pode apagá-lo.

Na verdade, o segundo pedido pode ser dado a outro magik. Mas isto não resolve o problema.

Podemos pesquisar por tempo ou por preço de abertura. Mas onde está a garantia de que a segunda encomenda será aberta pelo mesmo preço?

O que você aconselha?

 

O indicador do MT5 desenha uma linha em duas cores.

Os valores da linha estão no mesmo buffer.

Existe alguma maneira de identificar a cor da linha ao solicitar valores do indicador?