Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 67
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
{
// 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);
}
Quero escrever uma linha para o arquivo com traduções para uma nova linha, mas não funciona, este código é daquihttps://www.mql5.com/en/forum/118999
este código escreve uma linha com espaços após cada letra, eu preciso de um substituto para FileWrite() mas funciona
Por favor, leia sobre o que é uma função. Então você entenderá que o conjunto declarado no corpo funcional será local - fora da vista do resto do programa.
Ou seja, eu preciso de 3 funções
1) onde eu o declaro
2) qual eu usarei para acrescentar valores a ela
3) qual eu usarei para apagá-los do banco de dados?
certo?
Ou seja, eu preciso de 3 funções
1) onde eu o declaro
2) qual eu usarei para acrescentar valores a ela
3) qual eu usarei para apagá-los do banco de dados?
correto?
Leia-o com atenção.
Ok, faça uma função vazia que escreverá as ordens em uma matriz bidimensional (bilhete + lote)
obter uma foto deste tipo
{
ticket=OrderSend(Symbol(),OP_BUY,(лот2 ордера+лот4 ордера),Ask,50,0,0,"",Magic,0,clrAzure);
Функция записи();
}
и если массив локальный то каким образом я буду оттуда вытаскивать данные в текущую команду?
ретурн не возвращает данные массивов, а если засунуть туда выражение извлечения его будет не видно
Ok, faça uma função vazia que escreverá as ordens em uma matriz bidimensional (bilhete + lote)
obter uma foto deste tipo
{
ticket=OrderSend(Symbol(),OP_BUY,(лот2 ордера+лот4 ордера),Ask,50,0,0,"",Magic,0,clrAzure);
Функция записи();
}
и если массив локальный то каким образом я буду оттуда вытаскивать данные в текущую команду?
ретурн не возвращает данные массивов, а если засунуть туда выражение извлечения его будет не видно
Diga-me, por favor, por que escrever os bilhetes e lotes em uma matriz, a não ser para aprender a usar uma matriz? Quando você desliga seu computador, todo o conjunto trava, por que, em primeiro lugar, torná-lo tão pouco confiável? A menos, é claro, que o objetivo seja aprender a trabalhar com arrays)
ok, me encontre 6 pedidos em uma grade irregular da maneira mais fácil, ou 8 por emissão de bilhetes
Preciso dela enquanto houver uma grade de ordens, então deixe-a rolar.
bem, o objetivo que eu declarei no código acimaok, encontre-me 6 pedidos em uma grade irregular da maneira mais fácil, ou 8 por bilhetagem
Preciso dela enquanto a grade de pedidos existir, então deixe-a rolar.
Bem, eu declarei o objetivo no código acimaAqui, há uma chance de ordenar por vários parâmetros, por isso é utilizada uma matriz bidimensional.
Espero que você entenda como usá-lo, se não - para freelancer)
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()
}
Aqui, há uma chance de classificar por vários parâmetros, de modo que é usada uma matriz bidimensional.
Espero que você entenda como utilizá-lo, se não, vá para freelancer)
como obter um sem dimensão de antemão, não funciona com valores vazios
É sem dimensões como está, mas é bidimensional, e você pode colocar um número de elementos sem dimensões em duas dimensões.
O que você está fazendo de qualquer forma, você tem alguma idéia de qual deve ser o resultado do trabalho que você faz? Ou você está inventando a lógica à medida que avança?