Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação
Recursos da linguagem mql5, sutilezas e técnicas de trabalho
fxsaber, 2018.02.19 08:39 AM
Na compensação, ao mesmo tempo, no mesmo símbolo, pode haver uma posição aberta e várias ordens de mercado de qualquer direção. Por exemplo, uma posição de COMPRA e uma ordem de COMPRA.
Na biblioteca MT5, as ordens MT5 e as posições MT5 são uma entidade - ordens MT4. Por esse motivo, nessa situação, é possível obter várias ordens de COMPRA/VENDA-MT4 em um símbolo em uma conta de compensação. Isso não é um erro e não pode levar a nada de ruim. Mas estou escrevendo sobre isso para o caso de alguém se surpreender com essa situação.
É verdade que não consegui encontrar uma conta de demonstração desse tipo.
Trata-se mais de um aviso teórico. Não encontrei isso na prática.
Abaixo está o código que compila sem avisos na MQL4/5
Agradecemos a @Andrey Voytenko por sugerir essa solução!
Abaixo está o código que compila sem avisos na MQL4/5
Agradecemos a @Andrey Voytenko por sugerir essa solução!
Para que serve esse hack?
Para que serve esse hack?
Os tipos longos são comentados no exemplo. Se eles forem deixados, não haverá avisos em MQL5 e NoStrict-MQL4. Mas no strict-MQL4 eles ocorrerão.
Para poder escrever bibliotecas entre plataformas sem os avisos correspondentes, essa funcionalidade foi adicionada.
Você não precisa usá-la de forma alguma. Trata-se de uma conveniência adicional para aqueles que podem enfrentar uma tarefa de plataforma cruzada desse tipo.
Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação
Robô do MT4 para o MT5
fxsaber, 2018.03.08 09:27 pm.
Estou tentando implementar uma estratégia (que obviamente funciona bem no MT4), mas me deparei com um obstáculo.
O EA inicia uma nova sequência de negociações sempre que um novo sinal é gerado, de modo que cada par negociado geralmente tem várias sequências em execução.
Cada negociação tem um SL e TP, e o EA precisa rastrear o que aconteceu (SL ou TP) com a negociação mais recente em cada sequência, verificando o histórico de ordens.
Infelizmente, isso não parece ser possível com base nas notas da biblioteca (abaixo) e em várias tentativas de fazer o sistema funcionar:
// No MT4, o OrderSelect no modo SELECT_BY_TICKET seleciona um tíquete independentemente de MODE_TRADES / MODE_HISTORY,
// já que o "número do tíquete é um ID de ordem exclusivo".
// No MT5, o número do tíquete NÃO é único,
// portanto, o OrderSelect no modo SELECT_BY_TICKET tem as seguintes prioridades de seleção para tíquetes correspondentes:
// MODE_TRADES: existing position> existing order> transaction> canceled order
// MODE_HISTORY: transaction> canceled order> existing position> existing order
Com base em experimentos, confirmei que o número do tíquete sempre muda após um evento de SL/TP e que a única informação comum é o número mágico - nem mesmo o comentário do pedido é mantido.
Nos testes, a colocação de um pedido inicial com um SL, TP, número mágico e comentário de negociação retorna o tíquete nº 2 e exibe todas as informações esperadas.
Entretanto, quando o SL ou TP é atingido, o tíquete nº 2 desaparece e não pode ser recuperado usando SELECT_BY_POS ou SELECT_BY_TICKET.
Em vez disso, (supondo que não haja outra atividade de negociação) haverá agora o bilhete nº 3, que não tem nenhum comentário de ordem definido.
Sem consistência em relação ao número do tíquete e sem comentário de ordem para referência, parece não haver uma maneira simples de identificar a última ordem em uma determinada sequência :(
Esperamos que @fxsaber possa encontrar uma solução ou sugerir uma solução alternativa :)
Infelizmente, não entendi o problema.
Desculpe-me pela resposta tardia :(
A questão é que as informações de negociação do 'MODE_HISTORY' são basicamente inutilizáveis porque:
1) quando uma negociação é fechada, o número do tíquete muda ... você pode testar isso facilmente abrindo uma negociação de compra/venda com um TP e SL - se a negociação for aberta como tíquete nº 2, essa negociação se tornará o tíquete nº 3 no histórico depois que o SL ou TP for acionado
2) o número mágico é perdido
3) o comentário do tíquete é perdido
Portanto, se o código do EA precisar verificar se uma negociação foi fechada com lucro ou prejuízo, isso será impossível porque não há informações disponíveis para identificar a negociação.
Espero que você possa ajustar as coisas para manter o número mágico e fazer com que o comentário da negociação se comporte como no MT4 - talvez você possa encontrar uma maneira de manter o número do tíquete também.
Desculpe-me pela resposta tardia :(
O problema é que as informações comerciais de 'MODE_HISTORY' são basicamente inutilizáveis porque:
1) quando uma negociação é fechada, o número do tíquete muda ... você pode testar isso facilmente abrindo uma negociação de compra/venda com um TP e SL - se a negociação for aberta como tíquete nº 2, essa negociação se tornará o tíquete nº 3 no histórico depois que o SL ou TP for acionado
2) o número mágico é perdido
3) o comentário do tíquete é perdido
Portanto, se o código do EA precisar verificar se uma negociação foi fechada com lucro ou prejuízo, isso é impossível porque não há informações disponíveis para identificar a negociação.
Espero que você possa ajustar as coisas para manter o número mágico e fazer com que o comentário da negociação se comporte como no MT4 - talvez você possa encontrar uma maneira de manter o número do tíquete também.
Exemplo
Resultado
stop loss!!!
PS Tópico de discussão russo.