Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 730
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
bares[]
ChamadoBars, o compilador está a repreendê-lo para os céus. Já testou este desenho, ou apenas assumiu que deveria funcionar, ou estou a fazer algo errado?
Sim, erro meu. Dê-lhe um nome. Em geral, a ideia é dar nomes expressivos às variáveis, então não será necessário criar variáveis adicionais, cuja existência nem sempre é justificada.
Não os chamei para expressar algo, mas para reduzir o código ao trabalhar com eles:
E o resto da mesma forma, caso contrário, o comprimento das linhas aumenta
Obrigado a todos pelos esclarecimentos!
A razão não é para expressar algo, mas para encurtar o código quando se trabalha com eles:
E o resto da mesma forma, caso contrário, o comprimento das linhas aumenta
Obrigado a todos pelos esclarecimentos!
Se quiser reduzir o código ao mínimo, faça referência directa à matriz de dados
//| test09.mq5 |
//| Sergey Gritsay |
//| https://www.mql5.com/ru/users/sergey1294 |
//+------------------------------------------------------------------+
#property copyright "Sergey Gritsay"
#property link "https://www.mql5.com/ru/users/sergey1294"
#property version "1.00"
MqlRates bars[]; // массив для хранения данных цен OHLC
int start_bar=0; // с какого бара копируем
int count_bar=4; // сколько баров копируем
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
ArraySetAsSeries(bars, true);
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
if(CopyRates(Symbol(),PERIOD_CURRENT, start_bar, count_bar, bars)<count_bar) return;
if(bars[1].open<bars[1].close && bars[2].close>bars[3].close && bars[1].close>bars[2].close)
{
}
}
//+------------------------------------------------------------------+
Boa tarde!
Onde e como eliminar correctamente as encomendas feitas e as posições abertas ao descarregar (eliminar) um Expert Advisor? Se não for difícil, por favor partilhe um exemplo.
Obrigado.
Um dos EAs está a ter alguns disparates estranhos. Testa a EA normalmente, clicando em "Run single test" apenas uma vez, pela primeira vez. Depois, quando se clica no teste único ou em qualquer linha da Optimização, este aparece no Jornal:
2017.02.08 13:31:05.165 O testador não pode obter entradas para o passe 4234087422336
2017.02.08 13:31:34.829 O testador não pode obter entradas para o passe 4076312468706
2017.02.08 13:31:47.973 O testador não pode obter entradas para o passe 1004506640527
Os outros EAs comportam-se normalmente. O que poderia ser?
Senhores, registando uma enorme matriz de 10000*10000
{
//--- запишем файл
ResetLastError();
int handle=FileOpen(path,FILE_READ|FILE_WRITE|FILE_BIN);
//---
if(handle!=INVALID_HANDLE)
{
for(int z=ARRAY_SIZE_Y; z>0; z--) // Перебор по барам, колонка Y
{
for(int q=0; q<ARRAY_SIZE_X; q++) // Перебор по периоду, колонка X
{
arra[q]=sm.d[q].m[nBar-z]; // M(I) SMA
}
//--- запишем данные массива в конец файла FileTell IsFileLineEnded
FileSeek(handle,0,SEEK_END);
FileWriteArray(handle,arra);
}
FileClose(handle);
}
else
Print("Failed to open the file, error ",GetLastError()," handle ",handle);
//---
count=1;
}
Como pensa que este algoritmo é eficiente em termos de velocidade?
Porque quando a matriz é 1000*1000 a velocidade é de alguns segundos, quando aumenta para 10000*10000 o sistema levanta-se
Senhores, registando uma enorme matriz de 10000*10000
{
//--- запишем файл
ResetLastError();
int handle=FileOpen(path,FILE_READ|FILE_WRITE|FILE_BIN);
//---
if(handle!=INVALID_HANDLE)
{
for(int z=ARRAY_SIZE_Y; z>0; z--) // Перебор по барам, колонка Y
{
for(int q=0; q<ARRAY_SIZE_X; q++) // Перебор по периоду, колонка X
{
arra[q]=sm.d[q].m[nBar-z]; // M(I) SMA
}
//--- запишем данные массива в конец файла FileTell IsFileLineEnded
FileSeek(handle,0,SEEK_END);
FileWriteArray(handle,arra);
}
FileClose(handle);
}
else
Print("Failed to open the file, error ",GetLastError()," handle ",handle);
//---
count=1;
}
Como pensa que este algoritmo é eficiente em termos de velocidade?
Porque quando a matriz é 1000*1000 a velocidade é de alguns segundos, quando aumenta para 10000*10000 o sistema levanta-se
Existe alguma confusão?
Como é possível obter uma tal matriz se não são permitidas mais do que matrizes tetradimensionais?
Não há confusão?
10000 x 10000 não é uma matriz bidimensional?
e tudo isso...
Como é possível obter uma tal matriz se não são permitidas mais do que matrizes tetradimensionais?
Existe alguma confusão?