Questions from Beginners MQL5 MT5 MetaTrader 5 - page 730
You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
bars[]
Called itBars, the compiler is scolding it to the skies. Have you tested this design, or just assumed it should work, or am I doing something wrong?
Yes, my mistake. Name it. In general, the idea is to give expressive names to variables, then you won't need to create additional variables, the existence of which is not always justified.
I didn't call it to express something, but to reduce code when working with them:
And the rest in the same way, otherwise the length of the lines increases
Thanks to all for clarifications!
I didn't name it to express something, but to reduce code when working with them:
And the rest in the same way, otherwise the length of the lines increases
Thank you all for clarifications!
If you want to reduce the code to a minimum, make reference directly to the data array
//| 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)
{
}
}
//+------------------------------------------------------------------+
Good afternoon!
Where and how to correctly delete placed orders and open positions when unloading (deleting) an Expert Advisor? If it is not difficult, please share an example.
Thank you.
One of the EAs is having some strange nonsense. Tests the EA normally, clicking on "Run single test" only runs one single, first time. Then, when you click on the single test or click on any line in the Optimization, it shows in the Journal:
2017.02.08 13:31:05.165 Tester cannot get inputs for pass 4234087422336
2017.02.08 13:31:34.829 Tester cannot get inputs for pass 4076312468706
2017.02.08 13:31:47.973 Tester cannot get inputs for pass 1004506640527
The other EAs behave normally. What could it be?
Gentlemen, recording a huge 10000*10000 matrix
{
//--- запишем файл
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;
}
How do you think this algorithm is efficient in terms of speed?
Because when the matrix is 1000*1000 the speed is a few seconds, when increasing to 10000*10000 the system gets up
Gentlemen, recording a huge 10000*10000 matrix
{
//--- запишем файл
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;
}
How do you think this algorithm is efficient in terms of speed?
Because when the matrix is 1000*1000 the speed is a few seconds, when increasing to 10000*10000 the system gets up
Is there any confusion?
How is it possible to get such a matrix if no more than four-dimensional arrays are allowed?
Isn't there any confusion?
Isn't 10000 x 10000 a two-dimensional matrix?
and all that...
How is it possible to get such a matrix if no more than four-dimensional arrays are allowed?
Is there any confusion?