Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 742

 
psyman:


Muchas gracias, mañana pensaré en la forma de sustituir iTime e iClose, ya que estoy sentado en XP.

//+------------------------------------------------------------------+ 
//| Get Time for specified bar index                                 | 
//+------------------------------------------------------------------+ 
datetime iTime(const int index,string symbol=NULL,ENUM_TIMEFRAMES timeframe=PERIOD_CURRENT)
  {
   if(symbol==NULL)
      symbol=m_symbol.Name();
   if(timeframe==0)
      timeframe=Period();
   datetime Time[1];
   datetime time=0;
   int copied=CopyTime(symbol,timeframe,index,1,Time);
   if(copied>0) time=Time[0];
   return(time);
  }
//+------------------------------------------------------------------+
 

¿Cómo puedo compilar una función independiente, por ejemplo, de arrastre, para que pueda ser llamada -importada desde los EA?

similar a .mqh o dll

 
demonRDV:

Hola a todos.

¿Me pueden decir por qué no puedo entrar en sus propiedades cuando el EA está funcionando? Antes sí, pero ahora no puedo abrir las propiedades. Reiniciar el terminal ayudó una vez, pero el problema volvió a aparecer al cabo de un minuto. El Asesor Experto es fresco, el terminal también está trabajando recientemente. ¿Cuál es el problema con las propiedades de EA?

Gracias.

lo más probable es que se haga un bucle sin comprobar las interrupciones.
¿Tienes el código fuente? ¿Había algún problema con este EA antes?

 
Ghabo:

¿Cómo compilar una función independiente, por ejemplo, de arrastre, para que pueda ser llamada -importada desde los EA?

de forma similar a como se llama el .mqh

así.

en la EA
#include <trall.mqh>

y directamente en el código llamar a la función trall, por ejemplo

int trall_size = 20;
int trall_start = 30;
int trall_step = 5;


trall("",0,-1, trall_size, trall_start, trall_step); // trall("); // trall de todas las órdenes de la cuenta con los parámetros establecidos

int magia = 345;
trall(_Símbolo,magic, OP_BUY, trall_size, trall_start, trall_step); // trall sólo compra órdenes sobre el símbolo actual con la lentitud especificada

Archivos adjuntos:
trall.mqh  27 kb
 
Maxim Kuznetsov:

Pulse la tecla de acceso directo F7 :-)

El ratón sobre el icono del EA no siempre funciona - el icono puede ser superpuesto por otros objetos y el EA carga la cola de mensajes y 100500 otras razones

Sé lo que es. No ayuda )
 
Nikolay Khrushchev:

algo así.

en el asesor
#include <trall.mqh>

Me refiero a que el archivo de arrastre debe ser compilado por separado y tener la extensión ex4.

#include <trall.ex4>

o

#import "trall.ex4"
    ...
    ...
    ...
#import
¿Qué debe insertarse dentro de lapropia función de arrastre?
 
Ghabo:

Me refería a que hay que compilar el archivo de arrastre.

o

¿Qué debe insertarse dentro de lapropia función de arrastre?

¿Por qué necesitas esa perversión? ¿No es más fácil escribir la función en el EA o como se sugirió con el archivo .mqh?

¿O hay un Asesor Experto con la red de arrastre, pero no hay fuente? Pero si no hay un modificador de exportación después del nombre de la función, será imposible importarla a otro EA.

Otra desventaja de este tipo de bibliotecas es que tienen que ser arrastradas a un nuevo terminal junto con el EA. Y si usas el archivo de inclusión .mqh, entonces puedes copiar sólo el EA compilado a otra terminal.

Экспортирование функций - Функции - Основы языка - Справочник MQL4
Экспортирование функций - Функции - Основы языка - Справочник MQL4
  • docs.mql4.com
Экспортирование функций - Функции - Основы языка - Справочник MQL4
 
Alexey Viktorov:

¿Por qué la perversión?

Es un fetiche).

Ya está, eso debería funcionar.

#property strict
void trall(string tr_symbol, int tr_magic, int tr_type, double tr_trall_size, double tr_trall_start, double tr_trall_step=1) export {
   if(tr_type>1) return;
   int ti;
   for(ti=OrdersTotal()-1;ti>=0;ti--) if(OrderSelect(ti,SELECT_BY_POS,MODE_TRADES)) {
      if(OrderSymbol()!=tr_symbol && tr_symbol!="") continue;
      if(OrderMagicNumber()!=tr_magic && tr_magic>0) continue;
      if(tr_type>=0 && OrderType()!=tr_type) continue;
      double work_price;
      double work_pp = SymbolInfoDouble(_Symbol,SYMBOL_POINT);
      int    work_dig = SymbolInfoInteger(_Symbol,SYMBOL_DIGITS);
      if(tr_trall_size>0) {
         if(OrderType()==0) {
            work_price = SymbolInfoDouble(_Symbol,SYMBOL_BID);
            if(NormalizeDouble(work_price-(tr_trall_size+tr_trall_step)*work_pp, work_dig)>NormalizeDouble(OrderStopLoss(), work_dig) && 
               NormalizeDouble(work_price-tr_trall_start*work_pp, work_dig)>=NormalizeDouble(OrderOpenPrice(), work_dig)) 
                  OrderModify(OrderTicket(),-1,0,NormalizeDouble( work_price-tr_trall_size*work_pp, work_dig),-1,-1);
            }
         if(OrderType()==1) {
            work_price = SymbolInfoDouble(_Symbol,SYMBOL_BID);
            if((NormalizeDouble(work_price+(tr_trall_size+tr_trall_step)*work_pp,work_dig)<NormalizeDouble(OrderStopLoss(),work_dig) || OrderStopLoss()==0) && 
               NormalizeDouble(work_price+tr_trall_start*work_pp,work_dig)<=NormalizeDouble(OrderOpenPrice(),work_dig)) 
                  OrderModify(OrderTicket(),-1,0,NormalizeDouble(work_price+tr_trall_size*work_pp, work_dig),-1,-1);
         }
      }
   }
}

¿o lo estoy poniendo en el lugar equivocado?

 
Ghabo:

Es un fetiche).

Ya está, eso debería funcionar.

¿O lo estoy poniendo en el lugar equivocado?

Parece que está en el lugar equivocado. Tienes que averiguar cómo poner la importación entre comillas o entre corchetes. Depende de la ubicación de este archivo en la carpeta de Bibliotecas o en el mismo lugar que las funciones de importación del Asesor Experto de esta biblioteca. Hace tiempo que experimenté con esto y no me acuerdo, y ahora lo siento, me da pereza buscar cómo hacerlo.
 
psyman:


Muchas gracias, mañana pensaré en algo que sustituya a iTime y a iClose ya que estoy sentado en XP.

Aquí, código puro para la etiqueta. Se ejecuta después del precio de oferta de cualquier manera, de cualquier manera cuando se desplaza el gráfico, de cualquier manera después de cambiar los gráficos. Se ejecuta detrás de la retícula y recuerda el desplazamiento establecido de esta manera, continuando la navegación hacia la Oferta después.

PD incluso ya he cambiado la hp recientemente ya que todo empieza a fallar, algunos sitios requieren actualización del navegador y no se puede actualizar en la hp,

Yo también estoy harto de limitar la RAM a 3,7gb.

xp no tiene soporte para probar los búhos en todos los núcleos de la CPU

Archivos adjuntos: