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

 

Como posso controlar pedidos pendentes na MQL5?


O problema é que eu preciso das seguintes funções: "Não confundir posições e ordens pendentes".


Então como posso obter informações sobre essas ordens pendentes?

 
Alexandr Sokolov:

Como posso controlar pedidos pendentes na MQL5?


O problema é que eu preciso das seguintes funções: "Não confundir posições e ordens pendentes".


Então, como devo obter informações sobre essas ordens pendentes?

Eu só preciso ler as ordens pendentes. Por exemplo, esta função é apenas para ordens de parada pendentes:

//+------------------------------------------------------------------+
//| Calculate all pending orders                                     |
//+------------------------------------------------------------------+
void CalculateAllPendingOrders(int &count_buy_stops,int &count_sell_stops)
  {
   count_buy_stops   = 0;
   count_sell_stops  = 0;

   for(int i=OrdersTotal()-1; i>=0; i--) // returns the number of current orders
      if(m_order.SelectByIndex(i))     // selects the pending order by index for further access to its properties
         if(m_order.Symbol()==m_symbol.Name() && m_order.Magic()==InpMagic)
           {
            if(m_order.OrderType()==ORDER_TYPE_BUY_STOP)
               count_buy_stops++;
            else
               if(m_order.OrderType()==ORDER_TYPE_SELL_STOP)
                  count_sell_stops++;
           }
  }
 
Vladimir Karputov:

Você só precisa ler as ordens pendentes. Por exemplo, esta função é apenas para ordens de parada pendentes:

Muito obrigado!


Eu estava olhando para o exemplo e tudo isso através da Position...

 
Alexandr Sokolov:

Muito obrigado!


É que eu olhei para o exemplo e tudo isso através da Position.

Aqui está um exemplo que compila:

//+------------------------------------------------------------------+
//|                                    CalculateAllPendingOrders.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
#property script_show_inputs
//---
#include <Trade\SymbolInfo.mqh>
#include <Trade\OrderInfo.mqh>
//---
CSymbolInfo    m_symbol;                     // object of CSymbolInfo class
COrderInfo     m_order;                      // object of COrderInfo class
//--- input parameters
input ulong    InpMagic             = 200;         // Magic number
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   if(!m_symbol.Name(Symbol())) // sets symbol name
     {
      Print(__FILE__," ",__FUNCTION__,", ERROR: CSymbolInfo.Name");
      return;
     }
//---
   int count_buy_stops=0,count_sell_stops=0;
   CalculateAllPendingOrders(count_buy_stops,count_sell_stops);
  }
//+------------------------------------------------------------------+
//| Calculate all pending orders                                     |
//+------------------------------------------------------------------+
void CalculateAllPendingOrders(int &count_buy_stops,int &count_sell_stops)
  {
   count_buy_stops   = 0;
   count_sell_stops  = 0;

   for(int i=OrdersTotal()-1; i>=0; i--) // returns the number of current orders
      if(m_order.SelectByIndex(i))     // selects the pending order by index for further access to its properties
         if(m_order.Symbol()==m_symbol.Name() && m_order.Magic()==InpMagic)
           {
            if(m_order.OrderType()==ORDER_TYPE_BUY_STOP)
               count_buy_stops++;
            else
               if(m_order.OrderType()==ORDER_TYPE_SELL_STOP)
                  count_sell_stops++;
           }
  }
//+------------------------------------------------------------------+
Arquivos anexados:
 
Alexandr Sokolov:

Como posso controlar pedidos pendentes na MQL5?


O problema é que eu preciso das seguintes funções: "Não confundir posições e ordens pendentes".


Então como posso obter informações sobre essas ordens pendentes?

A diferença é que na função mql4 OrdensTotal() retorna o número total de ordens de mercado e pendentes. E em mql5 devolve apenas o número de ordens pendentes. E para obter o número de posições, em termos de mql4 ordens de mercado, função PosiçõesTotal()

 
Alexey Viktorov:

Ainda não vi o tópico no fórum, mas depois de olhar algumas instruções, acho esta mais compreensível. Tentei, funcionou, mas ainda não vejo a necessidade de aplicá-lo. Embora eu ache que seria uma boa idéia combinar o histórico de todos os terminais em uma única pasta.

Eu li o artigo no link. É brilhante. E é uma super solução, para aqueles que têm muitos terminais. Agora pode haver uma pasta mql4 para diferentes terminais, sem a necessidade de copiar constantemente os arquivos para frente e para trás.

muito obrigado!!!!

 
Sergey Likho:

Eu li o artigo no link. É brilhante. E é uma super solução, para aqueles que têm muitos terminais. Agora pode haver uma pasta mql4 para diferentes terminais, sem a necessidade de copiar constantemente os arquivos para frente e para trás.

muito obrigado!!!!

Não sou eu quem deve agradecer. Prestei atenção aos postos de Sergei Tabolin e combinei algumas das palavras neles contidas com o desejo de Seric29, bem, eu mesmo pesquisei.

 

Olá.

Por favor, ajude-me a ordenar o código.

Eu tentei colocar a grade no mercado e eles começaram a me xingar:2016.04.01 00:02:00 1111111113241135454356146 EURUSD,H1: quantidade de lotes inválidos para afunção FreeMarginCheck

Arquivo do Expert Advisor em anexo.

Agradecemos antecipadamente.

Документация по MQL5: Константы, перечисления и структуры / Именованные константы / Предопределенные макроподстановки
Документация по MQL5: Константы, перечисления и структуры / Именованные константы / Предопределенные макроподстановки
  • www.mql5.com
//| Expert initialization function                                   | //| Expert deinitialization function                                 | //| Expert tick function                                             | //| test1                                                            |...
Arquivos anexados:
123.mq4  87 kb
 
Dmitriy Prigodich:

Olá.

Por favor, ajude-me a ordenar o código.

Eu tentei colocar a grade no mercado e eles começaram a me xingar:2016.04.01 00:02:00 1111111113241135454356146 EURUSD,H1: quantidade de lotes inválidos para a função FreeMarginCheck

arquivo anexo Expert Advisor.

Agradecemos antecipadamente.

Também diz: quantidade de lotes inválidos

A função FreeMarginCheck não verifica os argumentos do Expert Advisor e não adiciona um tamanho de lote normalizado.

PS - bem, não colocar tudo em linha no mercado, quanto mais eles mesmos não usam. Necessidade de classificação, preencha melhor o codobase

 

Eu queria fazer um vídeo, mas não tenho câmera, e tenho um telefone antigo da época do Czar Ervilha. Então eu criei um especialista e o chamei de 111.mq4

Aqui está seu código primitivo.

#property strict
#import "111б.ex4"//111б.mq4
int Funi(string Soob);
#import

int OnInit(){Funi(Symbol());return(INIT_SUCCEEDED);}
void OnDeinit(const int reason){}
void OnTick(){Funi(Symbol());}


e então criei uma biblioteca e batizei-a de 111b.mq4 com o código primitivo

#property library
#property strict
 string  st_mas[]; //export
 int Funi(string Soob)export
 {st_mas[(ArrayResize(st_mas,ArrayRange(st_mas,0)+1))-1]=Soob;
 Print("Размер массива = ",ArrayRange(st_mas,0));
 for(int i=0;i<ArrayRange(st_mas,0);++i)
 Print("Вывод массива ",st_mas[i]);
 return 2;}

. Eu declarei um conjunto de caracteres dentro da biblioteca, mas acabou sendo mais tarde, os desenvolvedores não ofereceram a possibilidade de exportar e importar matrizes e variáveis. Acontece que não há como obter uma matriz global que lembre as informações. Mas não importa, eu tomei outro caminho. Eu criei a funçãoFuni(). Em seguida, criei ligações rígidas através de terminais H chave que são definidos desta forma

Os arquivos originais estão no Forex4you, e os links no Forex4you1 eu joguei o robô original e o link para o gráfico, os primeiros cálculos foram obtidos, mas quando os ticks foram apenas o original do Forex4you atualizou as informações e o arrayst_mas aumentou de tamanho, mas quando os ticks foram para o Forex4you1 nada acontece apenas quando o arquivo chega manualmente ao gráfico. Então tomei outro caminho. Eu fiz um Expert Advisor chamado 333.mq4 e o instalei no MT4 Forex4you1 e conectei a biblioteca 111b.mq4 a ele e joguei o programa em um gráfico. O robô 333.mq4 foi capaz de se conectar ao link da biblioteca e esta coisa começou a funcionar on-line, mas como se revelou mais tarde, a biblioteca era um protótipo e a matriz declarada nela funciona dentro de um único gráfico

O exemplo mostra que mesmo que o robô esteja conectado a uma biblioteca com uma matriz global, essa matriz funciona como uma imagem e ainda não pode fornecer comunicação, precisamos criar variáveis compartilhadas que estarão disponíveis de todos os lados. Quem sabe se é possível exportar arrays e variáveis. Penso que a segunda opção é escrever as informações em um arquivo, porque o arquivo não será um proxy e será lido de ambos os lados e assim os terminais e robôs serão capazes de se comunicar um com o outro. Quem sabe como trabalhar com arquivos verifica esta teoria, pois ainda não tenho essa experiência.

Vocês sabem se podem exportar arrays e variáveis?

Razão: