Fresto:
Здравствуйте. Получаю данные за последние 3 бара. Но в отладке на последнем баре я получаю только открытие. Закрытие всегда равно открытию почему-то. Kaк можно это изменить? В итоге, чтобы получить полноценный бар, мне нужно дождаться следующего бара и в итоге я получаю отставание на 2 бара. Как можно получить значение закрытия бара и чтобы на его основе получить изменение SL и TP уже на следующем баре, а не через 1.
Здравствуйте. Получаю данные за последние 3 бара. Но в отладке на последнем баре я получаю только открытие. Закрытие всегда равно открытию почему-то. Kaк можно это изменить? В итоге, чтобы получить полноценный бар, мне нужно дождаться следующего бара и в итоге я получаю отставание на 2 бара. Как можно получить значение закрытия бара и чтобы на его основе получить изменение SL и TP уже на следующем баре, а не через 1.
MqlRates mrate[];
ArraySetAsSeries(mrate,true);
if (!mysymbol.RefreshRates())
{
Alert("Ошибка обновления котировок - ошибка: ",GetLastError(),"!");
return;
}
if(CopyRates(_Symbol,_Period,0,3,mrate)<0)
{
Alert("Ошибка копирования исторических данных - ошибка:",GetLastError(),"!!");
return;
}
ArraySetAsSeries(mrate,true);
if (!mysymbol.RefreshRates())
{
Alert("Ошибка обновления котировок - ошибка: ",GetLastError(),"!");
return;
}
if(CopyRates(_Symbol,_Period,0,3,mrate)<0)
{
Alert("Ошибка копирования исторических данных - ошибка:",GetLastError(),"!!");
return;
}
MqlRates mrate[];
ArraySetAsSeries(mrate,true);
/*if (!mysymbol.RefreshRates())
{
Alert("Ошибка обновления котировок - ошибка: ",GetLastError(),"!");
return;
}*/
if(CopyRates(_Symbol,_Period,0,3,mrate)<0)
{
Alert("Ошибка копирования исторических данных - ошибка:",GetLastError(),"!!");
return;
}
Print(TimeToString(mrate[2].time, TIME_DATE | TIME_MINUTES | TIME_SECONDS), " ", mrate[2].open, " ", mrate[2].close, " ", TimeToString(mrate[0].time, TIME_DATE | TIME_MINUTES | TIME_SECONDS), " ", mrate[0].open, " ", mrate[0].close);
ArraySetAsSeries(mrate,true);
/*if (!mysymbol.RefreshRates())
{
Alert("Ошибка обновления котировок - ошибка: ",GetLastError(),"!");
return;
}*/
if(CopyRates(_Symbol,_Period,0,3,mrate)<0)
{
Alert("Ошибка копирования исторических данных - ошибка:",GetLastError(),"!!");
return;
}
Print(TimeToString(mrate[2].time, TIME_DATE | TIME_MINUTES | TIME_SECONDS), " ", mrate[2].open, " ", mrate[2].close, " ", TimeToString(mrate[0].time, TIME_DATE | TIME_MINUTES | TIME_SECONDS), " ", mrate[0].open, " ", mrate[0].close);
2017.03.02 12:28:59.476 EnumTF (EURJPY,M15) 2017.03.02 10:45:00 120.461 120.418 2017.03.02 11:15:00 120.343 120.374
Для распечатки массивов удобно пользовать ArrayPrint
Просто я прохожу отладку на RTS 3.17 за последний 2017 год. Сравниваю значения mrate[0].close и mrate[0].open, параллельно предыдущий бар и их время.
Всегда у 0 индекса значения open и close совпадают. Прошел так уже месяц, тоже самое.
Может быть потому что демо счет, но он как будто на данном моменте у 0 бара не знает закрытие, потому что на следующем шаге этот 0 бар переходит в предыдущий и там закрытие становится известно
Всегда у 0 индекса значения open и close совпадают. Прошел так уже месяц, тоже самое.
Может быть потому что демо счет, но он как будто на данном моменте у 0 бара не знает закрытие, потому что на следующем шаге этот 0 бар переходит в предыдущий и там закрытие становится известно
Fresto:
Просто я прохожу отладку на RTS 3.17 за последний 2017 год. Сравниваю значения mrate[0].close и mrate[0].open, параллельно предыдущий бар и их время.
Всегда у 0 индекса значения open и close совпадают. Прошел так уже месяц, тоже самое.
Может быть потому что демо счет, но он как будто на данном моменте у 0 бара не знает закрытие, потому что на следующем шаге этот 0 бар переходит в предыдущий и там закрытие становится известно
Просто я прохожу отладку на RTS 3.17 за последний 2017 год. Сравниваю значения mrate[0].close и mrate[0].open, параллельно предыдущий бар и их время.
Всегда у 0 индекса значения open и close совпадают. Прошел так уже месяц, тоже самое.
Может быть потому что демо счет, но он как будто на данном моменте у 0 бара не знает закрытие, потому что на следующем шаге этот 0 бар переходит в предыдущий и там закрытие становится известно
Распечатайте цены методом ArrayPrint. Затем эти цены привяжите к скриншоту с барами - иначе неясно об чём речь.
Vladimir Karputov:
Распечатайте цены методом ArrayPrint. Затем эти цены привяжите к скриншоту с барами - иначе неясно об чём речь.
Распечатайте цены методом ArrayPrint. Затем эти цены привяжите к скриншоту с барами - иначе неясно об чём речь.
Вы на каком сервере подключаетесь к котировкам?
Вот эксперт:
//+------------------------------------------------------------------+
//| TestEA.mq5 |
//| Copyright © 2016, Vladimir Karputov |
//| http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, Vladimir Karputov"
#property link "http://wmua.ru/slesar/"
#property version "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//--- we work only at the time of the birth of new bar
static datetime PrevBars=0;
datetime time_0=iTime(0);
if(time_0==PrevBars)
return;
PrevBars=time_0;
//--- выводит значения 3 последних баров
MqlRates rates[];
if(CopyRates(_Symbol,_Period,1,3,rates))
{
//ArrayPrint(rates);
Print("Проверка\n[time]\t[open]\t[high]\t[low]\t[close]\t[tick_volume]\t[spread]\t[real_volume]");
for(int i=0;i<3;i++)
{
PrintFormat("[%d]\t%s\t%G\t%G\t%G\t%G\t%G\t%G\t%I64d\t",i,
TimeToString(rates[i].time,TIME_DATE|TIME_MINUTES|TIME_SECONDS),
rates[i].open,rates[i].high,rates[i].low,rates[i].close,
rates[i].tick_volume,rates[i].spread,rates[i].real_volume);
}
}
else
PrintFormat("CopyRates failed, error code=%d",GetLastError());
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Get Time for specified bar index |
//+------------------------------------------------------------------+
datetime iTime(const int index,string symbol=NULL,ENUM_TIMEFRAMES timeframe=PERIOD_CURRENT)
{
if(symbol==NULL)
symbol=Symbol();
if(timeframe==0)
timeframe=Period();
datetime Time[1];
datetime time=0;
int copied=CopyTime(symbol,timeframe,index,1,Time);
if(copied>0) time=Time[0];
return(time);
}
//+------------------------------------------------------------------+
//| TestEA.mq5 |
//| Copyright © 2016, Vladimir Karputov |
//| http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, Vladimir Karputov"
#property link "http://wmua.ru/slesar/"
#property version "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//--- we work only at the time of the birth of new bar
static datetime PrevBars=0;
datetime time_0=iTime(0);
if(time_0==PrevBars)
return;
PrevBars=time_0;
//--- выводит значения 3 последних баров
MqlRates rates[];
if(CopyRates(_Symbol,_Period,1,3,rates))
{
//ArrayPrint(rates);
Print("Проверка\n[time]\t[open]\t[high]\t[low]\t[close]\t[tick_volume]\t[spread]\t[real_volume]");
for(int i=0;i<3;i++)
{
PrintFormat("[%d]\t%s\t%G\t%G\t%G\t%G\t%G\t%G\t%I64d\t",i,
TimeToString(rates[i].time,TIME_DATE|TIME_MINUTES|TIME_SECONDS),
rates[i].open,rates[i].high,rates[i].low,rates[i].close,
rates[i].tick_volume,rates[i].spread,rates[i].real_volume);
}
}
else
PrintFormat("CopyRates failed, error code=%d",GetLastError());
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Get Time for specified bar index |
//+------------------------------------------------------------------+
datetime iTime(const int index,string symbol=NULL,ENUM_TIMEFRAMES timeframe=PERIOD_CURRENT)
{
if(symbol==NULL)
symbol=Symbol();
if(timeframe==0)
timeframe=Period();
datetime Time[1];
datetime time=0;
int copied=CopyTime(symbol,timeframe,index,1,Time);
if(copied>0) time=Time[0];
return(time);
}
//+------------------------------------------------------------------+
Работает только в момент рождения нового бара.
Распечатка на таймфрейме M30, сервер MetaQuotes-Demo, RTS-3.17:
2017.03.02 13:23:39.146 2017.01.03 10:00:00 Проверка
2017.03.02 13:23:39.146 2017.01.03 10:00:00 [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume]
2017.03.02 13:23:39.146 2017.01.03 10:00:00 [0] 2016.12.30 22:30:00 114820 114960 114710 114780 1422 10 4003
2017.03.02 13:23:39.146 2017.01.03 10:00:00 [1] 2017.01.03 09:00:00 114970 116640 114970 116400 15808 10 41628
2017.03.02 13:23:39.146 2017.01.03 10:00:00 [2] 2017.01.03 09:30:00 116410 116880 116350 116580 8777 10 24622
2017.03.02 13:23:39.647 2017.01.03 10:30:00 Проверка
2017.03.02 13:23:39.647 2017.01.03 10:30:00 [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume]
2017.03.02 13:23:39.647 2017.01.03 10:30:00 [0] 2017.01.03 09:00:00 114970 116640 114970 116400 15808 10 41628
2017.03.02 13:23:39.647 2017.01.03 10:30:00 [1] 2017.01.03 09:30:00 116410 116880 116350 116580 8777 10 24622
2017.03.02 13:23:39.647 2017.01.03 10:30:00 [2] 2017.01.03 10:00:00 116590 116770 116420 116540 9704 10 24699
2017.03.02 13:23:40.142 2017.01.03 11:00:00 Проверка
2017.03.02 13:23:40.142 2017.01.03 11:00:00 [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume]
2017.03.02 13:23:40.142 2017.01.03 11:00:00 [0] 2017.01.03 09:30:00 116410 116880 116350 116580 8777 10 24622
2017.03.02 13:23:40.142 2017.01.03 11:00:00 [1] 2017.01.03 10:00:00 116590 116770 116420 116540 9704 10 24699
2017.03.02 13:23:40.142 2017.01.03 11:00:00 [2] 2017.01.03 10:30:00 116540 116910 116370 116850 9377 10 22963
2017.03.02 13:23:40.629 2017.01.03 11:30:00 Проверка
2017.03.02 13:23:40.629 2017.01.03 11:30:00 [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume]
2017.03.02 13:23:40.629 2017.01.03 11:30:00 [0] 2017.01.03 10:00:00 116590 116770 116420 116540 9704 10 24699
2017.03.02 13:23:40.629 2017.01.03 11:30:00 [1] 2017.01.03 10:30:00 116540 116910 116370 116850 9377 10 22963
2017.03.02 13:23:40.629 2017.01.03 11:30:00 [2] 2017.01.03 11:00:00 116840 117530 116680 117470 11319 10 32073
2017.03.02 13:23:41.096 2017.01.03 12:00:00 Проверка
2017.03.02 13:23:41.096 2017.01.03 12:00:00 [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume]
2017.03.02 13:23:41.096 2017.01.03 12:00:00 [0] 2017.01.03 10:30:00 116540 116910 116370 116850 9377 10 22963
2017.03.02 13:23:41.096 2017.01.03 12:00:00 [1] 2017.01.03 11:00:00 116840 117530 116680 117470 11319 10 32073
2017.03.02 13:23:41.096 2017.01.03 12:00:00 [2] 2017.01.03 11:30:00 117470 118230 117380 118140 20868 10 54006
2017.03.02 13:23:39.146 2017.01.03 10:00:00 [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume]
2017.03.02 13:23:39.146 2017.01.03 10:00:00 [0] 2016.12.30 22:30:00 114820 114960 114710 114780 1422 10 4003
2017.03.02 13:23:39.146 2017.01.03 10:00:00 [1] 2017.01.03 09:00:00 114970 116640 114970 116400 15808 10 41628
2017.03.02 13:23:39.146 2017.01.03 10:00:00 [2] 2017.01.03 09:30:00 116410 116880 116350 116580 8777 10 24622
2017.03.02 13:23:39.647 2017.01.03 10:30:00 Проверка
2017.03.02 13:23:39.647 2017.01.03 10:30:00 [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume]
2017.03.02 13:23:39.647 2017.01.03 10:30:00 [0] 2017.01.03 09:00:00 114970 116640 114970 116400 15808 10 41628
2017.03.02 13:23:39.647 2017.01.03 10:30:00 [1] 2017.01.03 09:30:00 116410 116880 116350 116580 8777 10 24622
2017.03.02 13:23:39.647 2017.01.03 10:30:00 [2] 2017.01.03 10:00:00 116590 116770 116420 116540 9704 10 24699
2017.03.02 13:23:40.142 2017.01.03 11:00:00 Проверка
2017.03.02 13:23:40.142 2017.01.03 11:00:00 [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume]
2017.03.02 13:23:40.142 2017.01.03 11:00:00 [0] 2017.01.03 09:30:00 116410 116880 116350 116580 8777 10 24622
2017.03.02 13:23:40.142 2017.01.03 11:00:00 [1] 2017.01.03 10:00:00 116590 116770 116420 116540 9704 10 24699
2017.03.02 13:23:40.142 2017.01.03 11:00:00 [2] 2017.01.03 10:30:00 116540 116910 116370 116850 9377 10 22963
2017.03.02 13:23:40.629 2017.01.03 11:30:00 Проверка
2017.03.02 13:23:40.629 2017.01.03 11:30:00 [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume]
2017.03.02 13:23:40.629 2017.01.03 11:30:00 [0] 2017.01.03 10:00:00 116590 116770 116420 116540 9704 10 24699
2017.03.02 13:23:40.629 2017.01.03 11:30:00 [1] 2017.01.03 10:30:00 116540 116910 116370 116850 9377 10 22963
2017.03.02 13:23:40.629 2017.01.03 11:30:00 [2] 2017.01.03 11:00:00 116840 117530 116680 117470 11319 10 32073
2017.03.02 13:23:41.096 2017.01.03 12:00:00 Проверка
2017.03.02 13:23:41.096 2017.01.03 12:00:00 [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume]
2017.03.02 13:23:41.096 2017.01.03 12:00:00 [0] 2017.01.03 10:30:00 116540 116910 116370 116850 9377 10 22963
2017.03.02 13:23:41.096 2017.01.03 12:00:00 [1] 2017.01.03 11:00:00 116840 117530 116680 117470 11319 10 32073
2017.03.02 13:23:41.096 2017.01.03 12:00:00 [2] 2017.01.03 11:30:00 117470 118230 117380 118140 20868 10 54006
Распечатка на таймфрейме M30, сервер MetaQuotes-Demo, RTS-3.17:
2017.03.02 13:22:18.108 2017.01.03 10:00:00 Проверка
2017.03.02 13:22:18.108 2017.01.03 10:00:00 [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume]
2017.03.02 13:22:18.108 2017.01.03 10:00:00 [0] 2016.12.30 22:30:00 115070 115120 114950 115020 820 10 1773
2017.03.02 13:22:18.108 2017.01.03 10:00:00 [1] 2016.12.30 23:00:00 115010 115020 114810 114830 1305 10 3411
2017.03.02 13:22:18.108 2017.01.03 10:00:00 [2] 2016.12.30 23:30:00 114820 114960 114710 114780 1422 10 4003
2017.03.02 13:22:18.699 2017.01.03 10:30:00 Проверка
2017.03.02 13:22:18.699 2017.01.03 10:30:00 [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume]
2017.03.02 13:22:18.699 2017.01.03 10:30:00 [0] 2016.12.30 23:00:00 115010 115020 114810 114830 1305 10 3411
2017.03.02 13:22:18.699 2017.01.03 10:30:00 [1] 2016.12.30 23:30:00 114820 114960 114710 114780 1422 10 4003
2017.03.02 13:22:18.699 2017.01.03 10:30:00 [2] 2017.01.03 10:00:00 114970 116640 114970 116400 15808 10 41628
2017.03.02 13:22:19.197 2017.01.03 11:00:00 Проверка
2017.03.02 13:22:19.197 2017.01.03 11:00:00 [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume]
2017.03.02 13:22:19.197 2017.01.03 11:00:00 [0] 2016.12.30 23:30:00 114820 114960 114710 114780 1422 10 4003
2017.03.02 13:22:19.197 2017.01.03 11:00:00 [1] 2017.01.03 10:00:00 114970 116640 114970 116400 15808 10 41628
2017.03.02 13:22:19.197 2017.01.03 11:00:00 [2] 2017.01.03 10:30:00 116410 116880 116350 116580 8777 10 24622
2017.03.02 13:22:19.679 2017.01.03 11:30:00 Проверка
2017.03.02 13:22:19.679 2017.01.03 11:30:00 [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume]
2017.03.02 13:22:19.679 2017.01.03 11:30:00 [0] 2017.01.03 10:00:00 114970 116640 114970 116400 15808 10 41628
2017.03.02 13:22:19.679 2017.01.03 11:30:00 [1] 2017.01.03 10:30:00 116410 116880 116350 116580 8777 10 24622
2017.03.02 13:22:19.679 2017.01.03 11:30:00 [2] 2017.01.03 11:00:00 116590 116770 116420 116540 9704 10 24699
2017.03.02 13:22:20.227 2017.01.03 12:00:00 Проверка
2017.03.02 13:22:20.227 2017.01.03 12:00:00 [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume]
2017.03.02 13:22:20.227 2017.01.03 12:00:00 [0] 2017.01.03 10:30:00 116410 116880 116350 116580 8777 10 24622
2017.03.02 13:22:20.227 2017.01.03 12:00:00 [1] 2017.01.03 11:00:00 116590 116770 116420 116540 9704 10 24699
2017.03.02 13:22:20.227 2017.01.03 12:00:00 [2] 2017.01.03 11:30:00 116540 116910 116370 116850 9377 10 22963
2017.03.02 13:22:18.108 2017.01.03 10:00:00 [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume]
2017.03.02 13:22:18.108 2017.01.03 10:00:00 [0] 2016.12.30 22:30:00 115070 115120 114950 115020 820 10 1773
2017.03.02 13:22:18.108 2017.01.03 10:00:00 [1] 2016.12.30 23:00:00 115010 115020 114810 114830 1305 10 3411
2017.03.02 13:22:18.108 2017.01.03 10:00:00 [2] 2016.12.30 23:30:00 114820 114960 114710 114780 1422 10 4003
2017.03.02 13:22:18.699 2017.01.03 10:30:00 Проверка
2017.03.02 13:22:18.699 2017.01.03 10:30:00 [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume]
2017.03.02 13:22:18.699 2017.01.03 10:30:00 [0] 2016.12.30 23:00:00 115010 115020 114810 114830 1305 10 3411
2017.03.02 13:22:18.699 2017.01.03 10:30:00 [1] 2016.12.30 23:30:00 114820 114960 114710 114780 1422 10 4003
2017.03.02 13:22:18.699 2017.01.03 10:30:00 [2] 2017.01.03 10:00:00 114970 116640 114970 116400 15808 10 41628
2017.03.02 13:22:19.197 2017.01.03 11:00:00 Проверка
2017.03.02 13:22:19.197 2017.01.03 11:00:00 [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume]
2017.03.02 13:22:19.197 2017.01.03 11:00:00 [0] 2016.12.30 23:30:00 114820 114960 114710 114780 1422 10 4003
2017.03.02 13:22:19.197 2017.01.03 11:00:00 [1] 2017.01.03 10:00:00 114970 116640 114970 116400 15808 10 41628
2017.03.02 13:22:19.197 2017.01.03 11:00:00 [2] 2017.01.03 10:30:00 116410 116880 116350 116580 8777 10 24622
2017.03.02 13:22:19.679 2017.01.03 11:30:00 Проверка
2017.03.02 13:22:19.679 2017.01.03 11:30:00 [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume]
2017.03.02 13:22:19.679 2017.01.03 11:30:00 [0] 2017.01.03 10:00:00 114970 116640 114970 116400 15808 10 41628
2017.03.02 13:22:19.679 2017.01.03 11:30:00 [1] 2017.01.03 10:30:00 116410 116880 116350 116580 8777 10 24622
2017.03.02 13:22:19.679 2017.01.03 11:30:00 [2] 2017.01.03 11:00:00 116590 116770 116420 116540 9704 10 24699
2017.03.02 13:22:20.227 2017.01.03 12:00:00 Проверка
2017.03.02 13:22:20.227 2017.01.03 12:00:00 [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume]
2017.03.02 13:22:20.227 2017.01.03 12:00:00 [0] 2017.01.03 10:30:00 116410 116880 116350 116580 8777 10 24622
2017.03.02 13:22:20.227 2017.01.03 12:00:00 [1] 2017.01.03 11:00:00 116590 116770 116420 116540 9704 10 24699
2017.03.02 13:22:20.227 2017.01.03 12:00:00 [2] 2017.01.03 11:30:00 116540 116910 116370 116850 9377 10 22963
Файлы:
TestEA.mq5
6 kb
Я так понял, всё снова упирается в сервер. Сейчас буду переходить с Открытия в БКС. Просто всё же проверять на 1 контракте сложно, нужно склейка.
Vladimir Karputov:
Я понял, что вы берете не последний бар, а предпоследний Вы на каком сервере подключаетесь к котировкам?
Вот эксперт:
//+------------------------------------------------------------------+
//| TestEA.mq5 |
//| Copyright © 2016, Vladimir Karputov |
//| http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, Vladimir Karputov"
#property link "http://wmua.ru/slesar/"
#property version "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//--- we work only at the time of the birth of new bar
static datetime PrevBars=0;
datetime time_0=iTime(0);
if(time_0==PrevBars)
return;
PrevBars=time_0;
//--- выводит значения 3 последних баров
MqlRates rates[];
if(CopyRates(_Symbol,_Period,1,3,rates))
{
//ArrayPrint(rates);
Print("Проверка\n[time]\t[open]\t[high]\t[low]\t[close]\t[tick_volume]\t[spread]\t[real_volume]");
for(int i=0;i<3;i++)
{
PrintFormat("[%d]\t%s\t%G\t%G\t%G\t%G\t%G\t%G\t%I64d\t",i,
TimeToString(rates[i].time,TIME_DATE|TIME_MINUTES|TIME_SECONDS),
rates[i].open,rates[i].high,rates[i].low,rates[i].close,
rates[i].tick_volume,rates[i].spread,rates[i].real_volume);
}
}
else
PrintFormat("CopyRates failed, error code=%d",GetLastError());
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Get Time for specified bar index |
//+------------------------------------------------------------------+
datetime iTime(const int index,string symbol=NULL,ENUM_TIMEFRAMES timeframe=PERIOD_CURRENT)
{
if(symbol==NULL)
symbol=Symbol();
if(timeframe==0)
timeframe=Period();
datetime Time[1];
datetime time=0;
int copied=CopyTime(symbol,timeframe,index,1,Time);
if(copied>0) time=Time[0];
return(time);
}
//+------------------------------------------------------------------+
//| TestEA.mq5 |
//| Copyright © 2016, Vladimir Karputov |
//| http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, Vladimir Karputov"
#property link "http://wmua.ru/slesar/"
#property version "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//--- we work only at the time of the birth of new bar
static datetime PrevBars=0;
datetime time_0=iTime(0);
if(time_0==PrevBars)
return;
PrevBars=time_0;
//--- выводит значения 3 последних баров
MqlRates rates[];
if(CopyRates(_Symbol,_Period,1,3,rates))
{
//ArrayPrint(rates);
Print("Проверка\n[time]\t[open]\t[high]\t[low]\t[close]\t[tick_volume]\t[spread]\t[real_volume]");
for(int i=0;i<3;i++)
{
PrintFormat("[%d]\t%s\t%G\t%G\t%G\t%G\t%G\t%G\t%I64d\t",i,
TimeToString(rates[i].time,TIME_DATE|TIME_MINUTES|TIME_SECONDS),
rates[i].open,rates[i].high,rates[i].low,rates[i].close,
rates[i].tick_volume,rates[i].spread,rates[i].real_volume);
}
}
else
PrintFormat("CopyRates failed, error code=%d",GetLastError());
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Get Time for specified bar index |
//+------------------------------------------------------------------+
datetime iTime(const int index,string symbol=NULL,ENUM_TIMEFRAMES timeframe=PERIOD_CURRENT)
{
if(symbol==NULL)
symbol=Symbol();
if(timeframe==0)
timeframe=Period();
datetime Time[1];
datetime time=0;
int copied=CopyTime(symbol,timeframe,index,1,Time);
if(copied>0) time=Time[0];
return(time);
}
//+------------------------------------------------------------------+
Работает только в момент рождения нового бара.
Распечатка на таймфрейме M30, сервер MetaQuotes-Demo, RTS-3.17:
2017.03.02 13:23:39.146 2017.01.03 10:00:00 Проверка
2017.03.02 13:23:39.146 2017.01.03 10:00:00 [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume]
2017.03.02 13:23:39.146 2017.01.03 10:00:00 [0] 2016.12.30 22:30:00 114820 114960 114710 114780 1422 10 4003
2017.03.02 13:23:39.146 2017.01.03 10:00:00 [1] 2017.01.03 09:00:00 114970 116640 114970 116400 15808 10 41628
2017.03.02 13:23:39.146 2017.01.03 10:00:00 [2] 2017.01.03 09:30:00 116410 116880 116350 116580 8777 10 24622
2017.03.02 13:23:39.647 2017.01.03 10:30:00 Проверка
2017.03.02 13:23:39.647 2017.01.03 10:30:00 [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume]
2017.03.02 13:23:39.647 2017.01.03 10:30:00 [0] 2017.01.03 09:00:00 114970 116640 114970 116400 15808 10 41628
2017.03.02 13:23:39.647 2017.01.03 10:30:00 [1] 2017.01.03 09:30:00 116410 116880 116350 116580 8777 10 24622
2017.03.02 13:23:39.647 2017.01.03 10:30:00 [2] 2017.01.03 10:00:00 116590 116770 116420 116540 9704 10 24699
2017.03.02 13:23:40.142 2017.01.03 11:00:00 Проверка
2017.03.02 13:23:40.142 2017.01.03 11:00:00 [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume]
2017.03.02 13:23:40.142 2017.01.03 11:00:00 [0] 2017.01.03 09:30:00 116410 116880 116350 116580 8777 10 24622
2017.03.02 13:23:40.142 2017.01.03 11:00:00 [1] 2017.01.03 10:00:00 116590 116770 116420 116540 9704 10 24699
2017.03.02 13:23:40.142 2017.01.03 11:00:00 [2] 2017.01.03 10:30:00 116540 116910 116370 116850 9377 10 22963
2017.03.02 13:23:40.629 2017.01.03 11:30:00 Проверка
2017.03.02 13:23:40.629 2017.01.03 11:30:00 [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume]
2017.03.02 13:23:40.629 2017.01.03 11:30:00 [0] 2017.01.03 10:00:00 116590 116770 116420 116540 9704 10 24699
2017.03.02 13:23:40.629 2017.01.03 11:30:00 [1] 2017.01.03 10:30:00 116540 116910 116370 116850 9377 10 22963
2017.03.02 13:23:40.629 2017.01.03 11:30:00 [2] 2017.01.03 11:00:00 116840 117530 116680 117470 11319 10 32073
2017.03.02 13:23:41.096 2017.01.03 12:00:00 Проверка
2017.03.02 13:23:41.096 2017.01.03 12:00:00 [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume]
2017.03.02 13:23:41.096 2017.01.03 12:00:00 [0] 2017.01.03 10:30:00 116540 116910 116370 116850 9377 10 22963
2017.03.02 13:23:41.096 2017.01.03 12:00:00 [1] 2017.01.03 11:00:00 116840 117530 116680 117470 11319 10 32073
2017.03.02 13:23:41.096 2017.01.03 12:00:00 [2] 2017.01.03 11:30:00 117470 118230 117380 118140 20868 10 54006
2017.03.02 13:23:39.146 2017.01.03 10:00:00 [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume]
2017.03.02 13:23:39.146 2017.01.03 10:00:00 [0] 2016.12.30 22:30:00 114820 114960 114710 114780 1422 10 4003
2017.03.02 13:23:39.146 2017.01.03 10:00:00 [1] 2017.01.03 09:00:00 114970 116640 114970 116400 15808 10 41628
2017.03.02 13:23:39.146 2017.01.03 10:00:00 [2] 2017.01.03 09:30:00 116410 116880 116350 116580 8777 10 24622
2017.03.02 13:23:39.647 2017.01.03 10:30:00 Проверка
2017.03.02 13:23:39.647 2017.01.03 10:30:00 [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume]
2017.03.02 13:23:39.647 2017.01.03 10:30:00 [0] 2017.01.03 09:00:00 114970 116640 114970 116400 15808 10 41628
2017.03.02 13:23:39.647 2017.01.03 10:30:00 [1] 2017.01.03 09:30:00 116410 116880 116350 116580 8777 10 24622
2017.03.02 13:23:39.647 2017.01.03 10:30:00 [2] 2017.01.03 10:00:00 116590 116770 116420 116540 9704 10 24699
2017.03.02 13:23:40.142 2017.01.03 11:00:00 Проверка
2017.03.02 13:23:40.142 2017.01.03 11:00:00 [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume]
2017.03.02 13:23:40.142 2017.01.03 11:00:00 [0] 2017.01.03 09:30:00 116410 116880 116350 116580 8777 10 24622
2017.03.02 13:23:40.142 2017.01.03 11:00:00 [1] 2017.01.03 10:00:00 116590 116770 116420 116540 9704 10 24699
2017.03.02 13:23:40.142 2017.01.03 11:00:00 [2] 2017.01.03 10:30:00 116540 116910 116370 116850 9377 10 22963
2017.03.02 13:23:40.629 2017.01.03 11:30:00 Проверка
2017.03.02 13:23:40.629 2017.01.03 11:30:00 [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume]
2017.03.02 13:23:40.629 2017.01.03 11:30:00 [0] 2017.01.03 10:00:00 116590 116770 116420 116540 9704 10 24699
2017.03.02 13:23:40.629 2017.01.03 11:30:00 [1] 2017.01.03 10:30:00 116540 116910 116370 116850 9377 10 22963
2017.03.02 13:23:40.629 2017.01.03 11:30:00 [2] 2017.01.03 11:00:00 116840 117530 116680 117470 11319 10 32073
2017.03.02 13:23:41.096 2017.01.03 12:00:00 Проверка
2017.03.02 13:23:41.096 2017.01.03 12:00:00 [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume]
2017.03.02 13:23:41.096 2017.01.03 12:00:00 [0] 2017.01.03 10:30:00 116540 116910 116370 116850 9377 10 22963
2017.03.02 13:23:41.096 2017.01.03 12:00:00 [1] 2017.01.03 11:00:00 116840 117530 116680 117470 11319 10 32073
2017.03.02 13:23:41.096 2017.01.03 12:00:00 [2] 2017.01.03 11:30:00 117470 118230 117380 118140 20868 10 54006
Распечатка на таймфрейме M30, сервер MetaQuotes-Demo, RTS-3.17:
2017.03.02 13:22:18.108 2017.01.03 10:00:00 Проверка
2017.03.02 13:22:18.108 2017.01.03 10:00:00 [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume]
2017.03.02 13:22:18.108 2017.01.03 10:00:00 [0] 2016.12.30 22:30:00 115070 115120 114950 115020 820 10 1773
2017.03.02 13:22:18.108 2017.01.03 10:00:00 [1] 2016.12.30 23:00:00 115010 115020 114810 114830 1305 10 3411
2017.03.02 13:22:18.108 2017.01.03 10:00:00 [2] 2016.12.30 23:30:00 114820 114960 114710 114780 1422 10 4003
2017.03.02 13:22:18.699 2017.01.03 10:30:00 Проверка
2017.03.02 13:22:18.699 2017.01.03 10:30:00 [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume]
2017.03.02 13:22:18.699 2017.01.03 10:30:00 [0] 2016.12.30 23:00:00 115010 115020 114810 114830 1305 10 3411
2017.03.02 13:22:18.699 2017.01.03 10:30:00 [1] 2016.12.30 23:30:00 114820 114960 114710 114780 1422 10 4003
2017.03.02 13:22:18.699 2017.01.03 10:30:00 [2] 2017.01.03 10:00:00 114970 116640 114970 116400 15808 10 41628
2017.03.02 13:22:19.197 2017.01.03 11:00:00 Проверка
2017.03.02 13:22:19.197 2017.01.03 11:00:00 [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume]
2017.03.02 13:22:19.197 2017.01.03 11:00:00 [0] 2016.12.30 23:30:00 114820 114960 114710 114780 1422 10 4003
2017.03.02 13:22:19.197 2017.01.03 11:00:00 [1] 2017.01.03 10:00:00 114970 116640 114970 116400 15808 10 41628
2017.03.02 13:22:19.197 2017.01.03 11:00:00 [2] 2017.01.03 10:30:00 116410 116880 116350 116580 8777 10 24622
2017.03.02 13:22:19.679 2017.01.03 11:30:00 Проверка
2017.03.02 13:22:19.679 2017.01.03 11:30:00 [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume]
2017.03.02 13:22:19.679 2017.01.03 11:30:00 [0] 2017.01.03 10:00:00 114970 116640 114970 116400 15808 10 41628
2017.03.02 13:22:19.679 2017.01.03 11:30:00 [1] 2017.01.03 10:30:00 116410 116880 116350 116580 8777 10 24622
2017.03.02 13:22:19.679 2017.01.03 11:30:00 [2] 2017.01.03 11:00:00 116590 116770 116420 116540 9704 10 24699
2017.03.02 13:22:20.227 2017.01.03 12:00:00 Проверка
2017.03.02 13:22:20.227 2017.01.03 12:00:00 [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume]
2017.03.02 13:22:20.227 2017.01.03 12:00:00 [0] 2017.01.03 10:30:00 116410 116880 116350 116580 8777 10 24622
2017.03.02 13:22:20.227 2017.01.03 12:00:00 [1] 2017.01.03 11:00:00 116590 116770 116420 116540 9704 10 24699
2017.03.02 13:22:20.227 2017.01.03 12:00:00 [2] 2017.01.03 11:30:00 116540 116910 116370 116850 9377 10 22963
2017.03.02 13:22:18.108 2017.01.03 10:00:00 [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume]
2017.03.02 13:22:18.108 2017.01.03 10:00:00 [0] 2016.12.30 22:30:00 115070 115120 114950 115020 820 10 1773
2017.03.02 13:22:18.108 2017.01.03 10:00:00 [1] 2016.12.30 23:00:00 115010 115020 114810 114830 1305 10 3411
2017.03.02 13:22:18.108 2017.01.03 10:00:00 [2] 2016.12.30 23:30:00 114820 114960 114710 114780 1422 10 4003
2017.03.02 13:22:18.699 2017.01.03 10:30:00 Проверка
2017.03.02 13:22:18.699 2017.01.03 10:30:00 [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume]
2017.03.02 13:22:18.699 2017.01.03 10:30:00 [0] 2016.12.30 23:00:00 115010 115020 114810 114830 1305 10 3411
2017.03.02 13:22:18.699 2017.01.03 10:30:00 [1] 2016.12.30 23:30:00 114820 114960 114710 114780 1422 10 4003
2017.03.02 13:22:18.699 2017.01.03 10:30:00 [2] 2017.01.03 10:00:00 114970 116640 114970 116400 15808 10 41628
2017.03.02 13:22:19.197 2017.01.03 11:00:00 Проверка
2017.03.02 13:22:19.197 2017.01.03 11:00:00 [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume]
2017.03.02 13:22:19.197 2017.01.03 11:00:00 [0] 2016.12.30 23:30:00 114820 114960 114710 114780 1422 10 4003
2017.03.02 13:22:19.197 2017.01.03 11:00:00 [1] 2017.01.03 10:00:00 114970 116640 114970 116400 15808 10 41628
2017.03.02 13:22:19.197 2017.01.03 11:00:00 [2] 2017.01.03 10:30:00 116410 116880 116350 116580 8777 10 24622
2017.03.02 13:22:19.679 2017.01.03 11:30:00 Проверка
2017.03.02 13:22:19.679 2017.01.03 11:30:00 [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume]
2017.03.02 13:22:19.679 2017.01.03 11:30:00 [0] 2017.01.03 10:00:00 114970 116640 114970 116400 15808 10 41628
2017.03.02 13:22:19.679 2017.01.03 11:30:00 [1] 2017.01.03 10:30:00 116410 116880 116350 116580 8777 10 24622
2017.03.02 13:22:19.679 2017.01.03 11:30:00 [2] 2017.01.03 11:00:00 116590 116770 116420 116540 9704 10 24699
2017.03.02 13:22:20.227 2017.01.03 12:00:00 Проверка
2017.03.02 13:22:20.227 2017.01.03 12:00:00 [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume]
2017.03.02 13:22:20.227 2017.01.03 12:00:00 [0] 2017.01.03 10:30:00 116410 116880 116350 116580 8777 10 24622
2017.03.02 13:22:20.227 2017.01.03 12:00:00 [1] 2017.01.03 11:00:00 116590 116770 116420 116540 9704 10 24699
2017.03.02 13:22:20.227 2017.01.03 12:00:00 [2] 2017.01.03 11:30:00 116540 116910 116370 116850 9377 10 22963
CopyRates(_Symbol,_Period,1,3,rates) Поэтому если вы хотите просчитать что-то на последнем баре, вы должны подождать его закрытие, высчитать что-то на следующем баре и показать это уже дальше. Получается вы высчитываете с опозданием в 1 бар.
P.s. например, я должен изменить SL в зависимости от бара. Т.е. Я получаю данные за предыдущий закрывшийся бар, изменяю SL и он изменится только на следующем баре. В итоге у меня получается всегда промежуточный бар.
Fresto:
Я понял, что вы берете не последний бар, а предпоследний
CopyRates(_Symbol,_Period,1,3,rates) Поэтому если вы хотите просчитать что-то на последнем баре, вы должны подождать его закрытие, высчитать что-то на следующем баре и показать это уже дальше. Получается вы высчитываете с опозданием в 1 бар.
P.s. например, я должен изменить SL в зависимости от бара. Т.е. Я получаю данные за предыдущий закрывшийся бар, изменяю SL и он изменится только на следующем баре. В итоге у меня получается всегда промежуточный бар.
Я понял, что вы берете не последний бар, а предпоследний
CopyRates(_Symbol,_Period,1,3,rates) Поэтому если вы хотите просчитать что-то на последнем баре, вы должны подождать его закрытие, высчитать что-то на следующем баре и показать это уже дальше. Получается вы высчитываете с опозданием в 1 бар.
P.s. например, я должен изменить SL в зависимости от бара. Т.е. Я получаю данные за предыдущий закрывшийся бар, изменяю SL и он изменится только на следующем баре. В итоге у меня получается всегда промежуточный бар.
И вот тогда у нас по бару одно и то же значение у close, open, high, low.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
ArraySetAsSeries(mrate,true);
if (!mysymbol.RefreshRates())
{
Alert("Ошибка обновления котировок - ошибка: ",GetLastError(),"!");
return;
}
if(CopyRates(_Symbol,_Period,0,3,mrate)<0)
{
Alert("Ошибка копирования исторических данных - ошибка:",GetLastError(),"!!");
return;
}