Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 67
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
{
// Receives the number of bytes written to the file. Note that MQL can only pass
// arrays as by-reference parameters to DLLs
int BytesWritten[1]={0};
// Get the length of the string
int szData=StringLen(DataToWrite);
// Do the write
WriteFile(FileHandle,DataToWrite,szData,BytesWritten,0);
// Return true if the number of bytes written matches the expected number
return (BytesWritten[0] == szData);
}
Quiero escribir una línea en el archivo con las traducciones a una nueva línea, pero no funciona, este código es de aquíhttps://www.mql5.com/en/forum/118999
este código escribe una línea con espacios después de cada letra, necesito un reemplazo para FileWrite() pero funciona
Por favor, lea lo que es una función. Entonces entenderás que el array declarado en el cuerpo de la función será local - fuera de la vista del resto del programa.
Es decir, necesito 3 funciones
1) donde lo declaro
2) cuál utilizaré para añadirle valores
3) ¿cuál usaré para borrarlos de la base de datos?
¿verdad?
Es decir, necesito 3 funciones
1) donde lo declaro
2) cuál utilizaré para añadirle valores
3) ¿cuál usaré para borrarlos de la base de datos?
¿correcto?
Léelo con atención.
Vale, haz una función void que escriba los pedidos en un array bidimensional (ticket + lote)
obtener una imagen de este tipo
{
ticket=OrderSend(Symbol(),OP_BUY,(лот2 ордера+лот4 ордера),Ask,50,0,0,"",Magic,0,clrAzure);
Функция записи();
}
и если массив локальный то каким образом я буду оттуда вытаскивать данные в текущую команду?
ретурн не возвращает данные массивов, а если засунуть туда выражение извлечения его будет не видно
Vale, haz una función void que escriba los pedidos en un array bidimensional (ticket + lote)
obtener una imagen de este tipo
{
ticket=OrderSend(Symbol(),OP_BUY,(лот2 ордера+лот4 ордера),Ask,50,0,0,"",Magic,0,clrAzure);
Функция записи();
}
и если массив локальный то каким образом я буду оттуда вытаскивать данные в текущую команду?
ретурн не возвращает данные массивов, а если засунуть туда выражение извлечения его будет не видно
Dígame, por favor, ¿por qué escribir los billetes y los lotes en una matriz, si no es para aprender a usar una matriz? Cuando se apaga el ordenador todo el conjunto se bloquea, ¿por qué hacerlo tan poco fiable en primer lugar? A no ser, por supuesto, que el objetivo sea aprender a trabajar con arrays...)
ok, encuéntrame 6 órdenes en una cuadrícula desigual de la manera más fácil, o 8 por medio de boletos
Lo necesito mientras haya una parrilla de pedidos, entonces que ruede.
Bueno, el objetivo que he indicado en el código anteriorOk, encuéntrame 6 órdenes en una cuadrícula desigual de la manera más fácil, o 8 por medio de boletos
Lo necesito mientras exista la parrilla de pedidos, entonces que ruede.
Bueno, yo he indicado el objetivo en el código anteriorAquí existe la posibilidad de ordenar por varios parámetros, por eso se utiliza un array bidimensional.
Espero que entiendas cómo usarlo, si no es así - al freelance)
double SPosMass[][2];
void OnTick()
{
// Заполняем массивы
int b=-1,s=-1; // Объявим переменные с минусом
for(int i=0; i<OrdersTotal(); i++) {
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if(OrderSymbol()==Symbol() && (OrderMagicNumber()==Magic || Magic<0)) {
if(OrderType()==OP_BUY) {
b++;
ArrayResize(BPosMass,b+1);
BPosMass[b][0]= (int)OrderOpenPrice();// Для сортировки = можно сортировать по: OrderProfit(), OrderLots(), OrderTicket(), OrderOpenTime()
BPosMass[b][1]= OrderTicket(); // Для чтения
}
if(OrderType()==OP_SELL) {
s++;
ArrayResize(SPosMass,s+1);
SPosMass[s][0]= (int)OrderOpenPrice();// Для сортировки = можно сортировать по: OrderProfit(), OrderLots(), OrderTicket(), OrderOpenTime()
SPosMass[s][1]= OrderTicket(); // Для чтения
}
}}} // конец записи массив
// Читаем отсортированный массив с тикетами
// Buy
if(b>0) { // Если он не пустой и больше двух элементов - [0], иначе будет ошибка: "Выход за пределы массива"
ArraySort(BPosMass, WHOLE_ARRAY, 0, MODE_ASCEND); // Отсортируем по первому измерению
// Работа с полученными данными
Comment("Самый старый Buy тикет: ", BPosMass[0][1],
"\nПоследний Buy тикет: ", BPosMass[b][1],
"\nПредпоследний Buy тикет: ", BPosMass[b-1][1]
);
} // end Buy
// Sell
if(s>0) { // Если он не пустой и больше двух элементов - [0], иначе будет ошибка: "Выход за пределы массива"
ArraySort(SPosMass, WHOLE_ARRAY, 0, MODE_ASCEND); // Отсортируем по первому измерению
// Работа с полученными данными
Comment("Самый старый Sell тикет: ", SPosMass[0][1],
"\nПоследний Sell тикет: ", SPosMass[s][1],
"\nПредпоследний Sell тикет: ", SPosMass[s-1][1]
);
} // end Sell
// Конец функции OnTick()
}
Aquí existe la posibilidad de ordenar por varios parámetros, por lo que se utiliza un array bidimensional.
Espero que entiendas cómo usarlo, si no, vete al freelance)
cómo obtener un adimensional de antemano, no funciona con valores vacíos
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?