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

 
Alexey Viktorov:

En ese caso, ¿para qué sirven esas funciones autoescritas?

He obtenido los precios máximos y mínimos de ayer y a partir de estos valores determinar el medio.

No sé... No estaba pensando... Lo reescribiré ahora... Es más fácil así... Gracias.

 
Igor Makanu:

Gestión del dinero

en cuanto a las entradas aleatorias las órdenes pendientes siguen el precio, en el optimizador la selección se realiza según la fórmula y=kx+b , más adelante utilizaré polinomio y exponente, pero el optimizador busca sólo los factores y los valores de las órdenes, en general no ponerle niebla - es una cuadrícula, bueno, casi, pero los objetivos no se han alcanzado todavía

Por supuesto, me tomó mucho tiempo para mejorar la capa de programación en MQL, pero la idea general que obtuve durante el año de escritura relacionada de expertos siguiendo las peticiones de los trabajadores )))

No hay problema, adelante.

Ya veo, lo entiendo muy bien, porque ya he pasado por ello.
De todos modos se trata de encontrar algunos parámetros (en este caso al menos los coeficientes k y b en la lineal y=kx+b o a,k,x en la exponencial y=ax²+kx+b). Estos coeficientes deben cambiar preferentemente concada tick, por eso he dicho que la optimización debe estar en el propio programa y tener lugar de forma automática y constante, pero no en un comprobador externo en modo manual de vez en cuando (una vez al día o a la semana o al mes...). También hay que controlar el periodo, en el que se produce la regresión lineal o parabólica (exponencial) observada. Este periodo también debería cambiar con cada tic. Aunque encontrar una recta o una parábola es lo mismo que encontrar el periodo óptimo de la regresión lineal o parabólica en la actualidad.
Pero un probador externo siempre puede encontrar tales parámetros estáticos constantes, que estarán universalmente garantizados para ajustarse sólo a ese conjunto de datos históricos, sobre los que se ejecuta la prueba, y sobre esto, el período histórico pasado, por supuesto, se observará un beneficio estable y hermosas líneas de beneficio, pero necesitamos el presente y el futuro.

De todos modos, todo se reduce a controlar la anchura del canal, la longitud del canal, la ruptura del canal, el retorno a la línea de ruptura de un grado lineal o superior de los canales. Y esto es un problema de reconocimiento de patrones y sólo debe resolverse internamente, no externamente.

 
Nikolai Semko:

Ya veo, muy bien entendido, pues ya he pasado por ello.

Yo también, y más de una vez.

Nikolai Semko:

Pero el probador externo siempre será capaz de seleccionar tales parámetros estáticos constantes, que serán universalmente garantizado para adaptarse a sólo ese conjunto de datos históricos, en el que la prueba se está ejecutando, y en este, el período histórico ya pasado, por supuesto, un beneficio estable y hermosas líneas de beneficio se dibuja, pero necesitamos el presente y el futuro.

Ese es el problema, no, es lo mismo que el test del libro y hacia adelante, los gráficos son diferentes, pero la tendencia está ahí, por lo que entiendo mi EA no está golpeando el precio futuro en sí, sino las trayectorias de los precios futuros.

 
Chicos, aquí hay una pregunta. Mira, hay un incremento prefijo ++q y postfijo q++, usando sus características se puede conseguir un efecto bastante diferente e interesante, por ejemplo la prioridad de este incremento q++ realiza la adición de un número tardío/atrás, es decir, después y no inmediatamente, ¿cómo se puede hacer esto con los números primos y es posible, por ejemplo quiero tal adición q+5, primero necesito usar q y luego añadir 5?
 
Seric29:
Chicos, aquí hay una pregunta. Mira, hay un incremento prefijo ++q y postfijo q++, usando sus características podemos conseguir un efecto bastante diferente e interesante, por ejemplo la prioridad de este incremento q++ realiza la adición tarde/atrás es decir después y no inmediatamente, ¿cómo se puede hacer con los números primos y es posible, por ejemplo quiero tal adición q+5, primero necesito usar q y luego añadir 5?

Bueno, si esto se va a utilizar como un contador de bucle, entonces simplemente

for(int q = 0; q <= 25; q+=5)
 
Alexey Viktorov:

Bueno, si lo usas como contador de bucle, es fácil

Y si pasas una expresión q+5 a una función y primero ejecutas q y luego sumas 5, no puedes hacerlo, ¿verdad?

int q
void Funk(int pr){}
вызвов Funk(...q+5...) сначала используем q а после прибавляем 5
как здесь например Funk(q++) сначала используем q а после прибавляем 1
 
Los comentarios que no son relevantes para este tema se han movido a "POO, plantillas y macros en mql5, consejos y trucos del oficio".
 
Seric29:

Y si pasas una expresión q+5 a una función y primero ejecutas q y luego sumas 5, no puedes hacerlo, ¿verdad?

¿El 5 es una constante o una variable? Si es una constante, no hay problema: pasa q a la función y añade 5 después de usarla. Si es una variable, pasa dos variables y añade la segunda después de usar q. Otra opción es declarar las variables globalmente. Entonces no es necesario pasar nada en absoluto.
 

Hola, quiero cerrar posiciones dirigidas de forma diferente cuando el beneficio =0 Diferente número de posiciones de compra y venta, diferentes tamaños de lote.

¿Qué ocurre con la función de búsqueda del precio medio, es decir, el punto de beneficio cero?

 double AveroProf(string sy="", int op=-1, int mn1=-1) 
   {
   int i=0;
   int kol=0;
   double lots=0;
   double sum=0;
   double sum1=0;
   double zeroprice=0;
   double tick_value;
   for (i=0; i<OrdersTotal(); i++)
   {
      if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
      if (OrderSymbol()!=Symbol()) continue;
      if (OrderMagicNumber()!=mn1) continue;
      if (OrderType()==OP_BUY)
      {
       lots=lots+OrderLots();
       sum=sum+OrderLots()*OrderOpenPrice();
       sum1=sum1+OrderProfit()+OrderSwap()+OrderCommission()  ; 
      }
      if (OrderType()==OP_SELL)
      {
       lots=lots+OrderLots();
       sum=sum+OrderLots()*OrderOpenPrice();
       sum1=sum1+OrderProfit()+OrderSwap()+OrderCommission()  ;
       kol=kol+1;
      }
   
   }
   if (lots>0)
   { 
   zeroprice=sum/lots;
   zeroprice=NormalizeDouble(zeroprice,_Digits);
   zeroprice = (MathRound(zeroprice*MathPow(10,Digits)))/MathPow(10,Digits);
    }   
   return( zeroprice);
   }
 
Por favor, alguien puede ayudarme con este problema: https://www.mql5.com/ru/forum/322133
Как использовать WinApi для преобразования времени в StrategyTester MT5?
Как использовать WinApi для преобразования времени в StrategyTester MT5?
  • 2019.09.12
  • www.mql5.com
Я успешно создал CustomSymbol в MT5, и я получаю эту таблицу в приложении...