Preguntas de los principiantes MQL4 MT4 MetaTrader 4 - página 220

 
¡Eh! ¡Chicos, ayudadme! No se me ocurre ninguna función. El Asesor Experto abre una posición por día (entre las 00:00 y las 23:59), es decir, un día, una orden. La tarea es encontrar la serie de pérdidas continuas y mostrarla en el registro (utilizando el comando Print(), para imprimir una vez). El número de elementos de la serie se introduce desde el teclado (Por ejemplo, si se introduce 5 desde el teclado y la serie tiene 4 días perdidos, entonces lo ignoramos --> esperamos a que se produzcan 5 o más días). Se considera una serie si los días de pérdida son consecutivos o las órdenes se cierran en un día (se abren una vez al día, y las órdenes de mercado pueden "colgarse" más de un día). Por ejemplo, en el registro debería haber las siguientes series de pérdidas: 01.05, 02.05, 03.05, 04.05, 05.05. Condición importante: reconocer las series (y en consecuencia emitirlas al log), que sean mayores o iguales al valor introducido desde el teclado (externo).
//
Personalmente tengo la siguiente idea:
1. Fiya rellena el array de órdenes perdedoras con sus valores de cierre ( Mass[i] = OrderCloseTime();). Es decir, el array almacena sólo las fechas y horas de cierre de las órdenes perdedoras
2. Comenzamos comparando el elemento en la posición i y en la posición i-1 (2 adyacentes)
2.1 los comparamos convirtiendo los datos de la celda al día del año ( TimeDayOfYear(Mass[i]) y TimeDayOfYear(Mass[i-1])
2.(Supongamos que el primer día perdedor = 178, y el anterior = 176 --> no hay serie, porque no son consecutivos, respectivamente si el primero = 178, y el segundo 177 --> tenemos una serie)
2.3 Con el bucle for recorremos todas las celdas del array y comparamos sus vecinos. Si hay una serie de pérdidas enelementosvecinosde la matriz--> comencemos a comprimir hasta que 1.no hayamos alcanzado elnúmeromínimo requerido de días perdedores para considerarlo como una serie. 2. (si se cumple el punto 1) ANTES de que la serie se detenga.
2.4 EL PARO DE LA SERIE --> recuerda el índice del elemento del array donde terminó y recuerda el número de elementos de la serie (la serie puede ser == O mayor que el valor introducido desde el teclado)
3. ----aquí comienza el problema de la realización---
3.1 Deberíamos "retroceder" de alguna manera a través de la serie de días perdidos, conociendo la fecha de cada elemento, traducir la fecha de datetime --> cadena,
3.11 rellenar la cadena (no sé, ¿tal vez a través de StringAdd()?), y enviarla al archivo LOG (no un millón de veces, sólo una)

El algoritmo del Asesor Experto no es importante, lo importante es la función del usuario en sí

¡Por Dios, ayuda!)
Документация по MQL5: Основы языка / Переменные
Документация по MQL5: Основы языка / Переменные
  • www.mql5.com
Переменные должны быть объявлены перед их использованием. Для идентификации переменных используются уникальные имена. Описания переменных используются для их определения и объявления типов. Описание не является оператором. Индексом массива может быть только целое число. Допускаются не более чем четырехмерные массивы. Нумерация элементов массива...
Archivos adjuntos:
 
Hola. Me he apuntado a la señal. Pero al cabo de unos días, el porcentaje de aumento total de unos pocos centenares pasó a ser sólo del 58%. Los porcentajes de los meses anteriores han perdido su color azul y se han vuelto grises. ¿Por qué ocurre esto? ¿Cuál podría ser la razón?
Archivos adjuntos:
 
Maestro8:
Hola. Me he apuntado a la señal. Pero al cabo de unos días, el porcentaje de aumento total de unos pocos cientos era sólo del 58%. Los porcentajes de los meses anteriores han perdido su color azul y se han vuelto grises. ¿Por qué ocurre esto? ¿Cuál podría ser la razón?

Se ha apuntado a otro divisor de depósitos. ¿Ves la línea vertical en el gráfico a la izquierda de la operación 76? Esta línea muestra el momento en que se conectó a la monitorización. Antes de la conexión a la supervisión, esta cuenta fue "retirada" de varias docenas de otras cuentas que no tienen una imagen tan bonita (fueron drenadas con seguridad). El depósito con bellos indicadores está conectado a la vigilancia y recibe dinero de los recién llegados a los que les gustan las fotos bonitas. Por lo tanto, no hay que creer en los indicadores que se obtuvieron antes de incorporarse al seguimiento.

 

Una copia de una instancia de la clase.

Si hago esta asignación:

Cl1 = Cl2;

entonces cuando posteriormente cambio Cl1, entonces Cl2 cambia también.

Así que, obviamente, la asignación es sólo una referencia.

Pero necesito guardar una instancia de una clase que almacene todas las propiedades que se le dieron en el momento de la asignación.

¿Cómo hacerlo?

 
Evgeny Potapov:

Una copia de una instancia de la clase.

Si hago esta asignación:

entonces cuando posteriormente cambio Cl1, entonces Cl2 cambia también.

Así que, obviamente, la asignación es sólo una referencia.

Pero necesito mantener una instancia de una clase que almacene todas las propiedades que se le dieron en el momento de la asignación.

¿Cómo hacerlo?

Probablemente lo hagas:

CClass* cl1=new CClass;
CClass* cl2=cl1;

y necesitas esto.

CClass cl1;
CClass* _cl1=new CClass;
CClass cl2=cl1;
CClass _cl2=_cl1;
CClass* cl3=new CClass(cl1);
CClass* cl4=new CClass(_cl1);

Necesitas un constructor de copias:

class CClass{
public:
   CClass(){}
   CClass(CClass &mOther){this=mOther;}
};
 
Vladimir Simakov:

Necesitas un constructor de copias:

Gracias.

Lo probaré, pero no está claro cómo funciona.

Si pasa la referencia de la copia a la clase copiada, ¿qué diferencia hay?

¿Volverán ambos a referirse el uno al otro?

 
Evgeny Potapov:

Gracias.

Lo intentaré, pero no está claro cómo funciona.

Si pasa a la copia una referencia a la clase copiada, ¿qué diferencia hay?

¿Volverán ambos a referirse el uno al otro?

No, no lo harán. Se trata de un objeto nuevo. Y en el constructor simplemente se rellenan los campos. Hay sutilezas ahí también, así que mastícalo) No hay nada al respecto en la ayuda local (aunque puedo estar equivocado), así que lee cómo se hace todo en C++ y haz correcciones para las realidades locales. Buena suerte)

 
Vladimir Simakov:

No lo harán. Se trata de un objeto nuevo. Y en el constructor sólo hay que rellenar los campos. Hay sutilezas allí también, así que mastícalo) No hay nada sobre esto en la ayuda local (aunque puedo estar equivocado), así que lee cómo c++ lo hace todo y haz ajustes para las realidades locales. Buena suerte)

Sí, así es como funciona.

Gracias.

Sería interesante saber por parte de los autores cómo funciona:

{this=mOther;}

¿Por qué hay una transferencia por valor cuando uno esperaría que se transfiriera una referencia?

Afortunadamente, esta construcción de copias es posible.

 

¡Buenas tardes!

¿Pueden decirme por qué en mi MT4 no puedo establecer el take y el stop loss con el ratón desde el punto de entrada de la posición?

Tal vez tengo que ajustar algo, pero no entiendo lo que es, por favor ayúdame

 
from_Reva:

¡Buenas tardes!

¿Pueden decirme por qué en mi MT4 no puedo establecer el take y el stop loss con el ratón desde el punto de entrada de la posición?

Tal vez tengo que configurar algo, pero no entiendo lo que es, por favor ayúdame

Prueba a mantener pulsada la tecla "Alt" del teclado y arrastrar