[Arquivo!] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por ela. Não poderia ir a lugar algum sem você - 2. - página 281

 
Pyro:

tara


É interessante, porque o preço de estabelecer um pedido é normalizado para 4 dígitos, ou seja, frações de uma tubulação não podem estar lá. Por que é assim? E sim, agora funciona corretamente! THX

Na verdade, a normalização tem de ser feita no momento do cálculo:

   int dg=MarketInfo(Symbol(),MODE_DIGITS);        // Количество цифр после десятичного точки в цене инструмента
   if (NormalizeDouble(OrderOpenPrice()-(p1+more),dg)==0) {
      // ... тут код, если результатом сравнения стал ноль, т.е. сравниваемые величины равны
      }

e alguns pontos em seu código:

for(int i=1 ; i <= OrdersTotal() ; i++)   // делаете цикл от второго ордера в списке. Почему бы сразу не for(int i=0; i<OrdersTotal(); i++) ?
   {
   if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES))  // если выбрали ЛЮБОЙ ордер, пусть он даже открыт другим советником или вручную
      {                                           
      if(OrderOpenPrice()-(p1+more) == 0)          // сравниваете без нормализации
         {
         ordersethigh1=true;                       // желательно флагу ПЕРЕД циклом задать значение false
         break;
         }
      }
   }
     
if((ordersethigh1==false) && (p2-price>pointsclose))  // второе условие тоже не нормализовано
   {
   OrderSend(Symbol(),OP_SELLLIMIT,baselot,p1+more,3,NULL,NULL,"Comment",0001,0,White);
   }
 

artmedia70


Bem, eu escrevi com base em seu código. Simplificado por enquanto (estou descobrindo isso). A única coisa que ficou clara é que tudo precisa ser normalizado. É uma espécie de revelação (tudo funcionou no testador). Estou trabalhando nisso agora.

если выбрали ЛЮБОЙ ордер, пусть он даже открыт другим советником или вручную

Neste caso, não precisamos de código redundante. Mas eu acrescentei um cheque para a ferramenta.

Eu tenho duas variantes, ambas funcionam:

if(OrderOpenPrice()-(channelhigh+more) <=Point*0.5)

if(NormalizeDouble(OrderOpenPrice()-(channelhigh+more),4) == 0)

Obrigado, esclareceu muito!



 
Pyro:

artmedia70


Bem, eu escrevi com base em seu código. Simplificado por enquanto (estou descobrindo isso). A única coisa que ficou clara é que tudo precisa ser normalizado. É uma espécie de revelação (tudo funcionou no testador). Estou trabalhando nisso agora.

Neste caso, não é necessário código excessivo. Mas eu acrescentei um cheque para a ferramenta.

Eu tenho duas opções, ambas estão funcionando:


Obrigado, muito já foi esclarecido!

É redundante verificar de que tipo é a ordem selecionada? Se for uma ordem de compra ou venda? Sem verificação, sua função lhe dirá que há uma ordem pendente (você está verificando sua presença). Você quer verificar se há uma ordem pendente, e você se tornará verdadeiro se houver algum tipo. Mesmo se você o abrir manualmente. Há quatro tipos de ordens pendentes. A fim de evitar confusão, é melhor passar em uma função, quando você a chama, o tipo de ordem pendente, e então verificar se o tipo de ordem escolhida corresponde à ordem passada para a função.
(Esta verificação não está presente no meu exemplo na p. 277). Ele simplesmente verifica se há algum pendente - se o tipo for menor que 1 e maior que 5, continuaremos a selecionar o próximo).

A seguir. Sua EA pode trabalhar em uma TF, e na outra, outra EA pode trabalhar simultaneamente. Os dois estão trabalhando no mesmo símbolo. Uma posição aberta por outra EA será considerada por esta EA como "sim, há uma ordem". Portanto, precisamos introduzir uma verificação MagicNumber para que o Consultor Especialista possa distinguir suas próprias ordens e posições.

Portanto, as verificações do símbolo do instrumento comercial, número mágico e tipo do pedido a ser verificado não são excessivas, mas necessárias. Este é o mínimo, mas não a redundância.

 

Saudações camaradas!

Favor informar: Alguém encontrou o problema de procurar a última ordem fechada? Tornou-se lucrativo ou não lucrativo?

Que métodos você já utilizou?

Agradecemos antecipadamente.

R.S. Acho que a operação não é difícil, mas não sei como chegar mais perto dela.

 
artmedia70:

Portanto, as verificações para o símbolo de um instrumento comercial, número mágico e tipo de ordem a ser verificada não são excessivas, são necessárias. Isto é o mínimo, mas não excessivo.

Meu erro aqui foi que eu afixei apenas uma função em essência. Haverá verificações, é claro. É que este pedaço de código, é uma peça de treinamento em muitos aspectos, nada mais é do que parte da EA. Mais uma vez obrigado por sua ajuda, amigos!

 
ramirez17:
Suponho que seja uma operação simples, mas não sei como fazer isso.
Você ficaria surpreso como esta pergunta é popular.
Consulta no Google:
último site depedido fechado:mql4.com
 
ramirez17:

Saudações camaradas!

Favor informar: Alguém encontrou o problema de procurar a última ordem fechada? Tornou-se lucrativo ou não lucrativo?

Que métodos você já utilizou?

Agradecemos antecipadamente.

s.s. Acho que esta operação não é difícil, mas não sei como abordá-la.

https://www.mql5.com/ru/forum/131859/page4#434229

https://www.mql5.com/ru/forum/131859/page4#434230

 
granit77:
Você ficaria surpreso como esta pergunta é popular.
Consulta no Google:
último site depedido fechado:mql4.com

Ok. Esqueci-me do google. Fui direto aqui :)
 
em qual pasta devo colocar o arquivo do conjunto da EA?
 
drm1:
em qual pasta devo colocar o arquivo do conjunto da EA?
especialista/presetários
Razão: