Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 483

 
Boris.45:

Всем привет. Прошу помощи у хорошо знающих тестер. По крайней мере мне кажется, что проблема в нем.

 Суть моей проблемы. Напиал кусок программы для оценки 7-ми первых свеч в ценовом графике. По каждой свече оцниваю её тип (растущая, падающая, додж). длину тела свечи и отношение длины тени к длине тела свечи. 

Всю информацию собрал в двумерный массив.  Программа прошла кмпиляцию, проверил правильность числовых вычислений. Сделано все чисто. Ставлю этот кусок программы на тестирпвание с выводом параметров свечей.

Минимальный интервал тестирования одни сутки. На часовом графике получаю 6 выводов, по одному выводу на новую свечу. Все вычисляется правильно. НО !!!!!  После этого вывод информации прекращается, а должно быть 24 вывода.

   Ввёл переменную, учитывающую текущий номер первой свечи и попробовал вывести информацию начиная с 10-го номера. Тестер вообще никаких распечаток не выводит. 

Пож., кто знает причину этой проблемы, подскажите. 

А код свой приложить забыли.
 
Karputov Vladimir:
А код свой приложить забыли.
Вы имеете в виду этот кусок программы?
 
Boris.45:
Вы имеете в виду этот кусок программы?
Не кусок, а программу, которую можно скомпилировать и прогнать в режиме отладки.
 
-Aleks-:

 

Вы ранее писали о MT4 - совет был по нему, а у MT5 проблемы с родной историей - котировки только от MQ, на сколько мне известно, сам пользуюсть только MT4.

"

Mike:
В МТ4(Alpari-Demo) хочу сохранить в файл архив котировок длиннее, чем по умолчанию (2048 свечей). Удаляю то, что было, нажимаю "Загрузить".
 С сайта MetaQuotes что-то грузится, получаю такую картину: 

Уже понял неточность, дело в том, что у Метаквотов эти котировки только в МТ5.  Я вот думаю, наверное писал же кто-нибудь приспособу для сохранения свечек с графика в текстовый файл ...
 
Mike:
Уже понял неточность, дело в том, что у Метаквотов эти котировки только в МТ5.  Я вот думаю, наверное писал же кто-нибудь приспособу для сохранения свечек с графика в текстовый файл ...

Так всё ж для чего данные нужны, для MT4 или MT5? 

 
-Aleks-:

Так всё ж для чего данные нужны, для MT4 или MT5? 

Мне сейчас просто нужны котировки , прогнать на другом тестере.  Если будет результат, тогда буду решать вопрос о заказе эксперта для МТ4 по моим алгоритмам.
 
Mike:
Мне сейчас просто нужны котировки , прогнать на другом тестере.  Если будет результат, тогда буду решать вопрос о заказе эксперта для МТ4 по моим алгоритмам.

Альпари даёт котировки для  МТ4  за лет 10 - попробуйте там взять.

Технически же все котировки можно выгрузить потом из терминала МТ4 через F2 -> Экспорт 

 

Karputov Vladimir:
Не кусок, а программу, которую можно скомпилировать и прогнать в режиме отладки.

Спасибо за готовность помочь.   Я упрощу написанное и оставлю в программе только этот кусок.  Завтра его выставлю.

 
Друзья, у меня вопрос больше касательно настройки сигнала. 
Проблема такая : когда у поставщика ордера закрываются- у подписчика они продолжают держаться. Видимо из за разницы в спреде. Как сделать, что бы сделки подписчика закрывались мгновенно при их закрытии у поставщика ? Какую настройку следует изменить?
 
Leo59:
Спасибо Вам Алексей!!!! для 4-ки))))

Так..я нашел свой старый индюк и вырезал из него нужное. Писать за вас я не буду)), но для толчка пойдет. Я там комментов добавил, имена переменных понятны из названий.

datetime date[]; // тут будем хранить данные времени баров, которые видны на экране
// если нужны другие данные баров, заводим соотв. массивы 

void DoWork(bool redrawAll = false)
{
    int visibleBars = 1, firstVisibleBars = 0;
    visibleBars = (int)ChartGetInteger(0, CHART_VISIBLE_BARS);
    firstVisibleBars = (int)ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR);
    
    ArrayResize(date, visibleBars + 10); // выделяем память с запасом

    // так можно узнать масштаб графика, может пригодится
    int scale = (int)ChartGetInteger(0, CHART_SCALE);
    // копируем данные времен баров 
    if (CopyTime(Symbol(), Period(), startpos, visibleBars, date) == -1)
    {
        Print("Не удалось скопировать значения времени! Код ошибки = ", GetLastError());
        return;
    }

    //--- определим шаг, если надо работать с масштабом
    int step = 1;
    switch (scale)
    {
    case 0:
        step = 12;
        break;
    case 1:
        step = 6;
        break;
    case 2:
        step = 4;
        break;
    case 3:
        step = 2;
        break;
    }
    double priceMin = ChartGetDouble(0,CHART_PRICE_MIN,0);
    double priceMax = ChartGetDouble(0,CHART_PRICE_MAX,0);

    for (int i = visibleBars - 1; i >= 0; i--)
    {
        /*
        проходимся по всем видимым барам и ищем стрелки, искать можно путями:
        1. Изначально при создании стрелок надо формировать имена стрелок с привязкой ко времени, например
        string name = "UpArrow"  + IntegerToString(TimeCurrent());
        тогда тупо ищем стрелку с таким именем и далее двигаем, куда надо
        2. Заносить стрелки в структуры и класть их в хештаблицу, первый проще
        */
    }
    
}