Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 311

 
ALXIMIKS:

Olá, reformule o que você está pedindo, não está muito claro.


Obrigado por responder. Em minha EA :

se( condição)

{dois ordens de compra e venda abertas}

Preciso apagar o pedido mais próximo quando um deles abre, porque neste momento pode haver outros pedidos, mais distantes do preço atual

posso usar um contador de posições abertas + roteiro para apagar um pedido (se estou pensando corretamente, não sei como fazê-lo, estou apenas começando).

 
PGM5:


e é necessário eliminar a ordem mais próxima na abertura de uma das posições, porque neste momento pode haver outras ordens - longe do preço atual

posso usar um contador de posições abertas + roteiro para apagar um pedido (se estou pensando corretamente, não sei como fazê-lo, estou apenas começando).


Por favor, aprenda a terminologia, é um verdadeiro problema para entender o que você precisa.

Você faz dois pedidos pendentes, se um abrir, você tem que apagar o quê?

Este é um conceito maravilhoso, a ordem mais próxima está na direção da posição aberta ou contra ela, ou você está dizendo que a ordem pendente oposta deve ser eliminada?

Existem outras ordens - de onde elas vêm, do comércio manual? Do mesmo Expert Advisor, mas abertas em condições diferentes?

Você precisa de uma resposta específica ou ela é tão vaga quanto a pergunta? (Passe um minuto extra formulando sua pergunta - isso ajudará a todos)

 
ALXIMIKS:

Lendo estas linhas, lembro-me como eu mesmo fui censurado por ser analfabeto em meus postos, ou melhor, preguiçoso, e agora estou ainda mais consciente de minha má ação.

1) o que é uma máquina de desenho? (como você o entende)

2) o que é uma função elementar para buscar a divergência MACD?

3) é tão difícil escrever "divergência" em um mecanismo de busca e selecionar o terceiro link na categoria "Base de Código"?

(Se você espera que alguém lhe dê uma ferramenta pronta e explique tudo - esperança, há pessoas diferentes aqui: ambos crentes e não tanto)



Espero que você saiba o que é proxemismo! Você acha que o fórum é para metafísica?

A ferramenta de desenho - com a saída na tabela.

Funções elementares são as funções que podem ser aplicadas utilizando apenas o livro didático MQL4, sem o uso de expressões complexas.

Como utilizar os amortecedores indicadores ao detectar a divergência MACD:

como entendê-la?

for(i=limit-1; i>=0; i--) 
     {
      BufferMacdMain[i]   = iMACD(NULL, 0, macd_fast, macd_slow, macd_signal, PRICE_CLOSE, MODE_MAIN, i);
      BufferMacdSignal[i] = iMACD(NULL, 0, macd_fast, macd_slow, macd_signal, PRICE_CLOSE, MODE_SIGNAL, i);
      BufferMacdOsMA[i]   = BufferMacdMain[i] - BufferMacdSignal[i];
      BufferTop[i]        = EMPTY_VALUE;
      BufferBottom[i]     = EMPTY_VALUE;
      BufferCross[i]      = EMPTY_VALUE;
 
      double main2 = BufferMacdMain[i + 2];
      double main1 = BufferMacdMain[i + 1];
      double sig2  = BufferMacdSignal[i + 2];
      double sig1  = BufferMacdSignal[i + 1];
 
      if((main1>=sig1 && main2<sig2) || 
         (main1<sig1 && main2>=sig2))
 
Burger:


Espero que você saiba o que é proxemismo! Você acha que este fórum é apenas para metafísica?

Desenho - com saída para um gráfico.

Funções elementares são funções que podem ser aplicadas utilizando apenas o tutorial MQL4, sem o uso de expressões complexas.

Como usar buffers indicadores ao detectar a divergência MACD:

como entendê-lo?


Primeiro, descubra o que é divergência e quantos valores são necessários para determiná-la. Aqui com exemplos.
 
Burger:


Espero que você saiba o que é proxemismo! Você acha que o fórum é para metafísica?

Desenho - com saída para um gráfico.

Funções elementares são funções que podem ser aplicadas utilizando apenas o tutorial MQL4, sem o uso de expressões complexas.

Como usar buffers indicadores ao detectar a divergência MACD:

como entendê-lo?


Isto não é um clube de videntes; se você quiser respostas adequadas, faça perguntas adequadas. Se você não sabe como dizer, entre de longe, mas para que fique claro e não tenha que perguntar cem vezes o que um determinado indivíduo quer dizer com este ou aquele termo.

As funções elementares são funções que não utilizam expressões complexas. Incrível.

O código sem parênteses de fechamento, sem funções após uma condição - o que você está esperando?

for(i=limit-1; i>=0; i--)      //цикл  расчета нерассчитанных баров, наверное
     {
      BufferMacdMain[i]   = iMACD(NULL, 0, macd_fast, macd_slow, macd_signal, PRICE_CLOSE, MODE_MAIN, i);   // расчет значения основной   линии масд на i баре
      BufferMacdSignal[i] = iMACD(NULL, 0, macd_fast, macd_slow, macd_signal, PRICE_CLOSE, MODE_SIGNAL, i); // расчет значения сигнальной линии масд на i баре
      BufferMacdOsMA[i]   = BufferMacdMain[i] - BufferMacdSignal[i];  // разница основной и сигнальной линии масд на i баре
      BufferTop[i]        = EMPTY_VALUE;                              // буфер заполняется EMPTY_VALUE на i баре (не рисуется на графиках)
      BufferBottom[i]     = EMPTY_VALUE;                              // буфер заполняется EMPTY_VALUE на i баре (не рисуется на графиках)
      BufferCross[i]      = EMPTY_VALUE;                              // буфер заполняется EMPTY_VALUE на i баре (не рисуется на графиках)
 
      double main2 = BufferMacdMain[i + 2];                           // переменная берет значение основной линии масд на i+2 баре с массива BufferMacdMain
      double main1 = BufferMacdMain[i + 1];                           // переменная берет значение основной линии масд на i+1 баре с массива BufferMacdMain
      double sig2  = BufferMacdSignal[i + 2];                         // переменная берет значение сигнальной линии масд на i+2 баре с массива BufferMacdSignal
      double sig1  = BufferMacdSignal[i + 1];                         // переменная берет значение сигнальной линии масд на i+1 баре с массива BufferMacdSignal
 
      if((main1>=sig1 && main2<sig2) ||                      // если main1>=sig1 и main2<sig2 тогда будет выполнятся условие (сигнальная пересекает основную снизу вверх)
         (main1<sig1 && main2>=sig2))                        // если main1<sig и main2>=sig2 тогда будет выполнятся условие  (сигнальная пересекает основную сверху вниз)
 
ALXIMIKS:


Por favor, aprenda a terminologia, porque compreender exatamente o que você precisa é um verdadeiro desafio.

Você faz dois pedidos pendentes, se um deles for aberto, você tem que excluir qual?

Ordem mais próxima - um conceito maravilhoso, é a ordem mais próxima na direção da posição aberta ou contra ela, ou você está dizendo que a ordem pendente oposta deve ser eliminada?

Existem outras ordens - de onde elas vêm, do comércio manual? Do mesmo Expert Advisor, mas abertas em condições diferentes?

Você precisa de uma resposta específica ou ela é tão vaga quanto a pergunta? (Passe um minuto extra para formular sua pergunta - isso beneficiará a todos).

Sim, você acertou: quando você abre uma ordem você tem que apagar a ordem oposta pendente, as outras ordens são da mesma EA, mas abertas sob condições diferentes

Obrigado de antemão.

 
PGM5:

Sim, você acertou: quando você abre uma ordem você tem que apagar a ordem oposta pendente, as outras ordens são da mesma EA, mas abertas sob condições diferentes

Obrigado de antemão.


Se entendi corretamente o que você quer: este mecanismo se chama OCO (One Cansel Other - um cancela o outro). Esta é a relação entre, por exemplo, um take e stop para uma "ordem de mercado" (em termos de MT4) - um (take ou stop) é acionado, o outro é automaticamente removido e a implementação completa desta não é uma tarefa tão trivial. Não no sentido de um algoritmo muito complexo, mas no sentido de que ele não é elementar. Temos que escrever uma contabilidade paralela das ordens: digite e trace o traço pelo qual as ordens estão ligadas. Se não estou enganado, tal mecanismo também não foi implementado no MT5, embora seja uma característica padrão para terminais de estoque e funcione no lado do servidor.

Podemos implementar o mecanismo do lado do cliente e "brincar" com o mágico (seria "não muito" difícil neste caso): todas as ordens das quais se deve permanecer com o mesmo mágico. Ao verificar: se houver um de mercado, todos os outros são eliminados. Então um magik tem que ser gerado, acompanhado. Atribuir uma matriz separada para o mágico: mais de um par de pedidos pode ter que ser suportado. É impossível perder um magik, daí tanto as variáveis globais quanto a escrita no arquivo. Se fizermos isso de uma forma mais global (considerando não apenas a conectividade do pedido, mas também a pertença/estrada), o mecanismo contábil se torna mais complicado: o mágico se torna composto e na verdade precisamos estender o algoritmo padrão de colocar pedidos muito mais profundamente do que podemos fazer usando funções "básicas" (em sua terminologia), mas ainda assim tudo está do lado do cliente, ou seja, se o terminal for desligado ou a comunicação for perdida, os pedidos não funcionarão (rastreados).



 
VladislavVG:

Se eu entendi corretamente o que você quer: este mecanismo se chama OCO (One Cansel Other - um cancela o outro). Esta é a relação entre, por exemplo, um take e stop para uma "ordem de mercado" (em termos de MT4) - um (take ou stop) é acionado, o outro é automaticamente apagado e a implementação completa não é uma tarefa tão trivial. Não no sentido de um algoritmo muito complexo, mas no sentido de que ele não é elementar. Temos que escrever uma contabilidade paralela das ordens: digite e trace o traço pelo qual as ordens estão ligadas. Se não estou enganado, tal mecanismo também não foi implementado no MT5, embora seja uma característica padrão para terminais de estoque e funcione no lado do servidor.

Embora possamos implementar o mecanismo do lado do cliente e "brincar" com o mágico (neste caso, será "não muito" difícil): todas as ordens das quais se deve permanecer com o mesmo mágico. Ao verificar: se houver um de mercado, todos os outros são eliminados. Então um magik precisa ser gerado, acompanhado. Atribuir uma matriz separada para o mágico: mais de um par de pedidos pode ter que ser suportado. É impossível perder um magik, daí tanto as variáveis globais quanto a escrita no arquivo. Se fizermos isso de uma forma mais global (considerando não apenas a conectividade de pedidos, mas também a pertença/estrada), o mecanismo de contabilidade se torna mais complicado: o mágico se tornará composto e na verdade precisamos estender o algoritmo padrão de colocar pedidos muito mais profundamente do que podemos fazer usando funções "elementares" (em sua terminologia), mas de qualquer forma tudo está do lado do cliente: ou seja, se o terminal for desligado ou a conexão for perdida, ele não funcionará (rastrear pedidos).



Desculpe, eu não sabia que era tão complicado. Vou pensar em como simplificar o sistema.

 
PGM5:

Desculpe, eu não percebi que era tão complicado. Vou pensar em como simplificar o sistema.



Para ajudar.
 
r772ra:
Para ajudar.


Esta é apenas uma implementação muito "modesta" que não é extensível: elimina todas as ordens da EA ou todas as ordens de um determinado feiticeiro para um determinado símbolo, se houver um de mercado. Ou seja, considera todas as encomendas feitas ao instrumento (com/sem levar em conta o mágico) como estando ligadas pela relação CCA.

Este pode não ser o caso de forma alguma. Por exemplo, pode haver 2 ou 3 grupos de pedidos interligados em 20 colocados, e os demais não estão de forma alguma interligados. Esta EA não pode ser expandida para tal contabilidade - temos que reescrever tudo ou podemos usar esta EA em modo manual: então a contabilidade dos mestres de grupos de ordens vinculados tem que ser feita manualmente e temos que "pendurar" tantos EAs quantos houver grupos de ordens em um comércio.