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

 
Igor Makanu:

La ayuda de MQL es la misma que la de otros lenguajes

y asume que tienes al menos algo de experiencia básica en la escritura de códigos simples

por eso la palabra "// placeholder" la mayoría de la gente ni siquiera lo prueba y lo comprueba.

ushortfill_symbol='filler'// relleno

Eso es todo.

 
awsomdino:

¿Significa esto que aquí y en casos como este se puede omitir este campo?

como

(es decir, lo correcto que es usarlo)

y el segundo parámetro puede omitirse.

No, no es eso.

existe el concepto de "valor por defecto" - debería leerlo en la ayuda, donde se explica el término "función".

pero usar" el valor por defecto" es simple: si la ayuda en la descripción de la función tiene un signo = , entonces este es el valor por defecto, y si no escribe nada en este lugar, el compilador usará el valor escrito en la ayuda

string  IntegerToString(
   long    number,              // число
   int     str_len=0,           // длина строки на выходе
   ushort  fill_symbol=' '      // заполнитель
   )
 

@Igor Makanu

Gracias, ahora se han aclarado muchas cosas. Sin el conocimiento inicial es difícil hacer todo

 
Artyom Trishkin:

Una media móvil simple con período 14, desplazamiento 0, calculada a partir de los precios de cierre en el gráfico diario del símbolo actual. Tomamos el valor de la primera barra (el cero es el día actual):

¿Hay alguna manera de obtener rápidamente en las medias móviles el precio en el medio entre la apertura y el cierre con 0 desplazamiento, es decir, la barra actual? O es que es complicado, no hay variables preparadas para esta función.

 

Buenos días a todos.

Al cerrar parcialmente una orden, aparece en la ventana de alerta el mensaje "Error de OrderClose (28800839, 0.01) (método: CloseOrderPartial) - la operación no está permitida en las propiedades del experto".

Sin embargo, en realidad se está cerrando una parte de la orden correcta y el EA está realizando correctamente tanto la apertura como el cierre de la orden. No encontré tal error en la documentación y tampoco en los foros. La traducción del error dice que 'el EA no puede operar' pero podemos ver que en realidad no es así y el EA está operando.

¿Quizás alguien se ha enfrentado a un problema así?

Código del método de cierre parcial

//Закрытие ордера на продажу
//NumberOrder = тикет ордера, 0 - закрытие всех ордеров
//ValueClose = объем закрытия ордера
bool CloseOrderSell(int NumberOrder, double ValueClose)
{
   if (NumberOrder == 0)
   {
      for (int i = OrdersTotal() - 1; i >= 0; i--)
         if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
         {
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL)
            {
               if(OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, clrMaroon) == false)
               {
                  Print("Ошибка #" + (string)GetLastError() + " закрытия ордера на продажу #" + (string)OrderTicket());    
                  return false;       
               }
               else
               {
                  if (EnableMgs == true)
                     Print("Ордер на продажу #"+ (string)OrderTicket() +" закрыт на " + (string)ValueClose + " лота");
                  return true;            
               }         
            }      
         }
   }
   else
   {
      if (OrderSelect(NumberOrder, SELECT_BY_TICKET) == true)
      {
         ValueClose = NormalizeDouble(ValueClose * OrderLots(), 2);
         if(OrderClose(OrderTicket(), ValueClose, Ask, Slippage, clrMaroon) == false)
         {
            Print("Ошибка #" + (string)GetLastError() + " закрытия ордера на продажу #" + (string)OrderTicket());   
            return false;
         }
         else
         {
            if (EnableMgs == true)
               Print("Ордер на продажу #"+ (string)OrderTicket() +" закрыт на " + (string)ValueClose + " лота");
            return true;
         } 
      }
      else
         Print("Ошибка #" + (string)GetLastError() + " выбора ордера на продажу #" + (string)NumberOrder + " при закрытии ордера");
   }
   return false;
} 
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация о запущенной MQL5-программе
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация о запущенной MQL5-программе
  • www.mql5.com
Константы, перечисления и структуры / Состояние окружения / Информация о запущенной MQL5-программе - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Seric29:

¿Hay alguna manera de obtener rápidamente el precio en el medio entre la apertura y el cierre con un desplazamiento 0 en las diapositivas, es decir, la barra actual? O es que es complicado, no hay variables preparadas para esta función.

¿Lo utilizas para un búho o para un indicador?
tienen patas diferentes, necesitas diapositivas diferentes)

 
Medvedina:

Buenos días a todos.

Al cerrar parcialmente una orden, aparece en la ventana de alerta "OrderClose (28800839, 0.01) error (método: CloseOrderPartial) - trade is not allowed in the expert properties".

Creo que el problema no está en el método sino en las condiciones de cierre.

¿Qué dice el registro? ¿Puedes hacer una captura de pantalla?

 
Taras Slobodyanik:

¿buscas un búho o un pavo?
tienen patas diferentes, necesitan deslizamientos diferentes)

Normal suavizada (también está la Media Ponderada Suavizada Exponencial y cualquier otra que exista). Necesito una media móvil simple, quizás suavizada, que pase por el medio entre la apertura y el cierre. Me di cuenta de que no hay tal cosa, hay que hacer, porque nadie pensaría que un imbécil como yo vendría a usar cosas tan simples en situaciones muy complicadas, pero se me ocurrió hacer variables tan complejas (Simle...).

...que no saben lo que están calculando y se limitan a redibujar los precios. Ni siquiera sé si los grandes inversores prestan atención al promediado (por ejemplo, 200,30,21,14,7). Si no lo tengo, lo haré más tarde.

 
MakarFX:

Creo que el problema no está en el método, sino en las condiciones de cierre.

¿Qué dice el cuaderno de bitácora? ¿Puedo tener una captura de pantalla?

Buenas tardes.

Gracias por el pensamiento. Efectivamente, no lo he notado pero no es mi EA el que recibe avisos sino otro que está trabajando en paralelo sobre el mismo par. Lo extraño es que los avisos del segundo EA sólo han aparecido mientras se trabaja en paralelo.

 
Seric29:

Una regular suavizada (también está la Media Ponderada Suavizada Exponencial y cualquier otra que exista). Necesito una media móvil simple puede ser suavizada, que estúpidamente pasaría en el medio entre la apertura y el cierre.

así que sume y divida - (MA1 + MA2 + MA3) / 3 = Media MA

Si se cuenta por el buffer, entonces iMAOnArray

Razón de la queja: