[¡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 888

 
Multy:

Ya veo.

Por cierto, ¿hay un temporizador en MQL4 o sólo en MQL5?

Probablemente sólo estas funciones:

https://www.mql5.com/ru/search?utm_campaign=MQL4.community

https://www.mql5.com/ru/search?utm_campaign=MQL4.community
 
kwadrad:

Pregunta para los aksakales

El probador ha dejado de funcionar repentinamente, sin rascar ningún dato histórico.

¿Qué debo hacer con él?

para su información: el archivo de citas fue descargado


Me ayudó a reiniciar el terminal y eliminar las citas descargadas de antemano en la carpeta: C:\N-Archivos de Programa\N-MetaTrader - Alpari\history\N-Alpari-Micro2

luego volvió a descargar el archivo de citas

 
Noterday:
¿Puede decirme la función que calcula el volumen máximo posible de apertura de pedidos?
Déjame darte una vara... :)
La función que aparece a continuación tiene todos los datos necesarios para calcular los parámetros que necesitas. Soy tan perezoso que ni siquiera puedo golpear las teclas...

Puedes encontrar lo que necesitas y modificarlo tú mismo... El código en sí es tan sencillo y accesible que nadie tendrá problemas para rehacerlo...

// ==========================================================================
// ------------ Функция рассчёта величины лота для открытия позиции ---------
// Если лот превышает возможный для открытия позы, то он корректируется 
// ==========================================================================

double CorrectLots(double lt, double divider=4.0)        // lt = проверяемый лот, divider = на сколько разделить
{                                                        //                                 свободные средства
   double ltcorr;
   double pnt =      MarketInfo(Symbol(),MODE_POINT);
   double mspr =     MarketInfo(Symbol(),MODE_SPREAD);
   double dig =      MarketInfo(Symbol(),MODE_DIGITS);
   double MaxLot =   MarketInfo(Symbol(),MODE_MAXLOT);
   double MinLot =   MarketInfo(Symbol(),MODE_MINLOT);
   double StpLot =   MarketInfo(Symbol(),MODE_LOTSTEP);
   double OneLot =   MarketInfo(Symbol(),MODE_MARGINREQUIRED);
   double TradeMrg = NormalizeDouble(AccountFreeMargin()/divider,dig);  // Свободные средства, разрешенные к торговле
   
   lt=MathAbs(lt);
   ltcorr=lt;                       // Зададим начальное значением ltcorr равным значению lt
   
   if (lt>=MaxLot) ltcorr=MaxLot;   // Проверим превышение допустимых ...
   if (lt<=MinLot) ltcorr=MinLot;   // ... значений лота
   
   double Money=lt*OneLot+mspr*pnt; // Вычисляем стоимость открываемой позы

   if (Money<TradeMrg)              // Если свободных средств больше, чем цена позиции - 
      {
         return(ltcorr);                                                         // ... возвращаем неизменённый лот
      }
   else if (Money>=TradeMrg)        // Если цена позиции равна или больше, чем есть свободных средств, то ...
      {
         ltcorr=MathAbs(MathFloor(TradeMrg/OneLot/StpLot)*StpLot);               // ... рассчитаем допустимый лот
         double MoneyCorr=ltcorr*OneLot+mspr*pnt;                      
         Print("Func CorrectLots: лот ",lt," скорректирован до ",ltcorr,
               " Стоимость позы до корректировки = ",Money,
               " Стоимость позы после корректировки = ",MoneyCorr
               ); 
         return(ltcorr);                                                         // ... и вернём его значение
      }
   Print("Func CorrectLots: лот вернули без изменений");
   return(ltcorr);                 // Возврат изначального лота в непредусмотренных случаях с сообщением
}

Una pregunta...

¿Por qué necesitas un comercio como el de Hitler al final de la guerra... Reclutó a niños en las Juventudes Hitlerianas, por así decirlo, la carne por un tiro del cartucho de Fausto...

No suena ninguna campana?????

En mi opinión, por supuesto...

 
artmedia70:
Déjame darte una vara... :)
La función siguiente tiene todos los datos para calcular los parámetros que necesitas. Soy tan vago que ni siquiera puedo golpear las teclas...

Puedes encontrar lo que necesitas y modificarlo tú mismo... El código en sí es tan sencillo y accesible que nadie tendrá problemas para rehacerlo...

Una pregunta...

¿Por qué necesita un comercio como el de Hitler al final de la guerra... Reclutó a niños en las Juventudes Hitlerianas, por así decirlo, la carne por un disparo del cartucho de Fausto...

No suena ninguna campana?????

En mi opinión, por supuesto...


Gracias.

No se va a abrir con el volumen máximo, sólo hay que calcularlo en función del tamaño del Depósito, para posteriores operaciones matemáticas =))

 
Noterday:

Gracias.

No voy a abrir con el volumen máximo, sólo necesito calcularlo en base al tamaño del Depo para posteriores operaciones matemáticas =))



para comprar:

NormalizeDouble(AccountFreeMargin()-AccountFreeMarginCheck(Symbol(),OP_BUY,lot),2)

Para vender:

NormalizeDouble(AccountFreeMargin()-AccountFreeMarginCheck(Symbol(),OP_SELL,lot),2);

lote - la variable que contiene el volumen de la orden

el resultado del cálculo debe comprobarse si es >0

https://www.mql5.com/ru/search

 
IgorM:


para comprar:

NormalizeDouble(AccountFreeMargin()-AccountFreeMarginCheck(Symbol(),OP_BUY,lot),2);

Para vender:

NormalizeDouble(AccountFreeMargin()-AccountFreeMarginCheck(Symbol(),OP_SELL,lot),2);

lote - variable con el volumen del pedido

https://www.mql5.com/ru/search

... Bueno, Igor, estás apurado... :)

Antes de que tuviera tiempo de poner los dedos en el teclado, ya me habías respondido... :)

 
Gracias a todos.
 

¡Hola!

Puedes sugerir un código o una rama sobre cómo memorizar los cruces de líneas indicadoras con el precio. lo he visto en algún sitio, pero no lo encuentro. Lo vi en algún sitio pero no lo encuentro.

No sé si me interesa, pero me interesa más algo así:

int start()

  { 

 double LineX = iCustom ("EURUSD", Period_H1, "Indicator",0,0);

 double lineY = iCustom ("EURUSD", Period_H1, "Indicator",1,0);

double priceA = Ask;

double priceB = Bid;

double intersectionX = (LineX == priceA) ;

double intersectionY = (LineY == priceB) ;

// а так же еще определить, какое пересечение последнее, а какое предпоследние 

// intersectionX = последнее пересечение и на оборот
// intersectionY = предпоследние пересечение и на оборот

// то есть я понимаю логику, а  вот связать в коде не могу.
 
//произошло intersectionX,   то intersectionFirst = intersectionX; intersectionSecond = intersectionY;

// произошло intersectionY, то intersectionFirst = intersectionY; intersectionSecond = intersectionX;


 }
 
belck:

¡Hola!

Puedes sugerir un código o una rama sobre cómo memorizar los cruces de líneas indicadoras con el precio. lo he visto en algún sitio, pero no lo encuentro. Lo vi en algún sitio pero no lo encuentro.

Quiero saber si la línea indicadora ha cruzado el precio, pero me interesa más esto:


cualquier cruce se considera mejor como una diferencia entre el precio (Ask/Bid) y la línea del indicador, es decir

if (Ask-iCustom ("EURUSD", Period_H1, "Indicator",0,0) > 0) Comment("Precio por encima del indicador"); else Comment("Precio por debajo del indicador");

Si se compara la diferencia de estos valores, no es necesario normalizarlos para una comparación adecuada

particularmente a su pregunta - un cruce de la línea del indicador por el precio es ese momento cuando la diferencia Ask- -iCustom() estaba por debajo de cero durante el cálculo anterior y luego se puso más alto, o viceversa

La forma de calcular este momento es asunto suyo - tal vez en la barra anterior, o en cada tick, pero tales combinaciones:

double intersectionX = (LineX == priceA) ;

double intersectionY = (LineY == priceB) ;
Se adentrará en el laberinto de las matemáticas discretas más rápido de lo que puede obtener el resultado que desea: la expresión entre corchetes será 0 o 1, lo que corresponde a la representación numérica de falso y verdadero
 
IgorM:


cualquier cruce se considera óptimamente como la diferencia del precio (Ask/Bid) y la línea del indicador, es decir

if (Ask-iCustom ("EURUSD", Period_H1, "Indicator",0,0) > 0) Comment("Precio por encima del indicador"); else Comment("Precio por debajo del indicador");

Si se compara la diferencia de estos valores, no es necesario normalizarlos para una comparación adecuada

particularmente a su pregunta - un cruce de la línea del indicador por el precio es ese momento cuando la diferencia Ask- -iCustom() estaba por debajo de cero durante el cálculo anterior y luego se puso más alto, o viceversa

La forma de calcular este momento es asunto suyo: puede ser en la barra anterior, o en cada tic, pero tales combinaciones:

Se adentrará en el laberinto de las matemáticas discretas más rápido de lo que puede obtener el resultado que desea: la expresión entre corchetes será 0 o 1, lo que corresponde a la representación numérica de falso y verdadero

Es decir, si entiendo bien, puedo hacer esto:

bool intersectionX = FALSE,
     intersectionY = FALSE;
int start()

  { 
if  (Ask-iCustom ("EURUSD", Period_H1, "Indicator",0,0) == 0)  {
intersectionX = TRUE;
intersectionY = FALSE;
}
if  (iCustom ("EURUSD", Period_H1, "Indicator",1,0)-Bid == 0) {
intersectionY = TRUE;
intersectionX = FALSE;
}
}
и я потом смогу intersectionY использовать только тогда когда оно TRUE, если FALSE, то такой код (intersectionY > Ask) не сработает, правильно я понимаю!?
Razón de la queja: