Вызов start() внутри init() - это техническая необходимость или предпочтения автора?
P.S. Спасибо - хорошая работа!
Подскажите для чайника (по С++): "Как передать между терминалами время?" (т.е. ещё один параметр).
Простое увеличение рабочих массивов (price[][4] и data[4]) на один индекс результатов не приносят. Я могу предположить, что не хватает размера ячейки памяти для переноса переменной.
Увеличение
#define SIZE 16 // размер вектора для записи (3*int(4))
SIZE с 12 до 16 тоже не дало результатов.
Спасибо.
Подскажите для чайника (по С++): "Как передать между терминалами время?" (т.е. ещё один параметр).
Простое увеличение рабочих массивов (price[][4] и data[4]) на один индекс результатов не приносят. Я могу предположить, что не хватает размера ячейки памяти для переноса переменной.
Увеличение
#define SIZE 16 // размер вектора для записи (3*int(4))
SIZE с 12 до 16 тоже не дало результатов.
Спасибо.
В правильном направлении гребёте, Товарищ! - если всё сделали правильно, должно работать.
А вот результаты работы со временем на разных терминалах. Это принты одного и того же временного промежутка, но с разных терминалов.
Первый терминал:
2012.01.20 10:29:59 e-PSI@Monitor_v1.0 EURUSD,M1: 14227: Time[07:29:59] = 10:29:59 | Close[0] = 1.29680 | Open[1] = 1.29660 | High[1] = 1.29690 | Low[1] = 1.29660
2012.01.20 10:29:59 e-PSI@Monitor_v1.0 EURUSD,M1: 79319: Time[07:29:59] = 08:30:00 | Close[0] = 1.29680 | Open[1] = 1.29660 | High[1] = 1.29690 | Low[1] = 1.29660
2012.01.20 10:29:09 e-PSI@Monitor_v1.0 EURUSD,M1: 14227: Time[07:29:09] = 10:29:09 | Close[0] = 1.29660 | Open[1] = 1.29680 | High[1] = 1.29680 | Low[1] = 1.29650
2012.01.20 10:29:09 e-PSI@Monitor_v1.0 EURUSD,M1: 79319: Time[07:29:09] = 08:29:10 | Close[0] = 1.29650 | Open[1] = 1.29680 | High[1] = 1.29680 | Low[1] = 1.29650
2012.01.20 10:28:08 e-PSI@Monitor_v1.0 EURUSD,M1: 14227: Time[07:28:08] = 10:28:08 | Close[0] = 1.29680 | Open[1] = 1.29640 | High[1] = 1.29680 | Low[1] = 1.29630
2012.01.20 10:28:08 e-PSI@Monitor_v1.0 EURUSD,M1: 79319: Time[07:28:08] = 08:28:09 | Close[0] = 1.29680 | Open[1] = 1.29640 | High[1] = 1.29680 | Low[1] = 1.29630
2012.01.20 10:27:19 e-PSI@Monitor_v1.0 EURUSD,M1: 14227: Time[07:27:19] = 10:27:18 | Close[0] = 1.29640 | Open[1] = 1.29620 | High[1] = 1.29650 | Low[1] = 1.29620
2012.01.20 10:27:19 e-PSI@Monitor_v1.0 EURUSD,M1: 79319: Time[07:27:19] = 08:27:20 | Close[0] = 1.29630 | Open[1] = 1.29620 | High[1] = 1.29640 | Low[1] = 1.29620
2012.01.20 10:25:58 e-PSI@Monitor_v1.0 EURUSD,M1: 14227: Time[07:25:58] = 10:25:58 | Close[0] = 1.29620 | Open[1] = 1.29640 | High[1] = 1.29660 | Low[1] = 1.29610
2012.01.20 10:25:58 e-PSI@Monitor_v1.0 EURUSD,M1: 79319: Time[07:25:58] = 08:26:00 | Close[0] = 1.29610 | Open[1] = 1.29650 | High[1] = 1.29660 | Low[1] = 1.29610
2012.01.20 10:25:00 e-PSI@Monitor_v1.0 EURUSD,M1: 14227: Time[07:25:00] = 10:25:00 | Close[0] = 1.29640 | Open[1] = 1.29660 | High[1] = 1.29660 | Low[1] = 1.29640
2012.01.20 10:25:00 e-PSI@Monitor_v1.0 EURUSD,M1: 79319: Time[07:25:00] = 08:25:02 | Close[0] = 1.29640 | Open[1] = 1.29660 | High[1] = 1.29660 | Low[1] = 1.29640
2012.01.20 10:24:04 e-PSI@Monitor_v1.0 EURUSD,M1: 14227: Time[07:24:04] = 10:24:04 | Close[0] = 1.29670 | Open[1] = 1.29630 | High[1] = 1.29690 | Low[1] = 1.29630
2012.01.20 10:24:04 e-PSI@Monitor_v1.0 EURUSD,M1: 79319: Time[07:24:04] = 08:24:06 | Close[0] = 1.29670 | Open[1] = 1.29640 | High[1] = 1.29690 | Low[1] = 1.29640
2012.01.20 10:23:05 e-PSI@Monitor_v1.0 EURUSD,M1: 14227: Time[07:23:05] = 10:22:41 | Close[0] = 1.29630 | Open[1] = 1.29600 | High[1] = 1.29640 | Low[1] = 1.29600
2012.01.20 10:23:05 e-PSI@Monitor_v1.0 EURUSD,M1: 79319: Time[07:23:05] = 08:23:06 | Close[0] = 1.29650 | Open[1] = 1.29610 | High[1] = 1.29650 | Low[1] = 1.29600
2012.01.20 10:21:58 e-PSI@Monitor_v1.0 EURUSD,M1: 14227: Time[07:21:58] = 10:21:58 | Close[0] = 1.29600 | Open[1] = 1.29610 | High[1] = 1.29620 | Low[1] = 1.29600
2012.01.20 10:21:58 e-PSI@Monitor_v1.0 EURUSD,M1: 79319: Time[07:21:58] = 08:22:00 | Close[0] = 1.29600 | Open[1] = 1.29610 | High[1] = 1.29620 | Low[1] = 1.29590
2012.01.20 10:21:05 e-PSI@Monitor_v1.0 EURUSD,M1: 14227: Time[07:21:05] = 10:21:05 | Close[0] = 1.29610 | Open[1] = 1.29610 | High[1] = 1.29620 | Low[1] = 1.29600
2012.01.20 10:21:05 e-PSI@Monitor_v1.0 EURUSD,M1: 79319: Time[07:21:05] = 08:21:06 | Close[0] = 1.29610 | Open[1] = 1.29610 | High[1] = 1.29620 | Low[1] = 1.29600
2012.01.20 10:20:01 e-PSI@Monitor_v1.0 EURUSD,M1: 14227: Time[07:20:01] = 10:20:01 | Close[0] = 1.29610 | Open[1] = 1.29630 | High[1] = 1.29640 | Low[1] = 1.29610
2012.01.20 10:20:01 e-PSI@Monitor_v1.0 EURUSD,M1: 79319: Time[07:20:01] = 08:20:02 | Close[0] = 1.29620 | Open[1] = 1.29630 | High[1] = 1.29640 | Low[1] = 1.29610
Второй терминал:
2012.01.20 10:30:00 e-PSI@Monitor_v1.0 EURUSD,H1: 14227: Time[07:30:00] = 10:30:00 | Close[1] = 1.29680 | Open[0] = 1.29680 | Open[1] = 1.29660 | High[1] = 1.29690 | Low[1] = 1.29660 2012.01.20 10:30:00 e-PSI@Monitor_v1.0 EURUSD,H1: 79319: Time[07:30:00] = 08:30:02 | Close[1] = 1.29670 | Open[0] = 1.29670 | Open[1] = 1.29650 | High[1] = 1.29690 | Low[1] = 1.29650 2012.01.20 10:29:07 e-PSI@Monitor_v1.0 EURUSD,H1: 14227: Time[07:29:07] = 10:29:07 | Close[1] = 1.29650 | Open[0] = 1.29660 | Open[1] = 1.29670 | High[1] = 1.29670 | Low[1] = 1.29650 2012.01.20 10:29:07 e-PSI@Monitor_v1.0 EURUSD,H1: 79319: Time[07:29:07] = 08:29:09 | Close[1] = 1.29650 | Open[0] = 1.29650 | Open[1] = 1.29670 | High[1] = 1.29670 | Low[1] = 1.29650 2012.01.20 10:28:09 e-PSI@Monitor_v1.0 EURUSD,H1: 14227: Time[07:28:09] = 10:28:09 | Close[1] = 1.29680 | Open[0] = 1.29670 | Open[1] = 1.29640 | High[1] = 1.29680 | Low[1] = 1.29630 2012.01.20 10:28:09 e-PSI@Monitor_v1.0 EURUSD,H1: 79319: Time[07:28:09] = 08:28:10 | Close[1] = 1.29670 | Open[0] = 1.29670 | Open[1] = 1.29630 | High[1] = 1.29680 | Low[1] = 1.29630 2012.01.20 10:27:16 e-PSI@Monitor_v1.0 EURUSD,H1: 14227: Time[07:27:16] = 10:27:16 | Close[1] = 1.29630 | Open[0] = 1.29640 | Open[1] = 1.29630 | High[1] = 1.29650 | Low[1] = 1.29630 2012.01.20 10:27:16 e-PSI@Monitor_v1.0 EURUSD,H1: 79319: Time[07:27:16] = 08:27:18 | Close[1] = 1.29630 | Open[0] = 1.29630 | Open[1] = 1.29620 | High[1] = 1.29640 | Low[1] = 1.29620 2012.01.20 10:26:03 e-PSI@Monitor_v1.0 EURUSD,H1: 14227: Time[07:26:03] = 10:26:03 | Close[1] = 1.29620 | Open[0] = 1.29630 | Open[1] = 1.29650 | High[1] = 1.29660 | Low[1] = 1.29610 2012.01.20 10:26:03 e-PSI@Monitor_v1.0 EURUSD,H1: 79319: Time[07:26:03] = 08:26:04 | Close[1] = 1.29620 | Open[0] = 1.29620 | Open[1] = 1.29650 | High[1] = 1.29660 | Low[1] = 1.29610 2012.01.20 10:25:00 e-PSI@Monitor_v1.0 EURUSD,H1: 14227: Time[07:25:00] = 10:25:00 | Close[1] = 1.29640 | Open[0] = 1.29650 | Open[1] = 1.29660 | High[1] = 1.29660 | Low[1] = 1.29640 2012.01.20 10:25:00 e-PSI@Monitor_v1.0 EURUSD,H1: 79319: Time[07:25:00] = 08:25:02 | Close[1] = 1.29640 | Open[0] = 1.29650 | Open[1] = 1.29670 | High[1] = 1.29670 | Low[1] = 1.29640 2012.01.20 10:24:04 e-PSI@Monitor_v1.0 EURUSD,H1: 14227: Time[07:24:04] = 10:24:04 | Close[1] = 1.29670 | Open[0] = 1.29660 | Open[1] = 1.29640 | High[1] = 1.29690 | Low[1] = 1.29640 2012.01.20 10:24:04 e-PSI@Monitor_v1.0 EURUSD,H1: 79319: Time[07:24:04] = 08:24:05 | Close[1] = 1.29670 | Open[0] = 1.29670 | Open[1] = 1.29640 | High[1] = 1.29690 | Low[1] = 1.29640 2012.01.20 10:23:13 e-PSI@Monitor_v1.0 EURUSD,H1: 14227: Time[07:23:13] = 10:23:13 | Close[1] = 1.29630 | Open[0] = 1.29640 | Open[1] = 1.29600 | High[1] = 1.29640 | Low[1] = 1.29600 2012.01.20 10:23:13 e-PSI@Monitor_v1.0 EURUSD,H1: 79319: Time[07:23:13] = 08:23:14 | Close[1] = 1.29640 | Open[0] = 1.29640 | Open[1] = 1.29600 | High[1] = 1.29650 | Low[1] = 1.29600 2012.01.20 10:22:00 e-PSI@Monitor_v1.0 EURUSD,H1: 14227: Time[07:22:00] = 10:22:01 | Close[1] = 1.29610 | Open[0] = 1.29600 | Open[1] = 1.29600 | High[1] = 1.29620 | Low[1] = 1.29600 2012.01.20 10:22:00 e-PSI@Monitor_v1.0 EURUSD,H1: 79319: Time[07:22:00] = 08:22:02 | Close[1] = 1.29600 | Open[0] = 1.29600 | Open[1] = 1.29610 | High[1] = 1.29620 | Low[1] = 1.29590 2012.01.20 10:21:16 e-PSI@Monitor_v1.0 EURUSD,H1: 14227: Time[07:21:16] = 10:21:16 | Close[1] = 1.29610 | Open[0] = 1.29600 | Open[1] = 1.29610 | High[1] = 1.29620 | Low[1] = 1.29600 2012.01.20 10:21:16 e-PSI@Monitor_v1.0 EURUSD,H1: 79319: Time[07:21:16] = 08:21:17 | Close[1] = 1.29610 | Open[0] = 1.29610 | Open[1] = 1.29620 | High[1] = 1.29620 | Low[1] = 1.29600 2012.01.20 10:20:01 e-PSI@Monitor_v1.0 EURUSD,H1: 14227: Time[07:20:01] = 10:20:01 | Close[1] = 1.29620 | Open[0] = 1.29610 | Open[1] = 1.29640 | High[1] = 1.29640 | Low[1] = 1.29610 2012.01.20 10:20:01 e-PSI@Monitor_v1.0 EURUSD,H1: 79319: Time[07:20:01] = 08:20:02 | Close[1] = 1.29620 | Open[0] = 1.29620 | Open[1] = 1.29630 | High[1] = 1.29640 | Low[1] = 1.29610Небольшие пояснения. Принт производится на момент появления нового M1 бара в "локальном" терминале. Сначала в скобках идёт время GMT, затем текущее время терминала (TimeCurrent()), а затем зафиксированные за этот промежуток времени (м\у открытиями баров) цены.
Смотрю, что терминалу +- 20 секунд закрыть бар - "Не вопрос!".
Очень интересный инструмент для исследований!
Ещё раз автору СПАСИБО!!!
А кто-нибудь подскажет!? Во избежания повторной регистрации одного и того же терминала будет ли корректно записать так:
if (hmem > 0) // если открыли { Print ("open OK h = ", hmem); int r = MemRead (hmem, head, 0, HEAD, err); bool lb_double = false; //---- Исключаем повторную регистрацию терминала for (int i = 0; i < head[1] + 1; i++) { //---- Считываем данные с серверов r = MemRead (hmem, data, HEAD + i * SIZE, SIZE, err); if (r < SIZE || err[0] != 0) continue; if (AccountNumber() == data[1]) { lb_double = true; Print ("Terminal is registered, continue..."); adr = i; head[0]++; Print ("read head uses = ", head[0], " adr = ", adr, " | r = ", r, " err = ", err[0]); break; } } //---- Если регистрируемся впервые if (!lb_double) { Print ("read head uses = ", head[0], " adr = ", head[1], " | r = ", r, " err = ", err[0]); head[0]++; head[1]++; adr = head[1]; // число использования файла и адрес текущего терминала в файле hmem = MemGrows (hmem, file, HEAD + (adr + 1) * SIZE, err); Print ("grows to ", (HEAD + (adr + 1) * SIZE), " | h = ", hmem + " err = ", err[0]); } int w = MemWrite (hmem, head, 0, HEAD, err); Print ("write head w = ", w, " err = ", err[0]); }
Меня в первую очередь интересует получить правильный адрес (adr) в файле памяти - тот, который и был.
добавил на 20 окон, терминал грузит проц на 50%.
если добавить ещё один терминал(а смысл советника именно в этом), то загрузка уже под 100%.
при этом оперативы жрёт очень мало.
как бы изменить приоритеты?) проц у меня слабенький, а озу много.
а вообще спасибо. интересная штуковина.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Мониторинг котировок (пример для маппинга):
Author: o_O