Perguntas sobre a MQL4 - página 9

 
É correto assumir que:
1. O fechamento mútuo dos pedidos ocorre automaticamente sem a intervenção do market maker?
2. A modificação das ordens abertas (se as distâncias aceitas forem respeitadas) ocorre automaticamente sem intervenção do market maker?
3. A eliminação e modificação de ordens pendentes (se as distâncias aceitas forem respeitadas) ocorre automaticamente sem a intervenção de um market maker?
 
É correto supor que:<br / translate="no"> 1. O fechamento de pedidos mútuos é automático sem intervenção do market maker?
2. A modificação de pedidos (se as distâncias aceitas forem respeitadas) acontece automaticamente sem qualquer intervenção do market maker?
3. A eliminação e modificação de ordens pendentes (se as distâncias aceitas forem respeitadas) acontece automaticamente sem qualquer intervenção do market maker?

isto não é correto. você precisa perguntar a seu corretor como os pedidos são processados. o processamento automático é permitido. mas mesmo em nosso servidor de demonstração às vezes o processamento automático é desativado e confirmações manuais são realizadas.
 
Slawa,
muito obrigado pela resposta clara.

Devemos assumir que o mesmo se aplica ao trailingStop pull-up automático?
Existe alguma diferença para o criador de mercado em termos da fonte de formação de influência de controle (EA ou MT)?
 
Sim. Como o corretor não sabe quem está movendo as paradas - o comerciante manualmente, especialistas (ou roteiros) ou o terminal do cliente com o mecanismo de parada de rastreamento.
 
1) por que o indicador recebe Bars==0 init() após a recompilação?

2) é relativamente lento o acesso aos elementos da matriz. pode ser acelerado apenas por construções incômodas ou algo mais?
   estático int sabe; estático duplo caa,cbb,ccc,cdd,cee,cff, cgg; if(b-know!=0){ if(b-know===1){ caa=cbb; cbb=ccc; ccc=cdd; cdd=cee; cee=cff; cff=cgg; cgg=Close[b+6];/*vzad po istorii*/ }else if (b-know===-1){ cgg=cff; cff=cee; cee=cdd; cdd=ccc; ccc=cbb; cbb=caa; caa=Fechar[b]; /*vperjod*/ }else{ caa=Fechar[b]; cbb=Fechar[b+1]; ccc=Fechar[b+2]; cdd=Fechar[b+3]; cee=Fechar[b+4]; cff=Fechar[b+5];cgg=Fechar[b+6];}  know=b; }
 
Slawa,
obrigado novamente. É mais do que claro.

Myxu,
tente usar o ArrayCopy();
 
Slawa, você frequentemente me ajuda com detalhes importantes, então eu me dirijo a você pessoalmente.
Se em uma janela o Expert Advisor e o script estiverem trabalhando ao mesmo tempo, no caso de, aproximadamente ao mesmo tempo, darem ordens ao servidor para modificação:
- EA modifica Buy at time t_o, Sovet=OrderModify(...)
- script modifica BuyLimit at time t_o +1ms, Script=OrderModify(...)
Outros eventos:
-server retorna TRUE na execução bem sucedida da modificação (não sei qual) ordem,
(qual das variáveis adquire valor TRUE - Sovet ou Script ?)
e após 1ms...
-server retorna FALSO sobre a execução bem sucedida da modificação (não sei qual) do pedido

Pergunta.
1. É correto assumir que os pedidos ao servidor são configurados de tal forma, que são nomeados e as respostas do servidor não serão confundidas, mas cada um deles será devolvido à sua própria OrderModify() ?
2. Caso contrário, existe alguma forma rotineira de distinguir entre as respostas do servidor? (além da prática de criar outro pedido após receber uma resposta ao anterior) ?

(Tenho mais algumas perguntas semelhantes; se não forem cruciais, por favor, responda-as no fórum MQL4, a pergunta é duplicada lá, e se for possível, a discussão pode ser realizada lá, porque é mais conveniente apresentar os códigos lá).
 
citação do novo dicionário
===
Há apenas um tópico, que é iniciado em um contexto de negociação de programas, para realizar operações comerciais de especialistas e scripts. Portanto, se este contexto é ocupado por uma operação comercial de uma EA, outra EA ou roteiro não pode chamar funções comerciais naquele momento devido a erro 146 (ERR_TRADE_CONTEXT_BUSY). A função IsTradeAllowed() deve ser utilizada para detectar a possibilidade de realizar operações comerciais. Para a separação clara do acesso ao contexto comercial você pode usar o semáforo baseado na variável global cujo valor deve ser alterado usando a função GlobalVariableSetOnCondition().
===
Você não pode comercializar vários EAs (ou um EA e um script) ao mesmo tempo. No ramo #6 do erro há um exemplo de como lidar com a situação usando semáforo
 
Slawa,
obrigado por sua resposta. Informações muito importantes. Algumas coisas são esclarecidas.

Mas ainda há dúvidas.
O fato de que
Há apenas um tópico para a execução de negócios de EAs e scripts
...
para executar ordens em um EA ou script de acordo com os seguintes esquemas?:
a=OrderModify(..number1); c=OrderModify(..number2)
;


OrderModify(..number1); OrderModify(..number2);


É correto assumir que:
- no primeiro exemplo, OrderModify(..number2) não começará a executar até que o operador de atribuição a= seja executado após receber a resposta do servidor à OrderModify(..number1)?
- no segundo exemplo, OrderModify(..number2) começará a executar imediatamente sem esperar que o servidor responda à OrderModify(..number1)?

 
em ambos os casos, a inicialização das funções será seqüencial. ao contrário dos trigêmeos, todas as funções (que significam principalmente funções comerciais) estão agora sincronizadas
Razão: