Dificultades de traducción :) - página 4

 
Alexey Volchanskiy:

De nada. Pero escribí que soy un gatito perezoso))

Esa es la razón por la que no tiro al diablo por las pelotas cada vez, sino que mantengo los datos de la orden en clase.

Una pregunta: ¿es de suponer que querías revisar las posiciones, no las garantías? М... Yo habría hecho las cosas de otra manera, pero la transmisión en directo es algo así

Tengo 40 de estas funciones en mi plantilla para todas las ocasiones. Los tengo por separado para las órdenes, y por separado para las posiciones. Son muy rápidos de trabajar; utilizamos los que necesitamos en nuestro EA y además, podemos ampliar o modificar el algoritmo del EA en un par de minutos. Por eso utilizo las funciones dentro de un archivo y no necesito conectar nada adicional.

Sí, me gustaría revisar las posiciones y, si es posible, también los pedidos, sería genial)

Aleksey, si tienes tiempo y lo deseas después del paseo nocturno, por favor, déjame ver cómo debería ser y reescribiré todo lo que tengo por analogía.

Gracias.

//==================

P.D. mientras escribía, dio una respuesta)

¡¡¡¡(c) por qué tienes que poner todo tipo de mierda después deinsertar el código!!!!

Es para saber qué función, como un comentario, hay muchos

Gracias por la respuesta, seguiré investigando ))))

 
Alexey Volchanskiy:

De nada. Pero escribí que soy un gatito perezoso))

Esa es la razón por la que no tiro al diablo por las pelotas cada vez, sino que mantengo los datos de la orden en clase.

Una pregunta: ¿probablemente querías revisar las posiciones, no las órdenes? М... Yo habría hecho las cosas de otra manera, pero el directo es así

La estúpida página lo ha vuelto a colapsar, me iré a reddit, allí está todo claro.

¡¡¡¡¡¡¡¡¡¡¡¡¡¡****************** sitio web estúpido !!!!!!!!!!!!!!

¡¡¡¡por qué tienes que poner mierda después de poner el código!!!!

No Alexey, eso no es del todo correcto. PositionSelect(Symbol()) seleccionará la misma posición. Eso está bien para la red.

Aquí hay una pieza con paréntesis no emparejados también, todo el mundo aquí entiende

    for(i = 0; i < PositionsTotal(); i++)
     {
      if(PositionGetTicket(i) > 0 && PositionGetString(POSITION_SYMBOL) == Symbol() && PositionGetInteger(POSITION_MAGIC) == magic)
       {
        if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY || PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL)
         {
 
Vitaly Muzichenko:

Sí, quería echar un vistazo a las posiciones y si puede, los pedidos también, sería súper)


Para los pedidos pendientes sería casi lo mismo

    for(i = 0; i < Orders Total(); i++)
     {
      if(OrderGetTicket(i) > 0 && Order GetString(POSITION_SYMBOL) == Symbol() && Order GetInteger(POSITION_MAGIC) == magic)
       {
        if(Order GetInteger(POSITION_TYPE) == POSITION_TYPE_BUY_STOP || Order GetInteger(POSITION_TYPE) == POSITION_TYPE_SELL_STOP) // или другие типы
         {
 
Alexey Viktorov:

Es casi lo mismo para las órdenes pendientes

Muchas gracias a los cinco escritores por su ayuda.
 
Vitaly Muzichenko:

Alexei, una pregunta para ti:

¿Cuánto tiempo y dificultad entraña la traducción de proyectos escritos en estilo procedimental? ¿Por qué el procedimiento? - solía hacerlo así, tener una plantilla para todas las ocasiones, escribir 3-5 líneas en ella para las condiciones, y cualquier búho está listo en media hora con toda la depuración

Siguiente:

¿Es posible reescribir la función de apertura de la posición para aplicarla de la misma manera que en quad, sólo se acostumbró a sus nombres y el uso de los años, y no es necesario conectar ninguna biblioteca.

Bueno, y un bloque de condiciones para abrir y crear gráficos:

Muchos más gráficos, escribió una vez en cinco, por lo que hay algo hecho a través de .opa tiempo y el precio de la selección del primer punto y el segundo. En la cuarta, ObjectSetInteger(0,nm,OBJPROP_TIME1, t1) y ObjectSetInteger(0,nm,OBJPROP_TIME2, t2), pero en la quinta, tal construcción no funciona(

¡Gracias de antemano por la respuesta!

Ayer reescribí un proyecto más, es un Asesor Experto bastante grande. Mi cliente lleva semanas optimizándolo, tiene un código pesado y muchos parámetros. Le he animado a que se pase al 5 con cobertura, le he dicho que podría optimizarlo en la nube. Hoy escribe que se está meando en los pantalones con tal rapidez, que ha tardado un par de horas en optimizar todo, lo que antes le llevaba semanas. Obviamente, suele haber unos cuantos miles de agentes libres en la nube.

Ahora a tu pregunta, he ganado algo de experiencia, hay algunas respuestas.

Que se queden con el estilo procedimental, nadie les obliga a usar OOP.

2. Aquí hay un buen artículo sobre las funciones en MQL4 y 5. Hay una mesa allí . https://www.mql5.com/ru/articles/81.

Aquí hay una biblioteca sobre el uso combinado de las funciones comerciales 4 y 5. No lo he probado, pero es interesante. https://www.mql5.com/ru/code/16006

Переход с MQL4 на MQL5
Переход с MQL4 на MQL5
  • 2010.05.11
  • Sergey Pavlov
  • www.mql5.com
Данная статья, построенная в форме справочника по функциям MQL4, призвана помочь переходу с MQL4 на MQL5. Для каждой функции языка MQL4 приведено описание и представлен способ ее реализации на MQL5, что позволит вам значительно ускорить перевод своих программ с MQL4 на MQL5. Для удобства функции разбиты на группы, как в документации по MQL4.
 

Foro sobre comercio, sistemas de comercio automatizados y prueba de estrategias de comercio

Dificultades de traducción :)

Vitaly Muzichenko, 2016.08.15 21:00

Estoy de acuerdo )

Alexey, entonces como un juego) por favor, traducir esta característica a los cinco:

//===============================================================================================
//------------------------------- Возвращает количество позиций --------------------------------+
//===============================================================================================
int NumberOfPositions(string symb="0", int type=-1, int mg=-1) {
 int kp=0;
  if(symb=="0") { symb=Symbol();}
  for(int i=0; i<OrdersTotal(); i++) {
   if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
    if((OrderSymbol()==symb||symb=="")&&(type<0||OrderType()==type)&&(mg<0||OrderMagicNumber()==mg)) {
     if(OrderType()==OP_BUY || OrderType()==OP_SELL) {
      kp++;
 }}}}
  return(kp);
 }

Cómo utilizarlo en cuatro - ya sabes.

Gracias.


Tengo una opinión ligeramente diferente sobre la traducción. No hay "sustituciones" en VS. Sólo se ha añadido una línea. El código de trabajo de la función mencionada para MT5-Hedge

// https://www.mql5.com/ru/code/16006
#include <MT4Orders.mqh>

//===============================================================================================
//------------------------------- Возвращает количество позиций --------------------------------+
//===============================================================================================
int NumberOfPositions(string symb="0", int type=-1, int mg=-1) {
 int kp=0;
  if(symb=="0") { symb=Symbol();}
  for(int i=0; i<OrdersTotal(); i++) {
   if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
    if((OrderSymbol()==symb||symb=="")&&(type<0||OrderType()==type)&&(mg<0||OrderMagicNumber()==mg)) {
     if(OrderType()==OP_BUY || OrderType()==OP_SELL) {
      kp++;
 }}}}
  return(kp);
 }

El código se convirtió en multiplataforma inmediatamente.

Del mismo modo, ejecutar el Asesor Experto MT4 de otra persona en MT5-tester - ejemplo.

 
fxsaber:

Tengo una visión ligeramente diferente de la traducción. No hay "sustituciones" en VS. Sólo se ha añadido una línea. Código de trabajo de la función mencionada para MT5-Hedge

El código se convirtió en multiplataforma inmediatamente.

Del mismo modo, ejecutar el Asesor Experto MT4 de otra persona en MT5-tester - ejemplo.

¡Genial! Ayer utilicé CTrade para la velocidad de traducción, aún no he mirado la biblioteca. Pero definitivamente le echaré un vistazo.
 
Alexey Volchanskiy:
¡Genial! Ayer utilicé CTrade para la velocidad de traducción, aún no he mirado la biblioteca. Pero definitivamente le echaré un vistazo.

Mi MT4Orders.mqh no me ha funcionado - entra en conflicto con la biblioteca estándar que ya utilizo. Probablemente sólo debería ser en una hoja limpia.

'::' - unexpected token Trade.mqh       126     22
'::' - unexpected token Trade.mqh       1477    14
'MqlTradeResult' - identifier already used      Trade.mqh       1477    55
see previous declaration of '           0       0
'&' - semicolon expected        Trade.mqh       1477    70
'if' - expressions are not allowed on a global scope    Trade.mqh       1483    4
'else' - expressions are not allowed on a global scope  Trade.mqh       1485    4
'if' - expressions are not allowed on a global scope    Trade.mqh       1488    4
'else' - expressions are not allowed on a global scope  Trade.mqh       1493    4
'return' - expressions are not allowed on a global scope        Trade.mqh       1499    4
')' - expressions are not allowed on a global scope     Trade.mqh       1500    3
declaration of 'action' hides global declaration in file 'Trade.mqh' at line 1480       DealInfo.mqh    244     55

**

 
Alexey Volchanskiy:

Mi MT4Orders.mqh no me ha funcionado - entra en conflicto con la biblioteca estándar que ya utilizo. Probablemente sólo debería ser en una hoja limpia.

**

#include <MT4Orders.mqh> // если есть #include <Trade/Trade.mqh>, вставить эту строчку ПОСЛЕ
 

Pregunta - ¿Cómo puedo saber la comisión de una posición en MQL5?

Lo hice en MQL4 así

double oProfit = OrderProfit() + OrderSwap() + OrderCommission(); // MQL4

En MQL5 no hay comisiones.

double oProfit = PositionGetDouble(POSITION_PROFIT) + PositionGetDouble(POSITION_SWAP);

He mirado en las propiedades del pedido y tampoco hay comisión. ¿Qué debo hacer?