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

 
ulong  HistoryDealGetTicket(
   int  index      // номер сделки
   );

O que é um número de transacção?

Como selecciono a última profissão? Índice 0?

Tenho uma conta com uma posição aberta e uma história de negócios. Quero seleccionar a última profissão:

#include <Trade\DealInfo.mqh>  

CDealInfo deal;  

   for(int n=20;n>=0;n--)
     {
      deal.SelectByIndex(n);
      Print("Тикет сделки=",deal.Ticket()," n=",n);
     }


Todos os carrapatos 0...
 
tor4en:
ulong  HistoryDealGetTicket(
   int  index      // номер сделки
   );

O que é um número de transacção?

Ver a descrição da função HistoryDealGetTicket(). Há também um exemplo de como trabalhar com uma lista de acordos.
 
Yedelkin:
Ver descrição da função HistoryDealGetTicket(). Há também um exemplo de como trabalhar com a lista de acordos.
Não está claro como trabalhar com a função SelectByIndex() da biblioteca padrão.
 
tor4en Não está claro como lidar com a função SelectByIndex() a partir da biblioteca padrão.
Tentei sugerir uma resposta à sua pergunta "O que é um número de transacção". Podemos presumir que já tratou desta questão?
 
Yedelkin:
Tentei sugerir uma resposta à sua pergunta "O que é um número de transacção? Podemos presumir que já tratou desta questão?
Pode, obrigado. Pode dizer-me se é possível seleccionar o último acordo sobre uma posição sem passar pelos acordos e comparar os tempos ou os seus bilhetes?
 
tor4en: Sabe se é possível seleccionar o último negócio de uma posição sem passar pelos negócios e comparar tempos ou carraças?

1. Infelizmente, tento não utilizar a Biblioteca Standard, pelo que não posso dar conselhos adequados sobre como trabalhar com o método SelectByIndex(). Posso apenas notar que a própria classe CDealInfo está posicionada como uma classe para trabalhar com propriedades de transacção, ou seja, as questões de obter a lista de transacções parecem ser deixadas de fora.

2. Como sabe, o método SelectByIndex() utiliza simplesmente a função HistoryDealGetTicket(). Da descrição destafunção decorre que antes de aceder ao negócio é necessário obter a lista de todos os negócios . Em particular,

//--- запросим историр ю сделок в указанном интервале
   HistorySelect(from_date,to_date);
//--- общее количество в списке сделок
   int deals=HistoryDealsTotal();
//--- теперь обработаем каждую сделку
   for(int i=0;i<deals;i++)
     {
      deal_ticket=HistoryDealGetTicket(i);
      ...
     }

Há cerca de um ano, perguntei no fórum, se é possível considerar que o último acordo da lista tem sempre um índice de HistoryDealsTotal()-1, mas não recebi resposta (ou não reparei, o que é improvável). Usando o método da prova científica, não encontrei uma refutação desta tese. Assim, logicamente, cada novo negócio, cuja informação é recebida no terminal de base, deveria simplesmente aumentar a lista de negócios em um e, respectivamente, os índices da lista de negócios seriam atribuídos a cada novo negócio em ordem ascendente. Como é na realidade - não sei.

3. Sugiro também a leitura do artigoEncomendas, Posições e Ofícios no MetaTrader 5 e (não o li eu próprio) - Como utilizar as classes de comércio da Biblioteca Standard ao escrever um Consultor Especialista.

É tudo :)

 
HistoryDealsTotal()-1
Isto parece ser uma boa ideia. Se procuramos negócios por posição específica, é melhor usar HistorySelectByPosition(position_ID). Obrigado.
Документация по MQL5: Торговые функции / HistorySelectByPosition
Документация по MQL5: Торговые функции / HistorySelectByPosition
  • www.mql5.com
Торговые функции / HistorySelectByPosition - Документация по MQL5
 
tor4en: Se estamos à procura de acordos sobre uma posição específica, é melhor usar HistorySelectByPosition().
Exactamente correcto :)
 
Olá!!!

Peritos, ajuda, por favor. Construí dois EAs para, por assim dizer, efeito sinérgico, os mais simples parecem ligar-se, mas este não se compila, embora tenha feito tudo correctamente como com o anterior. Aqui está o que ele dá

'Supervisor' - função só pode ser declarada no âmbito global 20_200_pips_MQL5_v1.mq5 360 18

'Perceptron' - função só pode ser declarada no âmbito global 20_200_pips_MQL5_v1.mq5 418 8

'basicTradingSystem' - função só pode ser declarada no âmbito global 20_200_pips_MQL5_v1.mq5 434 6

A função só pode ser declarada no âmbito global

Estou realmente confuso onde está o alcance global

 
chipo: Liguei dois EAs para algum tipo de efeito de sinergia, os mais simples parecem ligar, mas este não compila, embora eu tenha feito tudo correctamente como no anterior. Isto é o que dá

'Supervisor' - função só pode ser declarada no âmbito global 20_200_pips_MQL5_v1.mq5 360 18

'Perceptron' - função só pode ser declarada no âmbito global 20_200_pips_MQL5_v1.mq5 418 8

'basicTradingSystem' - função só pode ser declarada no âmbito global 20_200_pips_MQL5_v1.mq5 434 6

A função só pode ser declarada no âmbito global

Estou realmente confuso onde está o alcance global

Tais mensagens aparecem, por exemplo, quando uma função é declarada dentro de outra. Veja se há algo parecido com isto no código:

func_1()
   {
    void  func_2()...
   }
Razão: