Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 514

 
Mr.Profit:

¡Buenas tardes!

¿Cómo luchar contra el "MetaEditor no encontrado" al intentar editar un EA? MetaTrader build 600.

Me parece que no recuerdo un problema semejante en las construcciones más antiguas...

Puede explicarse por el hecho de que el ordenador en el que estoy trabajando es bastante poco potente y se carga el 50-75% del tiempo. Tengo 7 instancias de MT4 funcionando en él, pero en condiciones normales (es decir, sin carga externa como el acceso a través de TeamViewer y tratando de lanzar MetaEditor) su rendimiento es suficiente, y el Administrador de Tareas que se ejecuta en segundo plano muestra el uso de la CPU avg <=45-50% durante 15-20 min.

Este problema no se produce en el 100% de los casos y el MetaEditor, tras hacer gala de una paciencia y persistencia poco comunes, se ejecutará siempre a partir de la 5ª-10ª-25ª vez. Pero es realmente molesto intentar iniciar MetaEditor durante media hora.

Si tiene estas preguntas, debería dirigirse al hilo de construcción del 610: los desarrolladores están allí
 
r772ra:



Gracias.

Por favor, avisa, siempre y cuando no hayas puesto ninguna valla.

¿Qué se puede simplificar?

input int    Slippage   = 10;   // установим значение проскальзывания 
extern string ___START_SETUP_ = "---ОСНОВА---";  
input double StartLot   = 0.02; 
extern double LotMultiplicator = 1.3;
extern int N_LotMult = 2;
extern string ___STEP_SETUP_BLOK_ = "--- БЛОК УСЛОВИЙ СЕТКИ ---";
extern int Mode_Step = 1;
extern int Step = 5;
extern int StepUv_Step = 5;
extern string ___CLOSE_SETUP_BLOK_ = "--- БЛОК УСТАНОВОК ЗАКРЫТИЯ ---";
extern int TakeProfit = 40;


double z,y, lot=StartLot, count, step=Step;

  
void OnTick()
  {  
   
     int i_buy=0; int i_sell=0;
     for(int i=0;i<OrdersTotal();i++){
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true && OrderSymbol()==Symbol()){
              switch(OrderType()){// Есть ли открыте ордера
                 case OP_BUY:
                    i_buy++;
                 break;
                 case OP_SELL:
                    i_sell++;
                 break;
               }
               
              y = int((OrderOpenPrice()-Ask)/Point); 
              z = OrderLots();
              
              count++;            
          }   
     }
    
     if(LotMultiplicator > 1 && count > N_LotMult) lot = z + z/LotMultiplicator;    
     if(Mode_Step==1) step = Step + count*StepUv_Step;

     if((i_buy==0 && i_sell==0) || y >= step) //--- нет открытых ордеров, открываем
         OrderSend(Symbol(), OP_BUY,lot,Ask,Slippage,0,Ask+TakeProfit*Point(),WindowExpertName()+" "+(string)0,0,0,clrBlue);
     
       count=0;
   
 
Zolotai:


Gracias.

Por favor, avisa, siempre y cuando no hayas puesto ninguna valla.

¿Qué se puede simplificar?


Por favor, aprenda a insertar el código correctamente. CTRL+ALT+M o SRC.
 
evillive:
Por favor, aprenda a insertar el código correctamente. CTRL+ALT+M o SRC.

Hecho.
 
Zolotai:


Spc.

Por favor, avisa, siempre y cuando no hayas puesto ninguna valla.

¿Qué se puede simplificar?


¿Y no hay errores de compilación? ¿Y tampoco hay errores de ejecución?

Primero describa lo que quiere obtener. Porque hay preguntas sobre algunos lugares del código:

 y = int((OrderOpenPrice()-Ask)/Point); //подставьте в уравнение реальные цены
if((i_buy==0 && i_sell==0) || y >= step) //--- нет открытых ордеров, открываем открывает позицию всегда когда y >= step, а это будет практически всегда по формуле выше, за исключением коридора шириной в "step"
 
evillive:

¿Y no hay errores de compilación? ¿Y tampoco hay errores de ejecución?

En primer lugar, describa lo que quiere terminar, porque hay preguntas sobre algunos lugares del código:




¿Hay algo que se pueda simplificar? Tal vez algunas variables adicionales... Lo único que tengo ahora es abrir por pasos, aumentar el lote y ya está. Todavía no necesito TP. ¿Es posible hacerlo un poco más simple, menos código...
 
¿Hay mucho de él? No hay nada que simplificar ahí, al contrario, debería agravarse )))
 
evillive:
¿Hay mucho de él? No hay nada que simplificar ahí, al contrario, debería agravarse )))

Gracias. Podría sugerir una función. Si quiero colocar una orden de parada y retirada con la última orden, entonces la primera orden será promediada. La penúltima orden con la primera y así sucesivamente. Como si fuéramos al centro...
 
Estoy seguro de que hay muchos internautas en la kodobase: medianos, martins, antimartins, para todos los gustos.
 
evillive:
Estoy seguro de que hay muchos internautas en la kodobase: medianos, martins, antimartins, para todos los gustos.

Sí, pero, ya sabes. Hay que hurgar en los códigos de los demás. Lo cual no entiendo, y lleva mucho tiempo Para entenderlo.
Razón de la queja: