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

 
ANDREY:

¡Buenos días a todos!

He empezado a estudiar mql5. Empecé estudiando cómo se abren los pedidos. Tengo entendido que el código para abrir una orden se escribe en un archivo de inclusión separado. Ahora domino este código y su variante final para el comercio. Me ha sorprendido que la apertura de pedidos en mql4 es mucho más fácil y sencilla que en mql5.

Me gustaría preguntar si estoy seguro de que ya tengo el archivo con el código para abrir la orden y no necesito escribir este código. Si dicho archivo está disponible en algún lugar, entonces sólo tengo que conectarlo a mi EA y establecer los valores de los parámetros de la orden que necesito? Si existe tal archivo, dónde y cómo debe encontrarse, y cuál es su nombre.

Gracias.

Si te he entendido bien, es #include <Trade\Trade.mqh>.

Archivos adjuntos:
ng4txc.PNG  116 kb
15vegf1.PNG  114 kb
 
SanAlex:

Si te he entendido bien, es #include <Trade\Trade.mqh>.

Muchas gracias por esta valiosa información.

¿Entiendo correctamente que no tengo que buscar estos archivos en ningún sitio, sino que basta con escribir en el lugar adecuado del código #include <Trade\Trade.mqh> y este archivo se incorporará automáticamente a mi Asesor Experto y éste accederá a él cuando lo necesite?

 
ANDREY:

Muchas gracias por la valiosa información.

Entiendo correctamente que no tengo que buscar estos archivos en ningún sitio, sino que basta con escribir en el lugar adecuado del código #include <Trade\Trade.mqh> y este archivo se incorporará automáticamente a mi EA y éste accederá a él cuando lo necesite?

¡Sí! No tienes que buscarlo, ya está ahí.

Puede ver el archivo de código(Moving Averages.mq5 o MACD Sample.mq5), desde la terminal.

 
SanAlex:

¡Sí! No tienes que buscarlo, ya está ahí.

Muchas gracias por la valiosa información.
Si he entendido bien el archivo que me han enviado se llama CLASE Este archivo está destinado a la apertura de un pedido. Creo que hay muchas CLASES y cada una tiene su propio propósito, por ejemplo para cerrar la orden, para modificar la orden, para emitir alguna información, etc.

PREGUNTA ¿Dónde puedo encontrar una lista de todas las clases con sus descripciones detalladas?
Gracias de nuevo por su ayuda.

 
ANDREY:

Muchas gracias por la valiosa información.
Si he entendido bien el archivo que me has enviado se llama CLASS Este archivo es para abrir un pedido. Creo que hay muchas CLASES y cada una tiene su propósito específico, por ejemplo, cerrar una orden, modificar una orden, emitir alguna información, etc.

P: ¿Dónde puedo encontrar una lista de todas las clases con sus descripciones detalladas?
Gracias de nuevo por su ayuda.

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека MQL5 написана на языке MQL5 и предназначена для облегчения написания программ (индикаторов, скриптов, экспертов) конечным пользователям. Библиотека обеспечивает удобный доступ к большинству внутренних функций MQL5.
 
Artyom Trishkin:

Muchas gracias por la valiosa información. Ahora empezaré a digerirlo, es decir, a asimilar ..... en lo que respecta a mi capacidad mental.

 
ANDREY:

¡Buenos días a todos!

He empezado a estudiar mql5. Empecé estudiando cómo se abren los pedidos. Tengo entendido que el código para abrir una orden se escribe en un archivo de inclusión separado. Ahora domino este código y su variante final para el comercio. Me ha sorprendido que la apertura de pedidos en mql4 es mucho más fácil y sencilla que en mql5.

Me gustaría preguntar si estoy seguro de que ya tengo el archivo con el código para abrir la orden y no necesito escribir este código. Si dicho archivo está disponible en algún lugar, entonces sólo tengo que conectarlo a mi EA y establecer los valores requeridos para los parámetros de la orden? Si existe tal archivo, dónde y cómo debe encontrarse, y cuál es su nombre.

Gracias.

Tengo un enfoque diferente para escribir un EA para mí. Sólo tengo que corregirlo por mí mismo.

-( por qué reinventar la rueda cuando ya está creada )

----------------------------------------------------------------------

aquí es donde recogemos los Indicadores

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit(void)
  {
//--- prepare trade class to control positions if hedging mode is active
   ExtHedging=((ENUM_ACCOUNT_MARGIN_MODE)AccountInfoInteger(ACCOUNT_MARGIN_MODE)==ACCOUNT_MARGIN_MODE_RETAIL_HEDGING);
   ExtTrade.SetExpertMagicNumber(MA_MAGIC);
   ExtTrade.SetMarginMode();
   ExtTrade.SetTypeFillingBySymbol(Symbol());
//--- Moving Average indicator
   ExtHandle=iMA(_Symbol,_Period,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE);
   if(ExtHandle==INVALID_HANDLE)
     {
      printf("Error creating MA indicator");
      return(INIT_FAILED);
     }
//--- ok
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+

y aquí los configuramos para que los indicadores se abran correctamente según la señal

//+------------------------------------------------------------------+
//| Check for open position conditions                               |
//+------------------------------------------------------------------+
void CheckForOpen(void)
  {
   MqlRates rt[2];
//--- go trading only for first ticks of new bar
   if(CopyRates(_Symbol,_Period,0,2,rt)!=2)
     {
      Print("CopyRates of ",_Symbol," failed, no history");
      return;
     }
   if(rt[1].tick_volume>1)
      return;
//--- get current Moving Average 

   double   ma[1];
   if(CopyBuffer(ExtHandle,0,0,1,ma)!=1)
     {
      Print("CopyBuffer from iMA failed, no data");
      return;

     }
//--- check signals
   ENUM_ORDER_TYPE signal=WRONG_VALUE;

   if(rt[0].open>ma[0] && rt[0].close<ma[0])
      signal=ORDER_TYPE_SELL;    // sell conditions
   else
     {
      if(rt[0].open<ma[0] && rt[0].close>ma[0])
         signal=ORDER_TYPE_BUY;  // buy conditions
     }
//--- additional checking
   if(signal!=WRONG_VALUE)
     {
      if(TerminalInfoInteger(TERMINAL_TRADE_ALLOWED) && Bars(_Symbol,_Period)>100)
         ExtTrade.PositionOpen(_Symbol,signal,TradeSizeOptimized(),
                               SymbolInfoDouble(_Symbol,signal==ORDER_TYPE_SELL ? SYMBOL_BID:SYMBOL_ASK),
                               0,0);
     }
//---
  }
//+------------------------------------------------------------------+
 
Artyom Trishkin:

Para ayudarme a entender mejor MQL5, estaría muy agradecido si pudierais traducir este sencillo código de MQL4 a código MQL5

Gracias por la ayuda.

int s1,SL,a;
double Lou=Bid,Hay,DL=0.0030;
void OnTick()
{
if (Bid < Lou)
{
Lou=Bid;
}
if (Bid > Hay)
Hay=Bid;
if (Bid - Lou > DL&& Lou!=0)
{
Lou=Bid;
Hay=Bid;
s1=1;
}
////=======================
if (Hay-Bid>0.0000)
if (s1==1)
{
for(int c=0; c<=500;c+=20)
{
a++;
{
SL=300+c;
OrderSend(Symbol(),OP_SELL,0.1,Bid, 3,Ask+SL*Point,Ask-SL/3*Point,"300",100);
Lou=Bid;
Hay=Bid;
}
}
a=0;
s1=0;
}
}
 

numPosOr= 4;

numStepCount= 1;

iK = (numPosOr - numStepCount) / numPosOr;

¿Por qué este cálculo hace queiK = 0?

 
Sysmart:

numPosOr= 4;

numStepCount= 1;

iK = (numPosOr - numStepCount) / numPosOr;

¿Por qué este cálculo hace queiK = 0?

Por favor, dame el código completo