Perguntas sobre a MQL4 - página 7

Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- VPS Forex grátis por 24 horas
- 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
Eu fiz uma DLL em Delphi, eu a chamo de MT4. Tudo funciona, exceto parâmetros simples passados por referência. Em Delphi, declarado como segue:
procedure Test2(var i: integer); stdcall;
begin
if addr(i) = nil then ShowMessage('What the hell?');
end;
stop to call it as
#import "DLL1.dll"
void Test2(int& i);
Chamo
int init() {
int x = 5;
Test2(x);
return(x);
}
quando chamado, uma referência ao inteiro da variável deve estar na pilha, mas nulo está lá
então como passar um parâmetro int por referência?
Ao passar uma string como referência, o valor da array é passado pela referência
usando
MetaEditor 4.00 build 183
MetaTrader 4.00 build 186
mais uma pergunta: se eu passar uma string como referência, qual é o tamanho do buffer de string?
mais uma pergunta:
Se eu passar uma string como resultado de uma função, onde a área de memória para a string deve ser alocada? Devo passar um ponteiro para uma variável global na DLL? Neste caso, posso ter certeza de que a DLL não será chamada de diferentes fios simultaneamente em nenhum modo de metatrader?
Obrigado de antemão
no início do dia defina duas ordens pendentes
Uma vez acionada uma (qualquer) - a segunda é removida
Cinco minutos antes do fechamento da barra (digamos, diariamente) para fechar a barra acionada (se não foi fechada por SL ou TP)
Se nenhuma ordem pendente for acionada, cinco minutos antes de fechar a barra exclua ambas
Muito obrigado
2) Se eu passar a corda como resultado de uma função, onde a área de memória da corda deve ser alocada? Devo passar um ponteiro para uma variável global na DLL? Neste caso, posso ter certeza de que a DLL não será chamada de diferentes fios simultaneamente em nenhum modo do metatrader?
Obrigado de antemão
Quando um (qualquer) for acionado - o segundo é apagado
Cinco minutos antes do fechamento da barra (digamos um dia) para fechar o acionado (se não foi fechado por SL ou TP)
Se nenhum pedido pendente for acionado, cinco minutos antes de fechar a barra, apague ambos
Obrigado antecipadamente
Você estabelece ordens pendentes no momento certo (isso é fácil). E você começa a verificar os pedidos. Assim que uma ordem de Compra ou Venda aparece, você trabalha através da remoção da ordem pendente (ainda mais fácil). E então, na hora certa, trabalhar para fechar todas as encomendas (isto é fácil).
в начале дня устанавливаем два отложенных ордера
После того как один(любой) сработал - второй удаляется
За пять минут до закрытия бара(допустим дневного) закрыть сработавший (если он не был закрыт по SL или TP)
Если ни один отложенный ордер не соработал то за пять минут до закрытия бара удаляем их обоих
Заранее спасибо
É assim que você o implementa, você coloca ordens pendentes no momento certo (é fácil). E então você começa a verificar as ordens. Assim que uma ordem de compra ou venda aparece, você trabalha através da remoção da ordem pendente (isto é ainda mais fácil). E então, na hora certa, trabalhar para fechar todas as encomendas (é muito fácil).
Eu pedi um código de trabalho (talvez alguém o tenha implementado).
Tudo o que eu fiz foi não trabalhar... O processo de odrerdelete é de alguma forma confuso.
Outra pergunta: às vezes o preço congela (sem ticks) por alguns minutos, ou seja, não podemos fechar um pedido, pois o corpo int start() não é executado, embora os ticks sejam recebidos para outros símbolos, é possível passar o valor Curetime a partir de qualquer símbolo com ticks?
Em termos simples, o valor Curetime praticamente não congela
E o que faz este fragmento de código?
Elimina ambas as ordens pendentes que ainda não foram acionadas