[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 404

 
Vinin писал(а) >>

Cruzar es más fácil y rápido de comprobar de otra manera

La velocidad es mayor. Las expresiones lógicas complejas tardan más en ejecutarse que las simples. La multiplicación es más rápida que la lógica

Gracias Vinin, ¿qué pasa con el número de operaciones, puede escribirlos para ser sólo 1,2...N, después de cruzar la MA.

 
Vinin >>:

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

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

otra opción, pero no creo que el que pregunta lo entienda todavía

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

Gracias Vinin, ¿qué pasa con el número de operaciones, es posible escribirlos sólo 1,2...N, después de MA cruce.

Al parecer, debemos considerar condiciones adicionales para la entrada.

Y cuenta el número de puestos abiertos.

Pero tendrá poca relación con los cruces.

Porque puede que en un caso sólo haya habido una señal, y en el segundo, diez.

Pero primero debemos determinar las condiciones para una entrada adicional.

 
Vinin писал(а) >>

Al parecer, hay que tener en cuenta otras condiciones de entrada.

Y cuenta el número de puestos abiertos.

Pero tiene poca relación con el cruce.

Porque puede que en un caso sólo haya habido una señal, y en el segundo, diez.

Pero primero debemos definir las condiciones para la entrada adicional

Vale, intentaré mirar más a fondo, muchas gracias a Vilin y a sanyooooook por la ayuda.

 

double Lots;
double m = 0.1;


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

¿Por qué mis Lotes siempre resultan ser cero?

 
Noterday >>:

double Lots;
double m = 0.1;


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

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


¿Se ejecuta el bucle o se sale inmediatamente de él por la condición?

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

La expresión1 describe la inicialización del bucle. La expresión2 es una comprobación de la condición de finalización del bucle. Si es verdadero, se ejecuta el cuerpo del bucle for. Todo se repite hasta que la expresión2 sea falsa. Si es falso, el bucle se termina y el control se da al siguiente operador. La expresión3 se calcula después de cada iteración.
for(expresión1; expresión2; expresión3)
operador;

 
Al parecer, sale directamente... Poner una alerta en el bucle - nada...
 

Buenas noches. Tengo un problema con el terminal, no puedo arreglarlo de ninguna manera:

Cargo MT4, cargo una plantilla, dibujo líneas de tendencia, y cuando cambio de TF, las líneas desaparecen, incluso tampoco se muestran en el marco temporal original. Al mismo tiempo, el resto del gráfico ( líneas horizontales, verticales, canales, todos los Fibos, etc.) funciona bien. En un gráfico limpio ("sin plantilla"), el diseño se conserva completamente, todo funcionaba bien antes en los mismos induladores. Los Asesores Expertos y los Asesores Expertos han sido desactivados. Trabajo principalmente en el gráfico, ¡¡¡ayúdame!!!

 

Hola,

¿Cómo puedo hacer que mi EA no cierre una operación antes de 3 minutos?

¿Alguien puede aconsejar qué y dónde recetar?

 
Vinin писал(а) >>

Hay que empezar por la lógica. Qué querías conseguir y cómo querías conseguirlo.

Bueno, la lógica está en los comentarios...

Saqué las devoluciones y fue así:

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

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 que funciona, pero no sé si el código es correcto... Si algo está mal, ¿alguien puede corregirlo?