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

 
C-4:

Mais uma vez (ler atentamente):

No MetaTrader4 só se pode fechar ordens sequencialmente: enviar uma ordem para fechar uma ordem, esperar pela sua execução, passar para a ordem seguinte, etc. Por esta razão, o tempo para fechar um lote de encomendas em MetaTrader4 é substancial e não pode ser reduzido por meios triviais. No entanto, pode carregar vários Conselheiros Peritos nas suas próprias cartas e fazê-los trocar informações uns com os outros e fechar ordens através de um comando comum. Cada perito fecha as encomendas apenas com o seu símbolo. Uma vez que existem vários fios comerciais no MetaTrader4, eles não se bloqueariam uns aos outros e enviariam ordens uns aos outros. No entanto, a organização de um tal grupo de peritos é complicada, e a julgar pelo vosso nível de conhecimentos, não vos aconselharia nada do género.

Se ainda pensa que escrevi demasiadas palavras, aqui está um breve resumo:

1. a resposta à sua pergunta é não, não pode executar um guião de um consultor especializado.

2. Não é possível aumentar a velocidade de execução das ordens de negociação no MetaTrader4 sem utilizar métodos complexos.

A única forma de resolver a sua questão normalmente é a função OrderSendAsync, que não existe no MetaTrader4.

Muito obrigado pela sua resposta detalhada! Se não se importa, por favor partilhe as suas ideias sobre uma tal ideia:

Adicionar 2 parâmetros ao Expert Advisor que fecha todas as encomendas com lucro total, para classificar as encomendas:
(1 parâmetro - 1 ordem de classificação por mag em ordem decrescente ou 2 - ordem ascendente e 2 - 0 ordem de venda e compra, 1 ordem de venda, 2 ordem de compra)
Abrir 4 terminais com 1 conta e 1 gráfico conjunto do mesmo par, para que os ticks coincidam e definam parâmetros diferentes como 1-1, 1-2, 2-1, 2-2
que os dividirá em 4 fluxos: mínimo mágico vender, mínimo mágico comprar, máximo mágico vender, máximo mágico comprar

Ou estarei eu a ser estúpido novamente? E sim, tem razão sobre o meu nível de conhecimento!

 
Novikov:

Muito obrigado pela resposta detalhada! Se não se importa, por favor partilhe as suas ideias sobre esta ideia:

Adicionar 2 parâmetros ao Expert Advisor que fecha todas as encomendas com lucro total, para classificar as encomendas:
(1 parâmetro - 1 ordem de classificação por mag em ordem decrescente ou 2 - ordem ascendente e 2 - 0 ordem de venda e compra, 1 ordem de venda, 2 ordem de compra)
Abrir 4 terminais com 1 conta e 1 gráfico conjunto do mesmo par, para que os ticks coincidam e definam parâmetros diferentes como 1-1, 1-2, 2-1, 2-2
que os dividirá em 4 fluxos: mínimo mágico vender, mínimo mágico comprar, máximo mágico vender, máximo mágico comprar

Ou estarei eu a ser estúpido novamente? E sim, tem razão sobre o meu nível de conhecimento!

Sim, pode ser feito dessa forma. Mas não há necessidade de gerir vários terminais. Funciona com um terminal, e tem 4 janelas. Colocar um robô em cada janela. Utilizar números como um dos parâmetros deste robô: 1-4. Por outras palavras, deve atribuir o robô com o parâmetro 1 à primeira janela, com o parâmetro 2 à segunda janela e assim por diante. Quando chegar o momento de fechar as ordens, cada um dos robôs irá comparar o número mágico da ordem seleccionada com o número mágico do parâmetro e fechá-lo. Encomendas com outros consultores especializados serão dadas a outros consultores especializados para encerrar.
 
C-4:
Sim, nós podemos fazer isto. Mas não há necessidade de gerir vários terminais. É necessário lançar um terminal, e este tem 4 janelas. Colocar um robô em cada janela. Utilizar números como um dos parâmetros deste robô: 1-4. Por outras palavras, deve atribuir o robô com o parâmetro 1 à primeira janela, com o parâmetro 2 à segunda janela e assim por diante. Quando chegar o momento de fechar as ordens, cada um dos robôs irá comparar o número mágico da ordem seleccionada com o número mágico do parâmetro e fechá-lo. Encomendas com outros consultores especializados serão dadas a outros consultores especializados para encerrar.

No fórum mt5, quando inicialmente considerei 4 janelas, como sugere, um programador respondeu: "O terminal é um só". Isto significa que existe apenas um "buraco", ou seja, existe apenas um pequeno "buraco" no terminal para acesso ao servidor, do tamanho de um pedido, que é utilizado por todos os EAs e scripts, que estão a correr no terminal. Ninguém pode aceder ao servidor até que o pedido único seja processado.

Então, o que é melhor e mais verdadeiro - 4 gráficos em 1 terminal ou 4 terminais?

 
Novikov:

No fórum mt5, quando inicialmente considerei 4 janelas, como sugere, um programador respondeu: "O terminal é um só". Isto significa que existe apenas um "buraco", ou seja, existe apenas um pequeno "buraco" no terminal para acesso ao servidor, do tamanho de um pedido, que é utilizado por todos os EAs e scripts, que estão a correr no terminal. Enquanto um pedido não for processado, mais ninguém pode aceder ao servidor.

Então, o que será melhor e mais correcto - 4 gráficos em 1 terminal ou 4 terminais?

Pense você mesmo na resposta deste "programador". Se assim fosse, seria impossível negociar com vários Conselheiros Especialistas num único terminal. Ficariam constantemente ocupados com o contexto, ou seja, bloquear-se-iam mutuamente. Anteriormente, nas versões desgrenhadas do MT4 havia de facto um tal erro e podia-se encontrá-lo, mas agora, tanto quanto sei, foi mesmo removido porque já não é relevante. A multi-tarefa de execução de encomendas em MT4 foi muito alargada e já existe há muito tempo.

Em qualquer caso, deve seguir o meu conselho e se algo correr mal, será fácil mover alguns EAs para outro terminal.

 
Novikov:

No fórum mt5, quando inicialmente considerei 4 janelas, como sugere, um programador respondeu: "O terminal é um só". Isto significa que existe apenas um "buraco", ou seja, existe apenas um pequeno "buraco" no terminal para acesso ao servidor, do tamanho de um pedido, que é utilizado por todos os EAs e scripts, que estão a correr no terminal. Ninguém pode aceder ao servidor até que o pedido único seja processado.

Então, o que é melhor e mais verdadeiro - 4 gráficos em 1 terminal ou 4 terminais?

Onde se encontram tais "programadores"?
 

Caro, mais uma pergunta: a função OrderCloseBy ajudaria a acelerar o fecho de uma grande pilha de encomendas?

Por exemplo: Quando um determinado lucro é alcançado, abrir mais 1 ordem no(s) par(s) para igualizar o tamanho do lote de ordens de compra e venda, e depois executar "fechar ordens sobrepostas".

As citações são de 5 dígitos.

 

Rapazes, podem aconselhar sobre esta questão, ela pode ser de natureza organizacional. Não lhe posso mostrar o código do indicador. Está escrito de forma competente, tudo já foi testado antes.

Começou a pergunta a partir daqui: https://www.mql5.com/ru/forum/6343/page323

Instalou o terminal a partir do website MQ - por defeito, oferecia um servidor de demonstração Alp. Acabou por executar o teste sobre o eurobucks:

O meu entendimento é que está à espera de dados da libra-dólar. Nenhum comércio está a abrir em qualquer lugar.

A seguir, quando se corre com a libra, diz:

dados pendentes por USDJPY.

 

E apenas quando se corre com USDJPY - não há dados à espera - mas ainda assim não há negócios abertos.

Eu não especifiquei explicitamente um par para abrir negócios no código, ou seja, por exemplo

Tudo para qualquer símbolo _Símbolo. E não é uma questão de abrir ordens... Qual poderia ser a razão? Obrigado.

 for(int i=0;i<10;i++)
     {
      volume=NormalizeDouble(volume,1);
      if(volume<=0) break;
      if(Type==POSITION_TYPE_SELL)
        {
         request.type=ORDER_TYPE_SELL;
         request.price=SymbolInfoDouble(_Symbol,SYMBOL_BID);
         if(TP!=0) takeprofit = request.price-TP*_Point;
         if(SL!=0) stoploss = request.price+SL*_Point;
        }
      if(Type==POSITION_TYPE_BUY)
        {
         request.type=ORDER_TYPE_BUY;
         request.price=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
         if(TP!=0) takeprofit = request.price+TP*_Point;
         if(SL!=0) stoploss = request.price-SL*_Point;
        }
      request.action = TRADE_ACTION_DEAL;
      request.symbol = _Symbol;
      request.volume = MathMin(volume,SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MAX));
      request.sl = stoploss;
      request.tp = takeprofit;
      request.deviation=SymbolInfoInteger(_Symbol,SYMBOL_SPREAD);
      request.type_filling=ORDER_FILLING_FOK;
      request.comment=" ";//DoubleToString(Money,2)+"$";
      if(!OrderCheck(request,check))
        {
         if(check.margin_level<100) volume-=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP);
 

O indicador atribui pesos a cada instrumento, o que resulta numa espécie de análise de agrupamento. Não quer trabalhar no testador. Qual poderá ser a razão? Agradeço-vos.

E os agentes trabalham bem, tudo está carregado e pronto para ir...


 
R0MAN:

O indicador atribui pesos a cada instrumento, o que resulta numa espécie de análise de agrupamento. Não quer trabalhar no testador. Qual poderá ser a razão? Agradeço-vos.

E os agentes trabalham bem, tudo está carregado e pronto para ir...


Escrever para Servicedesk. Terão de lhe dar o código, no entanto.