
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Добрый день.
Пытаюсь разобратся с MQL5. Разобрал exp_tema.mq5 и переделал код. Сейчас должен печатать в журнале MA каждой свечи (последние 20 ). Но не понимаю, почему журнале отсутствует некоторые записи. Заметил, если в журнале отсутствует ma[3] тогда и не будет ma[13]. Почему это происходит? Где там ошибка?
Вот тут
явно не хватает проверок:
видюшку не надо.
сделайте в коде подробное Print, чтоб мы в журнале посмотрели чему равны промежуточные переменные.
#property copyright "Copyright 2011, "
#property link "http://www.mql5.com"#property version "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
double Vhod=0;
Print("Начало_Vhod="+DoubleToString(Vhod,2));
Vhod=linfunc(15);
Print("Конец_Vhod="+DoubleToString(Vhod,2));
//---
return(0);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
}
//+------------------------------------------------------------------+
double linfunc(double b) // имя функции и список параметров
{
double a=1;
while((a/b)<1 && !IsStopped())//-------------------
{
Print("а="+DoubleToString(a,2)+", b="+DoubleToString(b,2)+", a/b="+DoubleToString(a/b,2));
a=a+1;
}
Print("а="+DoubleToString(a,2)+", b="+DoubleToString(b,2)+", a/b="+DoubleToString(a/b,2));
Print("a+b="+DoubleToString(a+b,2));
double f=a+b;
// составной оператор
return(f); // возвращаемое значение
}
//+------------------------------------------------------------------+
Вот такой код.
Вот его принт
GM 0 1 (EURUSD,M1) 18:11:11 Начало_Vhod=0.00
FO 0 1 (EURUSD,M1) 18:11:13 а=1.00, b=15.00, a/b=0.07
JF 0 1 (EURUSD,M1) 18:11:13 а=2.00, b=15.00, a/b=0.13
CQ 0 1 (EURUSD,M1) 18:11:13 а=3.00, b=15.00, a/b=0.20
EH 0 1 (EURUSD,M1) 18:11:13 а=4.00, b=15.00, a/b=0.27
KS 0 1 (EURUSD,M1) 18:11:13 а=5.00, b=15.00, a/b=0.33
PJ 0 1 (EURUSD,M1) 18:11:13 а=6.00, b=15.00, a/b=0.40
PE 0 1 (EURUSD,M1) 18:11:13 а=7.00, b=15.00, a/b=0.47
HL 0 1 (EURUSD,M1) 18:11:13 а=8.00, b=15.00, a/b=0.53
MF 0 1 (EURUSD,M1) 18:11:13 а=9.00, b=15.00, a/b=0.60
JR 0 1 (EURUSD,M1) 18:11:13 а=10.00, b=15.00, a/b=0.67
FK 0 1 (EURUSD,M1) 18:11:13 а=11.00, b=15.00, a/b=0.73
OP 0 1 (EURUSD,M1) 18:11:13 а=12.00, b=15.00, a/b=0.80
MI 0 1 (EURUSD,M1) 18:11:13 а=13.00, b=15.00, a/b=0.87
KF 0 1 (EURUSD,M1) 18:11:13 а=14.00, b=15.00, a/b=0.93
EO 0 1 (EURUSD,M1) 18:11:13 а=15.00, b=15.00, a/b=1.00
DJ 0 1 (EURUSD,M1) 18:11:14 a+b=30.00
RL 0 1 (EURUSD,M1) 18:11:17 Конец_Vhod=0.00
NH 2 1 (EURUSD,M1) 18:11:24 debugging terminated
Если дебажный EX5 запускать не из редактора, а прямо в терминале - такой же результат?
Можете приложить отладочный EX5?
Вот его принт
GM 0 1 (EURUSD,M1) 18:11:11 Начало_Vhod=0.00
FO 0 1 (EURUSD,M1) 18:11:13 а=1.00, b=15.00, a/b=0.07
JF 0 1 (EURUSD,M1) 18:11:13 а=2.00, b=15.00, a/b=0.13
CQ 0 1 (EURUSD,M1) 18:11:13 а=3.00, b=15.00, a/b=0.20
EH 0 1 (EURUSD,M1) 18:11:13 а=4.00, b=15.00, a/b=0.27
KS 0 1 (EURUSD,M1) 18:11:13 а=5.00, b=15.00, a/b=0.33
PJ 0 1 (EURUSD,M1) 18:11:13 а=6.00, b=15.00, a/b=0.40
PE 0 1 (EURUSD,M1) 18:11:13 а=7.00, b=15.00, a/b=0.47
HL 0 1 (EURUSD,M1) 18:11:13 а=8.00, b=15.00, a/b=0.53
MF 0 1 (EURUSD,M1) 18:11:13 а=9.00, b=15.00, a/b=0.60
JR 0 1 (EURUSD,M1) 18:11:13 а=10.00, b=15.00, a/b=0.67
FK 0 1 (EURUSD,M1) 18:11:13 а=11.00, b=15.00, a/b=0.73
OP 0 1 (EURUSD,M1) 18:11:13 а=12.00, b=15.00, a/b=0.80
MI 0 1 (EURUSD,M1) 18:11:13 а=13.00, b=15.00, a/b=0.87
KF 0 1 (EURUSD,M1) 18:11:13 а=14.00, b=15.00, a/b=0.93
EO 0 1 (EURUSD,M1) 18:11:13 а=15.00, b=15.00, a/b=1.00
DJ 0 1 (EURUSD,M1) 18:11:14 a+b=30.00
RL 0 1 (EURUSD,M1) 18:11:17 Конец_Vhod=0.00
NH 2 1 (EURUSD,M1) 18:11:24 debugging terminated
Не воспроизводится.
Win7 x64
MT5 x64 build 687
Если дебажный EX5 запускать не из редактора, а прямо в терминале - такой же результат?
Можете приложить отладочный EX5?
Да интересно получается, если запускаю с тестера, работает 30 выдает, если в качестве советника тоже выдает 30 на принт.
Если иду опять в отладку там 0.
MetaDriver
На каком билде и на какой виде (извиняюсь за выражение) получилось.
Надо все таки наверно видюшку выложить будет, если не у кого воспроизвести сие чудо не получится.
Вот тут
явно не хватает проверок:
Спасибо, попытаюсь добавить.
Вот видео (только там разрешение побольше 720 выбирайте, а то все в мыле будит)
https://www.youtube.com/watch?v=Prpw6DUYvjY&feature=youtu.be
Win7 64bit MT5 687 билд
Как выяснил эффект когда return выдает 0, происходит вроде только в отладчике.
При этом, если использовать только кнопку "шаг с заходом" вроде работает.
Если войдя в цикл while выйти кнопкой "шаг на ружу" не работает на выходе стабильно 0.
В общем на видео все видно, но как быть и чего делать пока мне не понятно (и почему так только у меня?)
Win7 64bit MT5 687 билд
При оптимизации вылезли непонятные символы
На вкладке график оптимизации по вертикали все значения -1
Вот тут
явно не хватает проверок:
Однако с буферами мне пока проблеми, читаю - всё понятно а как надо применять в коде, так не особо понятно. Если не сложно, можете вставить это в код?