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

 
Sergei Vladimirov:
A propósito, porque declara uma função como int se esta voltar a ser verdadeira na sua versão, e sempre? )
Fixou-o para anular, alterou o laço para inverter, desde que as ordens de outras pessoas não lhe toquem, obrigado!
 
Pode dizer-me como fazer a OnCalculate o indicador para ser chamado não a cada tique, mas apenas com uma nova barra?
 
Hexen:
Pode dizer-me como fazer com que o indicador OnCalculate seja chamado não a cada carrapato, mas apenas com uma nova barra?
Esta função será chamada a cada tick, mas pode fazer um novo controlo de barras dentro da função.
 
Victor Nikolaev:
Esta função será chamada a cada tick, mas pode fazer uma nova verificação de bar dentro da função.

Obrigado, é mais ou menos trabalhado. Comparando ocálculo prévio e o total de tarifas, é possível ver o aparecimento de novas barras. E na EA é mais complicado com a nova barra - verificação do tempo, etc.

 

Não os compare, não é uma forma muito fiável: a variável pré-calculada pode ser reiniciada sob algumas condições. Lembre-se da hora do bar actual e verifique a sua alteração na próxima chamada:

// в самом начале функции OnCalculate()
bool bNewBar = false;

static datetime dtLastBarTime = time[rates_total-1];

if(time[rates_total-1] > dtLastBarTime)
{
   bNewBar = true;
   dtLastBarTime = time[rates_total-1];
}

PS. Este é um exemplo para o MT5. Em quatro (e em cinco se for feita uma série cronológica) substituir time[rates_total-1] por time[0].

 
Olá,

Decidi criar um simples consultor especializado depois de ler o artigo "A Step-by-Step Guide to Writing
MQL5 Expert Advisor for Beginners" (https://www.mql5.com/ru/articles/100).

Testei o Expert Advisor sobre a história e perguntei-me como melhorá-la.
A primeira coisa que me veio à mente, para além da optimização
Aplicar a paragem de perda de tracção. Há um bom artigo sobre este assunto:
"Como Criar um Trailing Stop - MQL5 Artigos" ().
(https://www.mql5.com/ru/articles/134). No entanto, um
Contudo, surgiu um problema, o Conselheiro Especialista anexo ao artigo não funciona... ou seja
(my_first_ea_sartrailing.ex5) compila mas não negoceia
diz o diário de bordo:
2015.11.28 22:54:38.973 2015.02.04 17:00:00 Alerta: Pedido de configuração de ordem de venda falhou - código de erro:4756
2015.11.28 22:54:38.973 2015.02.04 17:00:00 venda imediata falhada 0.10 EURUSD a 1.14051 sl: 1.17051 tp: 1.04051 [Pedido inválido]
Ajude a resolver isto.
 
Sergei Vladimirov:

PS. Este é um exemplo para o MT5.

Obrigado!
 

Olá.

Pode por favor dizer-me qual é a forma mais rápida e correcta de eliminar todas as encomendas existentes feitas pela EA? É realmente possível criar uma matriz com números de encomenda e eliminar cada um deles? É impossível obter também uma lista de encomendas activas?

 
Антон:

Olá.

Pode por favor dizer-me qual é a forma mais rápida e correcta de eliminar todas as encomendas existentes feitas pela EA? É realmente possível criar uma matriz com números de encomenda e eliminar cada um deles? Podemos obter também uma lista de encomendas activas?

Não precisamos de uma matriz. Que terminal?

 
Sergei Vladimirov:

Não é preciso uma matriz. Que terminal?

MT5

Sim, eu deveria ter dito que isto precisa de ser implementado numa EA.

Encontrei um guião no mql4 - não é relevante para 5? Há uns dias atrás, algures, vi uma linha com uma função algo como "número de ordem cancelado por ordem estratégica", mas não consigo encontrar nada na documentação... Confuso.