Uma pergunta para os conhecedores de MQL - página 10

 
Rita:

Oh, eu ainda estava pensando :)

Se

if (NumberOfPositions(NULL, OP_BUY,Magic)>=2 && NumberOfPositions(NULL,OP_SELL,Magic)>=2) {
 for{
// а сюда счетчик, по которому 2 раза пройдет
                    ClosePosFirstProfit(NULL,OP_BUY, Magic);
                    ClosePosFirstProfit(NULL,OP_SELL, Magic);
}
}
Nah?

 
Obrigado Abzasc, vou tentar.
 
Olá! Comecei recentemente a aprender a escrever em MQL4 e não entendo como (com que comando) se pode conectar não um indicador embutido, mas um retirado da Base de Código? Pode me dizer, por favor?
 
savage_pinguin:
Olá! Comecei recentemente a aprender a escrever em MQL4 e não entendo como (com que comando) se pode conectar não um indicador embutido, mas um retirado da Base de Código? Pode me dizer, por favor?

iCustom() para ajudar
 

Boa tarde.

 if  ( Accumulation2MA_1<=MA_1  &&    Accumulation2MA_0>MA_0 )   {
// если линии пересеклись - открываем позицию
   ticket=OrderSend(Symbol(),0,Lot,Ask,Slippage,Bid-SL*Point,Ask+TP*Point,
                                             "Хи-Хи",MagicNum,0,CLR_NONE);
     if(ticket < 0) { Print("Ошибка открытия ордера BUY #", GetLastError()); 
               Sleep(10000);   return (0); }
   }

O Expert Advisor usa um indicador Accumulation2MA personalizado, no qual o indicador MA é anexado no modo iMAOnArray.

Os sinais de entrada/saída são de passagem de linha!

Eu não entendo o que está acontecendo. Mas metade dos sinais de entrada/saída são "flagrantemente" ignorados! Nenhuma razão!

A mesma coisa ao fechar:

 for (int v=0; v<OrdersTotal(); v++)                             {//сортируем       
      if (OrderSelect(v, SELECT_BY_POS, MODE_TRADES))               {//перебираем           
        if (OrderSymbol()==Symbol()&& OrderMagicNumber()==MagicNum)   {//выбираем 
//-----------------------------------------------------                  
if (OrderType() == OP_SELL) {//если линии пересеклись, то закрываем: 
      if( Accumulation2MA_1<=MA_1  &&    Accumulation2MA_0>MA_0 )   {
                 OrderClose(OrderTicket(),OrderLots(),Ask,3,Green); // закрываем позицию
                 return(0); // выходим
                }   
......

Quase metade dos ofícios não são realizados desta forma. Você pode me dizer o que está errado?

As condições são as mais simples! As linhas estão claramente em movimento! Mas as posições nem sempre são abertas/fechadas! A revista é "silenciosa".

Eu os mostrei com flechas.

//------заполняем массив значениями Accumulation2MA -----------------
double Accumulation2MA[50];
int    i=0;  while (i<50)  {
Accumulation2MA[i]= iCustom(NULL, 0,"Accumulation2MA_v03",SMA,FMA,0, i);
                  i++;     }
//------Вешаем на Accumulation2MA - линию МА ---------------
ArraySetAsSeries(Accumulation2MA,true);
double MA_0 = iMAOnArray(Accumulation2MA,0,MA_Period,0,MODE_SMA,0);
double MA_1 = iMAOnArray(Accumulation2MA,0,MA_Period,0,MODE_SMA,1);
double Accumulation2MA_0=iCustom(NULL, 0,"Accumulation2MA_v03",SMA,FMA,0,0);
double Accumulation2MA_1=iCustom(NULL, 0,"Accumulation2MA_v03",SMA,FMA,0,1);
 
Rita:

Boa tarde.

O Expert Advisor usa um indicador Accumulation2MA personalizado, no qual o indicador MA é anexado no modo iMAOnArray.

Os sinais de entrada/saída são de passagem de linha!

Eu não entendo o que está acontecendo. Mas a metade dos sinais de entrada/saída são "descaradamente" inhorizados! Nenhuma razão!

A mesma coisa ao fechar:

Quase metade dos ofícios não são realizados desta forma. Você pode me dizer o que está errado?

As condições são as mais simples! As linhas estão claramente em movimento! Mas as posições nem sempre são abertas/fechadas! A revista é "silenciosa".

Mostrou-os com setas.

Talvez isto possa acontecer quando se pulam carrapatos. Isto é, enquanto Start() está funcionando, um novo tick chega (em que as condições seriam cumpridas), mas ele é ignorado enquanto Start() está funcionando.

No próximo tick as condições não estão preenchidas - elas já se foram.

Na verdade, cruzar as linhas indicadoras é um sinal muito desconfortável, já não o uso há muito tempo. É melhor subtrair um indicador de outro e rastrear a travessia do zero. No entanto, é uma questão de gosto.

 
Rita:

Boa tarde.

O Expert Advisor usa um indicador Accumulation2MA personalizado, no qual o indicador MA é anexado no modo iMAOnArray.

Os sinais de entrada/saída são de passagem de linha!

Eu não entendo o que está acontecendo. Mas metade dos sinais de entrada/saída são "flagrantemente" ignorados! Nenhuma razão!

A mesma coisa ao fechar:

Quase metade dos ofícios não são realizados desta forma. Você pode me dizer o que está errado?

As condições são as mais simples! As linhas estão claramente em movimento! Mas as posições nem sempre são abertas/fechadas! A revista é "silenciosa".

Talvez seja mais fácil calcular a segunda linha no indicador. Então os problemas devem desaparecer

 
MetaDriver:

Isto provavelmente pode acontecer quando os carrapatos são pulados. Isto é, enquanto Start() está funcionando, chega um novo tick (no qual as condições teriam sido cumpridas), mas é ignorado enquanto Start() está funcionando.

No próximo tick, as condições não estão preenchidas - está feito.

Na verdade, cruzar as linhas indicadoras é um sinal muito desconfortável, já não o uso há muito tempo. É melhor subtrair um indicador de outro e monitorar a travessia zero. É uma questão de gosto.

A subtração e o traçado da travessia zero não é praticamente o mesmo que no exemplo acima?

//если линии пересеклись, то закрываем: 
      if( Accumulation2MA_1<=MA_1  &&    Accumulation2MA_0>MA_0 )   {

À primeira vista, parece ser um tapa na cara!

O que o faz pensar que a "travessia zero" vai funcionar melhor?

 
VINAR:

Pode ser mais fácil calcular a segunda linha no indicador. Então os problemas devem desaparecer

Não entendo bem o que significa "calcular a segunda linha no indicador"? Você pode explicar?

============================

Agora estou testando novamente o Expert Advisor (a propósito, ele funciona abrindo preços) e estou surpreso de ver que ele funciona perfeitamente no momento! O salto de sinal quase desapareceu!

E ontem falhou metade dos sinais no mesmo mt4! Algum tipo de milagres....

 
Rita:

Não é subtrair e traçar uma travessia zero praticamente a mesma coisa que

À primeira vista, é tanto de frente quanto de frente!

O que o faz pensar que "cruzar o zero" funcionaria melhor?

Em teoria, tanto faz. Na prática:

1) podemos verificar facilmente a diferença entre a posição de mercado recomendada pelo indicador e a posição real nas ordens. Ou seja, o indicador resultante mostrará uma curva pronta que pode ser interpretada como "positivo/negativo"=="subir/baixar". É muito conveniente para sistemas de cabeça para baixo.

2) Existe uma possibilidade de refinamento conveniente do sinal (multiplicação por coeficientes, intersecções com outras linhas de critério, etc.).

Portanto, como eu disse, é uma questão de gosto. :)