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

 
Vitaly Muzichenko:

Es adimensional como es, pero es bidimensional, y puedes poner un número adimensional de elementos en dos dimensiones.

De todos modos, ¿qué haces, tienes alguna idea de cuál debe ser el resultado del trabajo que haces? ¿O estás inventando la lógica sobre la marcha?

En el ejemplo actual, quiero poder colocar un número infinito de órdenes con cualquier lote para no superar los límites especificados.

Por supuesto, conocemos los límites, pero me gustaría hacerlo así.

Parto del hecho de que si se especifica un elemento entre paréntesis, éste será el último

Así que tengo este tipo de basura. Esperaba una orden por orden... Quiero que el resultado (lote de tal orden *coeficiente) se añada a la orden en lugar del lote

y la cuestión de la recuperación de datos desde allí

Quiero obtener el siguiente resultado tal y como lo veo

MiMatriz[0][0.01]

MiMatriz[1][0.01]

MiMatriz[2][0.02]

etc...


void CalcOrders()

{

int CountOrders=0;

double MyArray [99][99];

for(i=OrdersTotal()-1; i>=0; i--)

     {

      if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) && (OrderSymbol()==Symbol())

         && (OrderMagicNumber()==Magic) && (OrderType()==OP_SELL))

         CountOrders++;

         ArrayResize(MyArray,CountOrders+1);

         MyArray[CountOrders][0]=OrderLots();

         Print("MyArray[CountOrders][0]",MyArray[CountOrders][0]);

     }

}    

2017.01.13 12:51:14.372 2017.01.05 16:30:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.02
2017.01.13 12:51:14.372 2017.01.05 16:25:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.01
2017.01.13 12:51:14.372 2017.01.05 16:25:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.02
2017.01.13 12:51:14.371 2017.01.05 16:20:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.01
2017.01.13 12:51:14.371 2017.01.05 16:20:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.02
2017.01.13 12:51:14.371 2017.01.05 16:15:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.01

 
trader781:

En el ejemplo actual, quiero poder colocar un número infinito de órdenes con cualquier lote para no superar sus límites.

Por supuesto, todos conocemos los límites, pero quiero hacerlo así

Parto del hecho de que si se especifica un elemento entre paréntesis, éste será el último

Así que tengo este tipo de basura. Esperaba una orden por orden... Quiero que el resultado(lote de tal orden *coeficiente) se añada a la orden en lugar del lote

Y la cuestión de recuperar los datos de allí



void CalcOrders()

{

int CountOrders=0;

double MyArray [99][99];

for(i=OrdersTotal()-1; i>=0; i--)

     {

      if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) && (OrderSymbol()==Symbol())

         && (OrderMagicNumber()==Magic) && (OrderType()==OP_SELL))

         CountOrders++;

         ArrayResize(MyArray,CountOrders+1);

         MyArray[CountOrders][0]=OrderLots();

         Print("MyArray[CountOrders][0]",MyArray[CountOrders][0]);

     }

}    

2017.01.13 12:51:14.372 2017.01.05 16:30:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.02
2017.01.13 12:51:14.372 2017.01.05 16:25:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.01
2017.01.13 12:51:14.372 2017.01.05 16:25:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.02
2017.01.13 12:51:14.371 2017.01.05 16:20:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.01
2017.01.13 12:51:14.371 2017.01.05 16:20:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.02
2017.01.13 12:51:14.371 2017.01.05 16:15:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.01


Explique lo que necesita.

Almacenemos todo en un array, ¿y luego qué?

Entonces giramos la matriz y buscamos la posición que necesitas, ¿qué?

Lote qué posición, hay una definición, o a ojo, miré la ficha de Comercio, sí necesita 6, ¿verdad?
 
Alekseu Fedotov:

¿Puede explicar lo que necesita?

Pongamos todo en un array, ¿y luego qué?

Giraremos la matriz, buscaremos la posición que necesitas, ¿qué?

Miro la pestaña "Comercio", sé que necesito 6, ¿verdad?

OnTick()

si la condición para abrir una posición es correcta

{posición abierta}

si la condición de apertura de la posición es correcta

{llenar la misma cantidad }

Si el último lote es la posición 2 - añadamos el lote *1.5 (la función encontrar el último devolverá el segundo) y este será el tercero

si este es el cuarto orden

recarga {lote cero+lote uno}

si será el quinto orden

rellenar {lugar 1 posición +lugar 3}

Actualmente existe una definición de la última posición de la lista

Hay que escribirlo en un array y sacar el correcto a la vez porque no veo otra forma de implementación por el momento, por lo que el número de órdenes y posiciones debería ser teóricamente infinito

Os he mostrado lo que he hecho en la función, no sé si es correcto o no.

Necesito sacar los datos y saber de antemano qué orden puede abrirse en mi cuenta

No pretendo que el sistema funcione, la aplicación es importante

 
Buen tiempo. Puedes aconsejar si quieres probar un EA y este utiliza comandos para escribir y leer bits y archivo csv, ya que sabemos que hay errores en el modo de prueba al utilizar operaciones con estos archivos
 
Top2n:
Buenas tardes. Pueden aconsejarme si tengo que probar un EA y éste utiliza comandos de escritura y lectura de bits y archivo csv, ya que sabemos que se producen errores en el modo de prueba cuando se utilizan operaciones con archivos.

No se producen errores. Sólo escribe en una carpeta diferente si no se utiliza la bandera

FILE_COMMON

4096

Ubicación del archivo en la carpeta compartida de todos los terminales cliente \Terminal\Common\Files. Esta bandera se utiliza al abrir archivos (FileOpen()), al copiar archivos (FileCopy(), FileMove()) y al verificar la existencia de archivos (FileIsExist())

 
Alexey Viktorov:

No se produce ningún error. Sólo escribe en una carpeta diferente si no se utiliza la bandera

FILE_COMMON

4096

Ubicación del archivo en la carpeta compartida de todos los terminales cliente \Terminal\Common\Files. Esta bandera se utiliza al abrir archivos (FileOpen()), al copiar archivos (FileCopy(), FileMove()) y al verificar la existencia de archivos (FileIsExist())

Bueno, yo uso FileOpen()

input string InpFileName="data.bin";
input string InpDirectoryName="";
string path=InpDirectoryName+"//"+InpFileName;

C:\Users\Rassvet\AppData\Roaming\MetaQuotes\Terminal\36A64B8C79A6163D85E6173B54096685\MQL5\Files

5004:ERR_FILE_CANNOT_OPEN = Error de apertura de archivo

 
Top2n:

Bueno, estoy usando FileOpen()

input string InpFileName="data.bin";
input string InpDirectoryName="";
string path=InpDirectoryName+"//"+ InpFileName;

C:\Users\Rassvet\AppData\Roaming\MetaQuotes\Terminal\36A64B8C79A6163D85E6173B54096685\MQL5\Files

5004:ERR_FILE_CANNOT_OPEN = Error de apertura de archivo

FileOpen() no es una bandera... La bandera es FILE_COMMON.

Si no quiere escribir en una carpeta separada, no tiene que especificarla como una cadena vacía en la ruta. Lo innecesario está resaltado en amarillo.


 
Alexey Viktorov:

FileOpen() no es una bandera... La bandera es FILE_COMMON.

Si no quiere escribir en una carpeta separada, no tiene que especificarla como una cadena vacía en la ruta. Lo innecesario está resaltado en amarillo.


Hay un contacto gracias
 
¡Hola!
¿Puede decirme dónde puedo leer sobre la propiedad estricta #property?
 
Leo59:
¡Hola!
¿Pueden decirme dónde puedo leer sobre la propiedad estricta #property?
Por ejemplo, aquí https://docs.mql4.com/ru/basis/preprosessor/compilation
Свойства программ (#property) - Препроцессор - Основы языка - Справочник MQL4
Свойства программ (#property) - Препроцессор - Основы языка - Справочник MQL4
  • docs.mql4.com
Свойства программ (#property) - Препроцессор - Основы языка - Справочник MQL4