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 454

 
niktron:

if(kolpos==0&&Volume[0]<10&&iOpen("EURAUD",PERÍODO_M1,1)<iClose("EURAUD",PERÍODO_M1,1)&&iOpen("EURUSD",PERÍODO_M1,1)>iClose("EURUSD",PERÍODO_M1,1)
&&iOpen("USDJPY",PERÍODO_M1,1)<iClose("USDJPY",PERÍODO_M1,1)&&iOpen("AUDJPY",PERIOD_M1,1)>iClose("AUDJPY",PERIOD_M1,1)&&Open[1]<Fechar[1])
OrderSend("AUDUSD",OP_BUY,Lot,Ask,slippage,Ask-SL*Point,0,NULL,OrderMagicNumber(),0,Green);
if(kolpos==0 && 
   Volume[0]<10 && 
   iOpen("EURAUD",PERIOD_M1,1)<iClose("EURAUD",PERIOD_M1,1) && 
   iOpen("EURUSD",PERIOD_M1,1)>iClose("EURUSD",PERIOD_M1,1) &&
   iOpen("USDJPY",PERIOD_M1,1)<iClose("USDJPY",PERIOD_M1,1) &&
   iOpen("AUDJPY",PERIOD_M1,1)>iClose("AUDJPY",PERIOD_M1,1) &&
   Open[1]<Close[1])
   OrderSend("AUDUSD",OP_BUY,Lot,Ask,slippage,NormalizeDouble(Bid-SL*Point,Digits),0,NULL,magic,0,Green);

Você está testando no AUDUSD?

Os valores calculados dos preços em uma ordem comercial devem ser normalizados para Dígitos. Não só isso, mas também deve atender aos requisitos do StopLevel (não o fez aqui)

O OrderMagicNumber() é o número mágico da ordem pré-selecionada. Você deve defini-lo com um valor específico, ou calculá-lo no EA para que seja único para ele.

Antes dessa verificação, não se imprimem todos os valores de todas as condições que são verificadas aqui. Então, ficará claro para você onde procurar.

 
artmedia70:

Você está testando no AUDUSD ?

Os valores dos preços calculados em sua ordem de comércio devem ser normalizados para Dígitos. Não apenas isso, mas deve atender aos requisitos do StopLevel (não o fez aqui)

OrderMagicNumber() é o número mágico de uma ordem pré-selecionada. Você deve defini-lo como um valor específico, ou calculá-lo no EA, para que seja único para ele.

Antes dessa verificação, não se imprimem todos os valores de todas as condições que são verificadas aqui. Então, ficará claro para você onde procurar.



Sim, testes em AUDUSD

OrderSend("AUDUSD",OP_BUY,Lot,Ask,slippage,Ask-SL*Point,0,NULL,OrderMagicNumber(),0,Green);- esta linha funcionou no testador sem nenhum problema, até que adicionamos as condições

como

iOpen("AUDJPY",PERÍODO_M1,1)>iClose("AUDJPY",PERÍODO_M1,1)...

Repito que tudo funciona na conta... não no testador...

 
Todos...classificados...faltava o histórico de citações...AUDJPY-referido como menor)))) Muito obrigado a todos!
 
niktron:

OrderSend("AUDUSD",OP_BUY,Lot,Ask,slippage,Ask-SL*Point,0,NULL,OrderMagicNumber(),0,Green);- esta linha funcionava no testador sem problemas, até que as condições fossem adicionadas

Sobre este fio eu já escrevi para vocês. Então, quando você receber erros, 130 não pergunte qual é o problema.
 
artmedia70:
Já escrevi a vocês sobre esta linha. Então, quando surgir o erro 130, não me pergunte qual é o problema.


Entãoo erro 130 pode não ocorrer por um longo tempo e então isso acontecerá?
 
Se alguém tiver encontrado um código para calcular o levantamento de capital (absoluto e relativo), favor fornecer um link.
 
Leo59:
Se alguém tiver encontrado um código para calcular o levantamento de capital (absoluto e relativo), favor me dar um link.
Quando precisei, procurei, mas não encontrei, porque não precisei no passado, como no testador, mas no futuro, colocando o SL em uma posição aberta para antecipar o possível drawdown, se a posição fechar no SL, exibindo os dados no comentário do gráfico, o que fiz, e tornou-se muito conveniente ver com antecedência todos os possíveis problemas, como eu desejo a vocês! Ao mesmo tempo, tendo feito isso eu mesmo, aprendi muito, o que é mais valioso. Boa sorte para você!
 
TarasBY:
está escrito.

Ótimo, muito obrigado por este material, agora ele será muito mais eficaz para limitar as perdas e aumentar os lucros.
 
niktron:

ou seja, o erro 130 pode não acontecer por muito tempo, mas então?
Não sou um telepata, nem sou Nostradamus. Não posso lhe dizer exatamente quando o erro 130 aparecerá. Mas posso lhe dizer que isso aparecerá. Até que você normalize todos os preços calculados nas ordens comerciais e verifique os preços sl e tp na ordem comercial para ver se eles estão corretos em relação às exigências do StopLevel de sua corretora, você receberá o 130º erro.
 

Existe um código de função desse tipo. No MT4 beta, ao compilá-lo, recebo um aviso de "expressão não booleana" em linhas marcadas com uma seta. Você pode sugerir como consertá-lo?

void WindowCaptions()
{
  int hwnd = GetAncestor(WindowHandle(Symbol(),Period()),1); 

  int ret = GetWindowLongA( hwnd, GWL_STYLE );
  if (ret & WS_MAXIMIZE) return;                                               //<---
  if (ret & WS_DLGFRAME) ret -= WS_DLGFRAME; else ret += WS_DLGFRAME;          //<---

  //это если совсем без рамочек 
  // if (ret & WS_THICKFRAME) ret -= WS_THICKFRAME; else ret += WS_THICKFRAME;
  
  SetWindowLongA( hwnd, GWL_STYLE, ret );
  SetWindowPos ( hwnd, 0,0,0,0,0, 39); 
}