![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Se você mostrar um pedaço de código que gera a entrada, você poderá encontrar o erro lógico mais rapidamente
Mas deveria haver uma solução comumente aceita na MQL, certo? Como "sincronizar" a abertura das barras para diferentes símbolos? Bem, aparentemente, deveríamos esperar pela abertura de uma nova barra para todos os símbolos que são usados. Mas como fazer isso corretamente?
Não há necessidade de sincronicidades e outras invenções de bicicletas. Tudo já foi inventado há muito tempo. A presença de uma nova barra formada é verificada apenas para aquele instrumento, no qual o Expert Advisor é instalado na chegada do primeiro tick. E o evento start() também aciona somente nesse símbolo na chegada de um novo tick. Eu lhe dei um código que realiza esta verificação para que a próxima posição, em caso de solicitações, não seja aberta no próximo bar e depois de uma falha ela tente abrir no mesmo bar. Tudo isso funciona bem para mim tanto no modo de moeda única quanto no modo de múltiplas moedas. O acordo em caso de solicitações é aberto no mesmo bar, mas somente com algum atraso, e portanto nem sempre ao preço aberto do bar, mas com alguma compensação. Isto é, haverá diferenças com o testador, mas não nos bares, mas no preço de abertura.
Yuri, o início de uma nova hora vai acontecer mesmo que o tique não tenha chegado!
Vamos começar uma nova hora, mesmo que o tique não tenha chegado!
é possível calcular uma nova barra com um tique em uma nova barra de QUALQUER instrumento
LeoV está esperando por um novo tick sincronizado para todos os pares utilizados
YuraZ escreveu (a):
francamente e não é exatamente bonito ... Se o carrapato não veio para estes pares e você vai sentir falta deles novamente
Se o carrapato não veio, você não pode fazer um pedido de imediato a menos que utilize um roteiro,
E somente se os carrapatos chegarem às empresas de corretagem e não os transmitirem ao seu terminal (durante o dia).
É por isso que, quando eu estava implementando um Expert Advisor Multimoedas, eu estava fazendo uma máquina estatal por Miles (ou Moore),
que monitorou os estados abertos de ordem para os pares necessários. É claro que nem sempre foi possível
Naturalmente, nem sempre foi possível abrir ao preço certo, mas esta abordagem garantiu que as ordens seriam EXATAMENTE abertas.
fácil ! é possível fazer um pedido :-) se o carrapato não veio
pense bem! se você não o fizer, eu lhe darei uma dica!
Normalmente com EAs de múltiplas moedas a situação é tal que se não há 100% de garantia de chegada do pedido
então a lógica do trabalho do assessor será destruída.
A propósito, não esqueça que sua EA está trabalhando nos carrapatos do par em que está pairando,
portanto, mesmo que houvesse um tique em outro par, e não houvesse um tique no par com seu EA anexado,
então a sincronização será quebrada.
Não se esqueça de coisas desagradáveis como perda de conexão com empresas de corretagem e solicitações (se você estiver lidando com uma conta real).
A propósito, nos micro-reais, tenho freqüentemente situações em que um pedido nunca é passado até que o terminal seja recarregado.
Mesmo no modo manual. Eles estão esperando por algo, esperando...
É por isso que há muito desisti dos sistemas baseados em pedidos de pares.
É muito incômodo.
YuraZ escreveu (a):
francamente e não é exatamente bonito ... Se o carrapato não veio para estes pares e você vai sentir falta deles novamente
Se o carrapato não veio, você não pode fazer um pedido de imediato a menos que utilize um roteiro,
E somente se os carrapatos chegarem às empresas de corretagem e não os transmitirem ao seu terminal (durante o dia).
É por isso que, quando eu estava implementando um Expert Advisor com várias moedas, eu estava fazendo uma máquina estatal por Miles (ou Moore),
que monitorou os estados abertos de ordem para os pares necessários. É claro que nem sempre foi possível
Naturalmente, nem sempre fui capaz de abrir pelo preço necessário, mas esta abordagem garantiu que as ordens SEMPRE seriam abertas.
fácil ! é possível fazer um pedido :-) se o carrapato não veio
pense bem! se você não o fizer, eu lhe darei uma dica!
Normalmente com EAs de múltiplas moedas a situação é tal que se não há 100% de garantia de chegada do pedido
então a lógica do trabalho do assessor será destruída.
A propósito, não esqueça que sua EA está trabalhando nos carrapatos do par em que está pairando,
portanto, mesmo que houvesse um tique em outro par, e não houvesse um tique no par com seu EA anexado,
então a sincronização será quebrada.
Não se esqueça de coisas desagradáveis como perda de conexão com empresas de corretagem e solicitações (se você estiver lidando com uma conta real).
A propósito, nos micro-reais, tenho freqüentemente situações em que um pedido nunca é passado até que o terminal seja recarregado.
Mesmo no modo manual. Eles estão esperando por algo, esperando...
É por isso que há muito desisti dos sistemas baseados em pedidos de pares.
Dolorosamente incômodo.
Você provavelmente pretendia escrever TIC... mas você acabou de escrever a ordem.
Você entende que um EA pode entrar no EURUSD e usar USDCHF.
Basta escrever
LevelOpenBUY = MarketInfo("USDCHF",MODE_ASK);
... = OrderSend ("USDCHF",Lot, LevelOpenBUY, ...
Pedaço de código que funciona
OpenLevel = MarketInfo( sSymbol, MODE_BID );
se ( TDARELOCK == 0 )
ticket=OrderSend( sSymbol,OP_SELL,Lots,OpenLevel,3,0,0,0,sComment,mMagic,0,Red);
----
E o TIC por USDCHF pode não ser suficiente para obter um tique para qualquer par.
Espero que a MQL5 não precise receber carrapatos para que o programa funcione
eles prometeram fazer eventos, o que significa que qualquer peça de código pode ser acionada por um evento
----
a segunda questão relativa aos congelamentos no terminal - este problema pode ser resolvido reiniciando - isto é mais provável para os desenvolvedores.
Eu também já vi isso
isto também pode ser corrigido e há um exemplo aqui no fórum
---
portanto, se você enviar um pedido mas ele não abrir, você pode enviar este pedaço de código para trabalhar
YuraZ писал (а):
Você provavelmente pretendia escrever TIC... Você deve ter querido dizer TIC, mas você escreveu ordem.
Eu estava me referindo a colocar um pedido a 100%.
YuraZ escreveu (a):
Você provavelmente pretendia escrever TIC... Você deve ter querido dizer TIC
Eu estava me referindo a fazer um pedido 100%.
Mas você entende que isso não é apenas em um sistema de múltiplas moedas
Você não recebe uma garantia de 100% em um Expert Advisor comum. nunca uma garantia de 100%
porque existem fatores
INTERNET
O SEU FORNECEDOR
SEU FORNECEDOR DE DC
seu hardware
Equipamento DC
etc.
---
é para isso que servem as paradas... e leva, ou um computador de reserva com um fornecedor diferente (se o problema estiver do seu lado)
---
mas se for um erro na lógica do programa!!! então é outro assunto e é tratado
---
e a lógica não deve desmoronar porque a entrada não foi às 15:00, mas às 15:05 ou 15:02
isto é exatamente o que vemos com o autor do fio! ele está tentando entrar às 15:00:00:00:00
( os números são arbitrários)
ele não está fazendo as gratificações então entrar às 15:00 ou 15:01 - 15:07 não deve ser um problema muito grande para ele
É isso que estou dizendo: você não pode estar estritamente vinculado ao início de uma barra para todos os símbolos necessários - é o suficiente para obter o início de uma barra em qualquer um deles
YuraZ escreveu (a):
francamente e não é exatamente bonito ... Se o carrapato não veio para estes pares e você vai sentir falta deles novamente
Se o carrapato não veio, você não pode fazer um pedido imediatamente, a menos que você use um roteiro,
E somente se os carrapatos chegarem às empresas de corretagem e não os transmitirem ao seu terminal (durante o dia).
É por isso que, quando eu estava implementando um Expert Advisor Multimoedas, eu estava fazendo uma máquina estatal por Miles (ou Moore),
que monitorou os estados abertos de ordem para os pares necessários. É claro que nem sempre foi possível
Naturalmente, nem sempre fui capaz de abrir pelo preço necessário, mas esta abordagem garantiu que as ordens SEMPRE seriam abertas.
fácil ! é possível fazer um pedido :-) se o carrapato não veio
pense bem! se você não o fizer, eu lhe darei uma dica!
Normalmente com EAs de múltiplas moedas a situação é tal que se não há 100% de garantia de chegada do pedido
então a lógica do trabalho do assessor será destruída.
A propósito, não esqueça que sua EA está trabalhando nos carrapatos do par em que está pairando,
portanto, mesmo que houvesse um tique em outro par, e não houvesse um tique no par com seu EA anexado,
então a sincronização será quebrada.
Não se esqueça de coisas desagradáveis como perda de conexão com empresas de corretagem e solicitações (se você estiver lidando com uma conta real).
A propósito, nos micro-reais, tenho freqüentemente situações em que um pedido nunca é passado até que o terminal seja recarregado.
Mesmo no modo manual. Eles estão esperando por algo, esperando...
É por isso que há muito desisti dos sistemas baseados em pedidos de pares.
É muito incômodo.
Você provavelmente pretendia escrever TIC... mas você acabou de escrever a ordem.
Se seu consultor especializado está no EURUSD, você entende que ele pode entrar por USDCHF.
é suficiente para escrever
LevelOpenBUY = MarketInfo("USDCHF",MODE_ASK);
... = OrderSend ("USDCHF",Lot, LevelOpenBUY, ...
Pedaço de código que funciona
OpenLevel = MarketInfo( sSymbol, MODE_BID ); if ( TDARELOCK == 0 ) ticket=OrderSend ( sSymbol,OP_SELLL,Lots,OpenLevel,3,0,0,0,0,0,sComment,mMagic,0,Red);
----
o TIC por USDCHF pode não ser suficiente para obter um tique para qualquer par
Espero que na MQL5 você não precise receber carrapatos para que o programa funcione
eles prometem fazer eventos, o que significa que qualquer pedaço de código pode ser escrito em um evento
----
a segunda questão relativa aos congelamentos no terminal - este problema pode ser resolvido reiniciando - é mais provável que seja endereçada aos desenvolvedores.
Eu também já vi isso -
isto também é tratado e há um exemplo aqui no fórum
---
então se você enviar um pedido mas ele não abrir você pode, é claro, enviar uma peça de código similar para trabalhar
A reinicialização do terminal é ótima, mas o que você deve fazer com outros Conselheiros Especialistas neste momento que estão pendurados em outras janelas?
e sua lógica operacional é naturalmente diferente e não reage bem à recarga freqüente, pois os valores das variáveis se perdem,
que temos vindo a acumular há tanto tempo.
Mesmo que o Expert Advisor seja baseado em EURUSD, você percebe que ele pode entrar por USDCHF
É o suficiente para escrever
LevelOpenBUY = MarketInfo("USDCHF",MODE_ASK);
... = OrderSend ("USDCHF",Lot, LevelOpenBUY, ...
Mas se no par principal o último tique da hora anterior chegou, por exemplo, às 7,50, e o primeiro tique da hora chegou,
às 8.10, e no símbolo secundário o primeiro tique da hora veio às 8.00,
então é difícil esperar que a EA pairando sobre o par de moedas principais faça uma encomenda sobre o par menor
às 8.00, na melhor das hipóteses às 8.10.
O caso quando a EA opera como um roteiro, ou seja, não dá uma pausa ao sistema, ela apenas flocos e flocos,
Eu não considero isso apesar dos carrapatos. É melhor escrever um roteiro.
YuraZ escreveu (a):
francamente e não é exatamente bonito ... Se o carrapato não veio para estes pares e você vai sentir falta deles novamente
Se o carrapato não veio, você não pode fazer um pedido de imediato a menos que utilize um roteiro,
E somente se os carrapatos chegarem às empresas de corretagem e não os transmitirem ao seu terminal (durante o dia).
É por isso que, quando eu estava implementando um Expert Advisor Multimoedas, eu estava fazendo uma máquina estatal por Miles (ou Moore),
que monitorou os estados abertos de ordem para os pares necessários. É claro que nem sempre foi possível
Naturalmente, nem sempre fui capaz de abrir pelo preço necessário, mas esta abordagem garantiu que as ordens SEMPRE seriam abertas.
fácil ! é possível fazer um pedido :-) se o carrapato não veio
pense bem! se você não o fizer, eu lhe darei uma dica!
Normalmente com EAs de múltiplas moedas a situação é tal que se não há 100% de garantia de chegada do pedido
então a lógica do trabalho do assessor será destruída.
A propósito, não esqueça que sua EA está trabalhando nos carrapatos do par em que está pairando,
portanto, mesmo que houvesse um tique em outro par, e não houvesse um tique no par com seu EA anexado,
então a sincronização será quebrada.
Não se esqueça de coisas desagradáveis como perda de conexão com empresas de corretagem e solicitações (se você estiver lidando com uma conta real).
A propósito, nos micro-reais, tenho freqüentemente situações em que um pedido nunca é passado até que o terminal seja recarregado.
Mesmo no modo manual. Eles estão esperando por algo, esperando...
É por isso que há muito desisti dos sistemas baseados em pedidos de pares.
É muito incômodo.
Você provavelmente pretendia escrever TIC... mas você acabou de escrever a ordem.
Se seu consultor especializado está no EURUSD, você entende que ele pode entrar por USDCHF.
é suficiente para escrever
LevelOpenBUY = MarketInfo("USDCHF",MODE_ASK);
... = OrderSend ("USDCHF",Lot, LevelOpenBUY, ...
Pedaço de código que funciona
OpenLevel = MarketInfo( sSymbol, MODE_BID ); if ( TDARELOCK == 0 ) ticket=OrderSend ( sSymbol,OP_SELLL,Lots,OpenLevel,3,0,0,0,0,0,sComment,mMagic,0,Red);
----
o TIC por USDCHF pode não ser suficiente para obter um tique para qualquer par
Espero que na MQL5 você não precise receber carrapatos para que o programa funcione
eles prometem fazer eventos, o que significa que qualquer pedaço de código pode ser escrito em um evento
----
a segunda questão relativa aos congelamentos no terminal - este problema pode ser resolvido reiniciando - é mais provável que isto seja endereçado aos desenvolvedores.
Eu também já vi isso -
isto também é tratado e há um exemplo aqui no fórum
---
então se você enviar um pedido mas ele não abrir você pode, é claro, enviar uma peça de código similar para trabalhar
A reinicialização do terminal é ótima, mas o que você deve fazer com outros Conselheiros Especialistas neste momento que estão pendurados em outras janelas?
e sua lógica operacional é naturalmente diferente e não reage bem à recarga freqüente, pois os valores das variáveis se perdem,
que temos vindo a acumular há tanto tempo.
Mesmo que o Expert Advisor seja baseado em EURUSD, você percebe que ele pode entrar por USDCHF
É o suficiente para escrever
LevelOpenBUY = MarketInfo("USDCHF",MODE_ASK);
... = OrderSend ("USDCHF",Lot, LevelOpenBUY, ...
Mas se no par principal o último tique da hora anterior chegou, por exemplo, às 7,50, e o primeiro tique da hora chegou,
às 8.10, e no símbolo secundário o primeiro tique da hora veio às 8.00,
então é difícil esperar que o assessor do par de moedas principais faça um pedido ao par de moedas menores
às 8.00, na melhor das hipóteses às 8.10.
O caso quando a EA opera como um roteiro, ou seja, não dá uma pausa ao sistema, ele apenas flocos e flocos,
Eu não considero isso apesar dos carrapatos. Seria melhor escrever um roteiro.
1 e você acha que o Reconnect chama a função Init () ? e reinicia a EA ?
Você está errado...
Além disso, é sábio salvar variáveis calculadas e valiosas
se eu não tenho código complexo eu os armazeno em GLOBAL VARIABLE
se o código é complexo eu o escrevo em disco e o leio no reinício - se o reinício foi por engano eu apenas o restauro
a propósito, é fácil determinar se foi ou não por engano
---
2 Se houver uma nova hora para algum par de moedas - não há carrapato para outros pares - então não importa quando há um carrapato
Uma NOVA BAR - ou mais precisamente uma nova hora pode ser considerada como tendo chegado.
e, portanto, é possível contar os pares tardios FECHAR pensando que eles também estão cobertos
os carrapatos lá virão mais tarde e o bar será deslocado no tempo!!! mas a verdadeira Hora já passou
---
não há problema em fazer um pedido a um par de moedas sem um tick - você sabe como
não estou dizendo que será exibido às 8:00 - ( figura convencional )
pode ser criado assim que um NOVO TICK chega a uma nova barra em qualquer par de moedas
---
>o se o último tique da hora anterior no par principal veio, por exemplo, às 7,50, e o primeiro tique da hora veio ,
>às 8.10, e em um par secundário, o primeiro tique da hora chegou às 8.00,
>É difícil esperar que uma EA pairando sobre o par principal de moedas coloque uma ordem sobre um par secundário
> às 8.00, ou na melhor das hipóteses às 8.10.
trabalhando no modo de múltiplas moedas, você não precisa contar o tempo do par principal ou não o principal
você só precisa pegar um sinal do início de uma nova barra em qualquer par de moedas - e calcular os indicadores por FECHAR, não por fechamento de barra
e dentro - fora.
porque a entrada estará no tique de uma nova barra de qualquer par controlado, porque será um sinal para uma nova hora! (neste caso, uma nova hora)
se você trabalha em várias moedas, você não precisa cronometrar a barra principal ou não a barra principal
é necessário pegar uma marca de um novo início de barra - e calcular os indicadores por FECHAR, e não por fechar a barra
e dentro - fora
porque a entrada será precisamente no tique de uma nova barra de qualquer par controlado, porque será um sinal para uma nova hora! (neste caso, uma nova hora)
Mais como esta.......
você não tem que cronometrar o par de moedas principal ou não o principal
você precisa pegar a marca de uma nova barra para qualquer par de moedas - e calcular os indicadores por FECHAR e não por fechamento de barra
e dentro - fora
porque a entrada será precisamente no tique de uma nova barra de qualquer par controlado, porque será um sinal para uma nova hora! (neste caso, uma nova hora)
Mais como esta.......
Reformular o Expert Advisor por esta lógica, e a probabilidade do PROBLEMA será reduzida muitas vezes
se você adicionar a captura de uma nova hora em TODOS os pares que estão em uma janela da revisão do mercado especialmente em ienes, então praticamente você não deve ter falhas
1 Apenas não pegue a nova barra em sincronia em todos os pares!!!
2 Apanhe NOVA BARRA em qualquer um dos pares CONTROLADOS, inicie o recálculo de todos os pares requeridos na corrente FECHADO ...
( a propósito, você pode precisar refazer alguns dos SEUS indicadores )
decidir entrar - sair - ou continuar a segurar
Reformulando o Expert Advisor por esta lógica, a probabilidade de um problema será reduzida em alguns momentos
se você adicionar a captura de uma nova hora em TODOS os pares que estão na janela de visão geral do mercado especialmente em ienes, então praticamente você não deve ter falhas
1 simplesmente não pegue uma nova barra em sincronia em todos os pares!!!
2 Pegue uma NOVA BARRA em qualquer um dos pares CONTROLADOS, inicie o recálculo de todos os pares necessários no atual FECHADO ...
( a propósito, alguns dos SEUS indicadores podem precisar de ser recalculados )
e tomar a decisão de entrar - sair - ou de continuar mantendo
Obrigado veri Macha)))))))))))))