Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 68
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
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
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?¿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
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())
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 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
Bueno, estoy usando FileOpen()
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.
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.
¿Puede decirme dónde puedo leer sobre la propiedad estricta #property?
¡Hola!
¿Pueden decirme dónde puedo leer sobre la propiedad estricta #property?