[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 404

 
Vinin писал(а) >>

A travessia é mais fácil e mais rápida para verificar de outra forma

A velocidade é maior. As expressões complexas lógicas levam mais tempo para serem executadas do que as simples. A multiplicação é mais rápida que lógica

Obrigado Vinin, e quanto ao número de ofícios, você pode escrevê-los para ser apenas 1.2...N, depois de cruzar o MA.

 
Vinin >>:

Пересечение проще и быстрее проверять по другому

Скорость работы выше. Логические сложные выражение выполняются дольше простых. Умножение быстрее логического

outra opção, mas acho que o autor da pergunta ainda não a entenderá

 
Stanislav.exe писал(а) >>

Obrigado Vinin, e quanto ao número de ofícios, é possível escrevê-los apenas 1.2...N, após a passagem de MA.

Aparentemente, precisamos considerar condições adicionais para a entrada.

E conte o número de posições em aberto.

Mas terá pouca relação com o crossovers.

Porque talvez em um caso houvesse apenas um sinal, no segundo caso havia 10.

Mas primeiro devemos determinar as condições para uma entrada adicional.

 
Vinin писал(а) >>

Aparentemente, há condições de entrada adicionais a serem consideradas.

E conte o número de posições em aberto.

Mas tem pouca relação com o crossover.

Porque talvez em um caso houvesse apenas um sinal, no segundo caso - 10.

Mas primeiro devemos definir as condições para a entrada adicional

OK, vou tentar olhar mais a fundo, muito obrigado a Vilin e Sanyooooook pela ajuda.

 

double Lots;
double m = 0.1;


for (m = 0.1; AccountFreeMarginCheck(Symbol(),OP_SELL,m)>150; m = m + 0.1)
{
Lots = m;
}

Por que meus Lotes sempre acabam sendo zero?

 
Noterday >>:

double Lots;
double m = 0.1;


for (m = 0.1; AccountFreeMarginCheck(Symbol(),OP_SELL,m)>150; m = m + 0.1)
{
Lots = m;
}

Почему у меня Lots всегда оказывается равен нулю?


O laço é executado ou é imediatamente abandonado pela condição?

https://docs.mql4.com/ru/basis/operators/for

Expressão1 descreve a inicialização do laço. Expression2 é uma verificação para a condição de terminação do laço. Se for verdade, o corpo do loop para é executado. Isto se repete até que a expressão2 seja falsa. Se for falso, o loop é terminado e o controle é dado ao próximo operador. A expressão3 é calculada após cada iteração.
para(expressão1; expressão2; expressão3)
operador;

 
Aparentemente, sai logo... Coloque um alerta no laço - nada...
 

Boa noite. Eu tenho um problema com o terminal, não posso resolvê-lo de forma alguma:

Eu carrego o MT4, carrego um modelo, desenho linhas de tendência, e quando eu troco os TFs, as linhas desaparecem, inclusive não são exibidas no prazo original também. Ao mesmo tempo, todos os outros gráficos ( linhas horizontais, verticais, canais, todas as Fibos, etc.) funcionam bem. Em um gráfico limpo ("sem modelo"), o layout é preservado completamente, os mesmos induladores estavam funcionando bem antes. Os Consultores Especialistas e Consultores Especializados foram desativados. Eu trabalho principalmente na tabela, me ajude!!!

 

Olá,

Como faço para que minha EA não feche um negócio antes de 3 min?

Alguém pode aconselhar o que e onde prescrever?

 
Vinin писал(а) >>

Você tem que começar com a lógica. O que você queria obter e como você queria obtê-lo.

Bem, a lógica está nos comentários...

Retirei os retornos e foi assim:

//попытка сделать функцию: отключение всех  индикаторов и разрешение только Бай или Селл в зависимости от того, 
//что закуплено, когда баланс снижается на заданный процент
//второй вариант:

bool fOffInd(){
int i, b, s;
   if( UT_AutoOf==1){
   //если баланс снизился на LossIndikator процентов
       if( gProfit<=((-1.0)* LossIndikator*AccountBalance())/100.0){
          Print ("Включен автореверс UT_!");
          UT_ON=0; //выключатель индикатора, 0-контроль отключен
          VRF_ON=0;//выключатель индикатора, 0-контроль отключен
     //выбираем открытые ордера Бай       
   for( i=1; i<=OrdersTotal(); i++){        
      if(OrderSelect( i-1, SELECT_BY_POS)==true){   
           if(OrderType()==OP_BUY && OrderSymbol()==Symbol()){ b= b+1;}
          }   
        }
   //выбираем открытые ордера Селл     
   for( i=1; i<=OrdersTotal(); i++){        
      if(OrderSelect( i-1, SELECT_BY_POS)==true){   
           if(OrderType()==OP_SELL && OrderSymbol()==Symbol()){ s= s+1;}
          }   
        }
   //если открытых Бай больше чем Селл, то включаем запрет торговли Бай     
       if( s>= b){ CloseAllBuyNow  = true;
        MaxCount = b;
         Print ("Автореверс. Работаем только Селл!");
          }
       else{
   //если открытых Селл больше чем Селл, то включаем запрет торговли Селл    
       if( b>= s){ CloseAllSellNow = true;
        MaxCount = s;
         Print ("Автореверс. Работаем только Бай!");
             }
           }
           return(false);
         }
       }
       else{
       //все индикаторы должны быть включены и запрет на Бай и Селл снят
          UT_ON=1;
          VRF_ON=1;
          CloseAllBuyNow  = false;
          CloseAllSellNow = false;
    }
   return(0);    
} 
Parece funcionar, mas não sei se o código está correto... Se algo está errado, alguém pode corrigi-lo?
Razão: