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

 

Bom dia, caros amigos. Por favor, informe um iniciante em que direção cavar. O problema não está resolvido. O resultado final é este:

No H4, a barra quebra a barra de baixo para cima, onde ela realmente fecha e esta é uma condição de compra. Nós compramos. Agora devemos pegar alguns pontos, ou aproximadamente dez, para fechar (tudo era simples e claro para mim até este momento) e ir fumar até o próximo bar (isto não funciona). Assim que uma ordem é fechada, uma nova ordem é aberta (a condição ainda é cumprida), como evitar a negociação até o próximo bar?

A solução parece ser simples, sinto que está perto de mim, mas me falta conhecimento (ou cérebro)). Devo admitir que não li 549 páginas e se alguém já perguntou... Não jure muito))))

Você pode me ajudar, por favor?

 

FAQ

 
Obrigado
 
ex_kalibur:

Olá, ajude-me por favor, não consigo ver a coisa mais óbvia((((

double LotsAllPos(int op) {\i1}

int i;

duplo ll=0;

para (i=0; i<OrdensTotal(); i+++) {

se (OrderType()!=op) continuar;

se (OrderSymbol()!=sy) continuar;

if (OrderMagicNumber()==Magic || OrderMagicNumber()==Magic+1) ll+=OrderLots();

}

retornar(ll);

aqui eu preciso devolver o volume somado por meu símbolo e por tipo

for (i=0; i<OrdersTotal(); i++) {
 if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
   if (OrderType()!=op) continue;

....
   }
 
Sepulca:


Obrigado por sua ajuda.
 

Você pode me dizer qual poderia ser o problema? A variável newlots é 0,2.

Quando eu executo um EA, Print 1 imprime primeiro uma mensagem dizendo 1 0,2, depois a condição para abrir um pedido aciona, o pedido é aberto, mas a função Print 2 que o precede não mostra a mensagem, não consigo entender porque ele é pulado, já que a condição aciona e se a função de pedido estiver aberta, a função Print deve ser fechada também. Além disso, o registro não mostra uma mensagem de que o pedido foi enviado, a mensagem padrão que foi mostrada cada vez que um pedido foi aberto.

Mas isso ainda não é o pior, o problema principal é que a variável newlots é igual a 0,2 e a ordem abre com volume 0,1, como isso é possível, já que é claramente especificado na função em vez de volume como variável newlots.

  Print("1 ",newlots);
  
  if(условие)
    {
    if(buytime != Time[0] && buys == 0 && sells == 0)
      {
      Print("2 ",newlots);
        if(OrderSend(Symbol(),OP_BUY,newlots,Ask,Slippage,0,0,0,MagicNumber,0,BuyColor) > 0)
          {
          buytime = Time[0];
          }
      }
    }

// пробовал даже вот так, в этом случае выводятся только первые два сообщение, причем значение выводится что newlots все таки равен 0.2, но третье сообщение
не выводится, и ордер открывается с лотом 0.1.


Print("1 ",newlots); - равен 0.2


Print("2 ",newlots); - равен 0.2

Print("3 ",newlots); - не выводится сообщение, и далее ордер открывается с лотом 0.1



Print("1 ",newlots);
  if(((Ask > (MA1+3*Point*a)) && (Open[0] < (MA1+3*Point*a)) && (Ask < (MA1+5*Point*a))) || ((Low[0] < (MA1+3*Point*a)) && (Bid > (MA1+3*Point*a)) && (Bid < (MA1+5*Point*a))))
    {
    Print("2 ",newlots);
    if(buytime != Time[0] && buys == 0 && sells == 0)
      {
      Print("3 ",newlots);
        if(OrderSend(Symbol(),OP_BUY,newlots,Ask,Slippage,0,0,0,MagicNumber,0,BuyColor) > 0)
          {
          buytime = Time[0];
          }
      }
    }

 
sss2019:

Você pode me dizer qual poderia ser o problema? A variável newlots é 0,2.

Quando eu executo um EA, Print 1 primeiro imprime uma mensagem dizendo 1 0,2, depois a condição para abrir um pedido aciona, o pedido é aberto, mas a função Print 2 antes de não mostrar a mensagem, não consigo entender porque ela é pulada uma vez que a condição aciona e se a função de pedido estiver aberta, a função Print também deve ser aberta. Além disso, o registro não mostra uma mensagem de que o pedido foi enviado, a mensagem padrão que foi mostrada cada vez que um pedido foi aberto.

Mas isso ainda não é o pior, o problema principal é que a variável newlots é igual a 0,2 e a ordem abre com volume 0,1; pode acontecer porque é claramente indicado na função em vez de volume que a variável newlots.


Onde está a abertura de uma ordem no código? Onde está OrderSend?

Nessa seção, que você mostrou, a condição não é executada, e conseqüentemente sua Impressão 2, e conseqüentemente, a OrderSend nesta condição também, não abre um pedido com lote 0,2.

Outro OrderSend está sendo executado.

 
zxc:


Onde mais no código está a abertura do pedido? Onde mais é OrderSend?

Na seção que você mostrou, a condição não está preenchida e, portanto, sua impressão 2, e portanto o OrderSend nesta condição também não é aberto - nenhum pedido com lote 0,2 é aberto.

Outro OrderSend é executado.


Aqui vamos nós.

if(OrderSend(Symbol(),OP_BUY,newlots,Ask,Slippage,0,0,0,MagicNumber,0,BuyColor) > 0)

Tenho apenas um pedido enviado em meu EA, a condição é cumprida e o pedido é aberto com um volume pouco claro.

 

Você pode me dizer, quando um EA vem com um conjunto, em que pasta eu devo colocá-lo? Obrigado.

 

Boa tarde!

Você pode ajudar, lendo do arquivo, há uma linha (em geral haverá mais, mas não importa), ela faz loops, como se não visse o fim do arquivo...

int qq=0;
 while (FileIsEnding(h3)==false)
 {
  int uu=0;
  while (FileIsLineEnding(h3)==false)
  { 
    Histxmas[qq][uu]=StrToDouble(FileReadString(h3));
    Print("Histxmas[",qq,"][",uu,"]=",Histxmas[qq][uu]);
    uu+;
  }
  FileSeek(h3,0,SEEK_END);   
  qq++;
  Print("Бро зациклился, покажи мне кюкю",qq);
 }