[ARQUIVO]Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por ela. Não posso ir a lugar nenhum sem você - 5. - página 177

 
badbadboy:

Preciso dele para fazer com que a EA comece a calcular-se a si mesma.
Você tem um EA que só abre posições? Cada cópia (versão) deve ter seu próprio mágico e cada um só monitorará suas próprias posições.
 

Ajude a entender:

A tarefa é contar a perda de pedidos de compra/venda individualmente. Código:

int w = OrdersHistoryTotal()-1;
   if (OrderSelect(w, SELECT_BY_POS, MODE_HISTORY))
   {
      if (OrderProfit() < 0)
      {
         if (OrderType()==OP_BUY) i = i + 1;
         if (OrderType()==OP_SELL) y = y + 1;
         Print("i, y", i, " ", y);
         Print("OrderProfit()", OrderProfit());
      }
   }


O código em si é um trecho de um EA. O Expert Advisor está funcionando e gerando consistentemente perdas. Há muitos pedidos perdidos (eu os imprimo em outro lugar), todos os quais são registrados. Mas neste fragmento de código, o Conselheiro Especialista não entra no

if (OrderProfit() < 0)


O que eu estou fazendo de errado?

 
borilunad:
Você tem um EA que só abre posições? Cada cópia (versão) deve ter seu próprio mágico e cada um só monitorará suas próprias posições.

Entendido. Muito obrigado!
 
belozad:

Ajude a entender:

A tarefa é contar a perda de pedidos de compra/venda individualmente. Código:

int w = OrdersHistoryTotal()-1;
   if (OrderSelect(w, SELECT_BY_POS, MODE_HISTORY))
   {
      if (OrderProfit() < 0)
      {
         if (OrderType()==OP_BUY) i = i + 1;
         if (OrderType()==OP_SELL) y = y + 1;
         Print("i, y", i, " ", y);
         Print("OrderProfit()", OrderProfit());
      }
   }


O código em si é um trecho de um EA. A EA está funcionando e gerando consistentemente perdas. Há um monte de pedidos perdidos (eu os imprimo em outro lugar), todos eles são registrados. Mas neste fragmento de código, o Conselheiro Especialista não entra no

if (OrderProfit() < 0)


O que eu estou fazendo de errado?

Tente

int w = OrdersHistoryTotal();
int BUY=0;
int SELL=0;

for (i=0; i<w; i++)
 {
   if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
   {
      if (OrderProfit() < 0)
      { 
         if (OrderType()==OP_BUY) BUY++;
         if (OrderType()==OP_SELL) SELL++;
      }
   }
}
 Print("  BUY = ",BUY);
 Print("  SELL = ",SELL);       
 

Estou perdendo a cabeça, o que há de errado com meu mql4?

Por que o software executa a seguinte condição em cada ciclo? Ele é escrito para imprimir "i" somente quando um novo pedido é fechado!

  w = OrdersHistoryTotal();
   if (i!=w)
   {
      i = w;
      Print ("i :", i);
   }

 
belozad:

Estou ficando louco, o que há de errado com meu mql4?

Por que o programa executa a seguinte condição em cada ciclo? Ele é escrito para imprimir "i" somente quando um novo pedido é fechado!

  w = OrdersHistoryTotal();
   if (i!=w)
   {
      i = w;
      Print ("i :", i);
   }



Se eu não for uma variável estática, ela será impressa a cada tick.
 
badbadboy:

Se eu não for uma variável estática, ela ainda imprimirá em cada tick.

Ooh, eu estava me perguntando porque eu tenho várias peças em meu programa trabalhando através do rabo! =)

Então todas as variáveis de trabalho cujos valores eu uso em diferentes carrapatos devem ser declarados estáticos?

 
belozad:

Ooh, eu estava me perguntando por que eu tenho alguns pedaços de software funcionando através do meu traseiro! =)

Então todas as variáveis de trabalho cujos valores eu uso em diferentes instantes têm que ser declarados estáticos?


É difícil dizer. Olhe para as propriedades das variáveis, depois pense no que declarar e como declarar.
 

A função OrderModify() não permite que os comentários sejam alterados. Existe outra maneira de fazer isso?

 
pasha5282:

A função OrderModify() não permite que os comentários sejam alterados. Existe outra maneira de fazer isso?


Somente a partir do terminal.