Ответить
05.08.2015, 11:51
Аватар для Saigon
Saigon Saigon вне форума Активный участник
Регистрация: 16.07.2015 / Сообщений: 207
Поблагодарили 59 раз(а) / Репутация: 60
Помогите полажуйста доработать вот такой индикатор Кластер - профиль. Этот индикатор считает тики по Аскам и Бидам и выдает:
1-е - Уровни (синего цвета) - на которых больше всего происходит сделок (это объемы);
2-е - Уровни быков (зеленые) и медведей (красные) - на которых больше всего совершили сделки (тики в верх или вниз) быки и медведи, то есть это уровни которые отвечают на вопрос: Кто больше сейчас влили денег в сильный уровень?

Доработать хотелось бы следующее:

1) Нужно сделать так, что бы индикатор стоял на месте от линии открытия периода (вертикальная пунктирная), а не перемещался в след за ценой;
2) Нужно сделать так, что бы индикатор сохранял ту картинку профиля которую он нарисовал к окончанию периода, а в новый период начинал рисовать новый профиль;
3) Нужно, что бы индикатор считал тики и после выключения терминала и компьютера (а то получается разрыв в данных). То есть нужно сделать так, что бы он каким-то образом был подключен к серверу подающему котировки.
4) Необходимо что бы индикатор можно было прогонять в тестере стратегий.
07.08.2015, 01:41
Аватар для Gnn-life
Gnn-life Gnn-life вне форума Элитный участник
Регистрация: 09.04.2012 / Адрес: Питер / Сообщений: 515
Поблагодарили 1,042 раз(а) / Репутация: 1042
Если нужна вся история, сделай так: в строке
PHP код:
 limit bar IndicatorCounted(); 
замени bar на Bars, если нужно ограничение по истории, замени на:
PHP код:
 limit MathMin(Bars IndicatorCounted(),bar); 
Саш, ты со мной разговаривал в живую по скайпу, я не верю что такое бывает, а вы? мкл*
11.08.2015, 10:48
Аватар для OlgaSv
OlgaSv OlgaSv вне форума Новичок форума
Регистрация: 03.07.2015 / Сообщений: 26
Поблагодарили 23 раз(а) / Репутация: 24
Доброго времени!
Подскажите, пожалуйста, по кешу.
Оптимизация советника с генетическим алгоритмом. Заданы параметры оптимизации.
1-й прогон - одни результаты, 2-й прогон - вторые результаты, 10-й прогон - десятый результат. Параметры не изменяются, но после каждого прогона, получается разный результат.
Советник дергает данные из кеша.
Нормальное ли это поведение? Можно ли как-нибудь в советник вшить обнуление/не использование результатов предыдущего прогона (кеша).
Просто до этого ни разу не видела такое поведение советника/результатов оптимизации.
Куда копать? (копать отсюда не предлагать)
18.08.2015, 17:43
Аватар для buguruslan
buguruslan buguruslan вне форума Активный участник
Регистрация: 12.08.2012 / Сообщений: 57
Поблагодарили 35 раз(а) / Репутация: 35
Здравствуйте. Пытаюсь освоить виртуальный хостинг, все по инструкции, а советник не открывается. Помогите, плз
18.08.2015, 17:53
Аватар для moafiz
moafiz moafiz вне форума Интересующийся
Регистрация: 28.04.2013 / Сообщений: 9
Поблагодарили 1 раз в 1 сообщении / Репутация: 2

По умолчанию Оптимизация?

Непонял просто оптимизируеш или визуально просматриваеш торговлю?Что именно неменяется ?Что нужно изменить?
18.08.2015, 18:47
Аватар для buguruslan
buguruslan buguruslan вне форума Активный участник
Регистрация: 12.08.2012 / Сообщений: 57
Поблагодарили 35 раз(а) / Репутация: 35
Строго по инструкции миграция на виртуальный хостинг, советник там не работает, пишет : cannot open file
26.08.2015, 16:54
Аватар для Andy200577
Andy200577 Andy200577 вне форума Новичок форума
Регистрация: 20.06.2012 / Сообщений: 57
Поблагодарили 8 раз(а) / Репутация: 9
Уважаемые господа. Помогите пожалуйста с таким прозаическим вопросом.
Как грамотно реализовать неперерисовывающийся стрелочный индикатор?
Если индикатор перерисовывается, то всё понятно, ставим в начале цикла перебора баров массивы буферов вида BufferUp[i] = EMPTY_VALUE и BufferDown[i] = EMPTY_VALUE и далее в зависимости от совпадения сигналов, формирующих стрелки, эти данные принимают непустые значения и отвечают за наличие стрелок на графике, если сигнал формирующий пропадает, то пропадают и стрелки.
Но требуется сделать так, чтобы при поступлении формирующего стрелку сигнала, стрелка всегда оставалась на графике независимо от того, пропал ли формирующий сигнал или нет, а при закрытии свечи стрелка также должна передвигаться на предыдущую свечу.
Для этого достаточно не указывать в начале массива пустые значения буферов и все стрелки сдвигаются по умолчанию автоматом при закрытии свечей или при закрытии свечи нужно самостоятельно указывать сдвиг предыдущих значений буферов?

Последний раз редактировалось Andy200577; 26.08.2015 в 17:07.
26.08.2015, 17:34
Аватар для AlexeyVik
AlexeyVik AlexeyVik вне форума Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,590
Поблагодарили 3,712 раз(а) / Репутация: 3708
Уважаемые господа. Помогите пожалуйста с таким прозаическим вопросом.
Как грамотно реализовать неперерисовывающийся стрелочный индикатор?
Если индикатор перерисовывается, то всё понятно, ставим в начале цикла перебора баров массивы буферов вида BufferUp[i] = EMPTY_VALUE и BufferDown[i] = EMPTY_VALUE и далее в зависимости от совпадения сигналов, формирующих стрелки, эти данные принимают непустые значения и отвечают за наличие стрелок на графике, если сигнал формирующий пропадает, то пропадают и стрелки.
Но требуется сделать так, чтобы при поступлении формирующего стрелку сигнала, стрелка всегда оставалась на графике независимо от того, пропал ли формирующий сигнал или нет, а при закрытии свечи стрелка также должна передвигаться на предыдущую свечу.
Для этого достаточно не указывать в начале массива пустые значения буферов и все стрелки сдвигаются по умолчанию автоматом при закрытии свечей или при закрытии свечи нужно самостоятельно указывать сдвиг предыдущих значений буферов?
Первое, это оставить значение буфера без изменений, оно и так пустое, не надо его ещё дополнительно очищать. И в условие сигнала для стрелки добавить условие && BufferUp[i] == EMPTY_VALUE тогда при пропадании сигнала этот буфер останется заполненным. А вот второе не совсем понятно, так ведь можно двигать бесконечно... Условия для перемещения стрелки не корректны, на мой взгляд. Или не полны.
Если что-то не так будет, то можно вставить ещё два расчётных буфера и условие if(BufferUpCalc[i] != EMPTY_VALUE && BufferUp[i] == EMPTY_VALUE) BufferUp[i] = Hight[i]; А BufferUpCalc[i] заполнять по условию сигнала.
26.08.2015, 17:50
Аватар для aleks-fx
aleks-fx aleks-fx вне форума Интересующийся
Регистрация: 28.07.2015 / Сообщений: 54
Поблагодарили 1 раз в 1 сообщении / Репутация: 2
Посоветуйте где можно с 0 научиться строить советников по нескольким индикаторам.
26.08.2015, 17:52
Аватар для Andy200577
Andy200577 Andy200577 вне форума Новичок форума
Регистрация: 20.06.2012 / Сообщений: 57
Поблагодарили 8 раз(а) / Репутация: 9
Первое, это оставить значение буфера без изменений, оно и так пустое, не надо его ещё дополнительно очищать. И в условие сигнала для стрелки добавить условие && BufferUp[i] == EMPTY_VALUE тогда при пропадании сигнала этот буфер останется заполненным. А вот второе не совсем понятно, так ведь можно двигать бесконечно... Условия для перемещения стрелки не корректны, на мой взгляд. Или не полны.
Если что-то не так будет, то можно вставить ещё два расчётных буфера и условие if(BufferUpCalc[i] != EMPTY_VALUE && BufferUp[i] == EMPTY_VALUE) BufferUp[i] = Hight[i]; А BufferUpCalc[i] заполнять по условию сигнала.
Ну вот простой формальный пример. Стрелка формируется при пересечении 2-х машек, пересечение произошло, стрелка появилась, но цена пошла обратно и пересечения уже нет, стрелка остаётся на месте, при закрытии свечи точно также её положение сохраняется, но на предыдущей свече. Как реализовать такой пример?
27.08.2015, 09:35
Аватар для AlexeyVik
AlexeyVik AlexeyVik вне форума Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,590
Поблагодарили 3,712 раз(а) / Репутация: 3708
Ну вот простой формальный пример. Стрелка формируется при пересечении 2-х машек, пересечение произошло, стрелка появилась, но цена пошла обратно и пересечения уже нет, стрелка остаётся на месте, при закрытии свечи точно также её положение сохраняется, но на предыдущей свече. Как реализовать такой пример?
Так как я и говорил тебе.
Код:
//+------------------------------------------------------------------+

#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 2       // Количество буферов
#property indicator_color1 Blue     // Цвет первой линии
#property indicator_color2 Red      // Цвет второй линии
#property indicator_width1 2
#property indicator_width2 2
double Buf_0[],Buf_1[];             // Объявление массивов (под буферы индикатора)
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0, Buf_0);                     // Назначение массива буферу
   SetIndexStyle (0, DRAW_ARROW);   // Стиль линии
   SetIndexArrow(0, 217);
   SetIndexBuffer(1, Buf_1);                     // Назначение массива буферу
   SetIndexStyle (1, DRAW_ARROW);     // Стиль линии
   SetIndexArrow(1, 218);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,   // Количество просчитанных баров 
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
  double MaFast, MaSlow, MaFast1, MaSlow1;
   int i, limit = rates_total-prev_calculated;
   while(rates_total-limit < 15)
    {
     limit--;
    }
    for(i = limit; i >= 0; i--)
     {
      MaFast = iMA(_Symbol, PERIOD_CURRENT, 5, 0, MODE_EMA, PRICE_CLOSE, i);
      MaSlow = iMA(_Symbol, PERIOD_CURRENT, 13, 0, MODE_EMA, PRICE_CLOSE, i);
      MaFast1 = iMA(_Symbol, PERIOD_CURRENT, 5, 0, MODE_EMA, PRICE_CLOSE, i+1);
      MaSlow1 = iMA(_Symbol, PERIOD_CURRENT, 13, 0, MODE_EMA, PRICE_CLOSE, i+1);
       if(MaSlow1 > MaFast1 && MaFast > MaSlow && Buf_0[i] == EMPTY_VALUE)
        {
         Buf_0[i] = High[i];
        }
       if(MaFast1 > MaSlow1 && MaSlow > MaFast && Buf_1[i] == EMPTY_VALUE)
        {
         Buf_1[i] = Low[i];
        }
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
Надеюсь ты понимаешь что на истории не удавшиеся попытки пересечения не доступны.

Последний раз редактировалось AlexeyVik; 27.08.2015 в 09:50.
27.08.2015, 12:05
Аватар для Andy200577
Andy200577 Andy200577 вне форума Новичок форума
Регистрация: 20.06.2012 / Сообщений: 57
Поблагодарили 8 раз(а) / Репутация: 9
Так как я и говорил тебе.
Код:
//+------------------------------------------------------------------+

#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 2       // Количество буферов
#property indicator_color1 Blue     // Цвет первой линии
#property indicator_color2 Red      // Цвет второй линии
#property indicator_width1 2
#property indicator_width2 2
double Buf_0[],Buf_1[];             // Объявление массивов (под буферы индикатора)
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0, Buf_0);                     // Назначение массива буферу
   SetIndexStyle (0, DRAW_ARROW);   // Стиль линии
   SetIndexArrow(0, 217);
   SetIndexBuffer(1, Buf_1);                     // Назначение массива буферу
   SetIndexStyle (1, DRAW_ARROW);     // Стиль линии
   SetIndexArrow(1, 218);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,   // Количество просчитанных баров 
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
  double MaFast, MaSlow, MaFast1, MaSlow1;
   int i, limit = rates_total-prev_calculated;
   while(rates_total-limit < 15)
    {
     limit--;
    }
    for(i = limit; i >= 0; i--)
     {
      MaFast = iMA(_Symbol, PERIOD_CURRENT, 5, 0, MODE_EMA, PRICE_CLOSE, i);
      MaSlow = iMA(_Symbol, PERIOD_CURRENT, 13, 0, MODE_EMA, PRICE_CLOSE, i);
      MaFast1 = iMA(_Symbol, PERIOD_CURRENT, 5, 0, MODE_EMA, PRICE_CLOSE, i+1);
      MaSlow1 = iMA(_Symbol, PERIOD_CURRENT, 13, 0, MODE_EMA, PRICE_CLOSE, i+1);
       if(MaSlow1 > MaFast1 && MaFast > MaSlow && Buf_0[i] == EMPTY_VALUE)
        {
         Buf_0[i] = High[i];
        }
       if(MaFast1 > MaSlow1 && MaSlow > MaFast && Buf_1[i] == EMPTY_VALUE)
        {
         Buf_1[i] = Low[i];
        }
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
Надеюсь ты понимаешь что на истории не удавшиеся попытки пересечения не доступны.
Да, конечно понимаю, что на истории видно не будет, но это будет видно в режиме реального времени, когда индикатор сохраняет положения стрелок. Благодарю!
Только хочу сказать, что вариант с дополнением к стрелкам ...&& Buf_0[i] == EMPTY_VALUE ) имеет существенный недостаток в их расположении на текущей свече.
Т.е. в данном случае в этот буфер может быть записано число лишь один единственный раз (т.е. координата расположения стрелки над или под свечой), а текущая свеча может изменять своё положение и в итоге стрелка может налезать на саму свечу, что выглядит совсем некрасиво. По моему хорошо будет работать и без этого дополнения.
30.08.2015, 09:28
Аватар для CastEt
CastEt CastEt вне форума Активный участник
Регистрация: 19.10.2012 / Адрес: мАсква-рИка, сердце упокоит на века :-) / Сообщений: 159
Поблагодарили 53 раз(а) / Репутация: 51
Люди помогите, вверху делаю глобальный массив double TickLog[1001];
На тиках делаю:
double price= (Bid + Ask)/2;
ArrayCopy(TickLog,TickLog,1,0,1000);
TickLog[0]=price;
ну и потом самое интересное, ради чего весь сыр-бор, несколько машек типа;
P=iMAOnArray(TickLog,0,periP,0,methP,0);

И вот тут вопрос, Что Я Делаю Не Так???
30.08.2015, 17:42
Аватар для AlexeyVik
AlexeyVik AlexeyVik вне форума Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,590
Поблагодарили 3,712 раз(а) / Репутация: 3708
Люди помогите, вверху делаю глобальный массив double TickLog[1001];
На тиках делаю:
double price= (Bid + Ask)/2;
ArrayCopy(TickLog,TickLog,1,0,1000);
TickLog[0]=price;
ну и потом самое интересное, ради чего весь сыр-бор, несколько машек типа;
P=iMAOnArray(TickLog,0,periP,0,methP,0);

И вот тут вопрос, Что Я Делаю Не Так???
Так а что ты хочешь увидеть в результате? И где смотришь?
30.08.2015, 18:09
Аватар для _SERG_
_SERG_ _SERG_ вне форума Активный участник
Регистрация: 21.07.2009 / Сообщений: 264
Поблагодарили 82 раз(а) / Репутация: 82
Люди помогите, вверху делаю глобальный массив double TickLog[1001];
На тиках делаю:
double price= (Bid + Ask)/2;
ArrayCopy(TickLog,TickLog,1,0,1000);
TickLog[0]=price;
ну и потом самое интересное, ради чего весь сыр-бор, несколько машек типа;
P=iMAOnArray(TickLog,0,periP,0,methP,0);

И вот тут вопрос, Что Я Делаю Не Так???
Ты после того, как что то сделал, напечатай в журнал, то что у тебя получилось, и сравни с тем что ожидал.
for (int i = 0 ; i < 10; i++){
Print( "[" + DoubleToStr (TickLog[i],Digits) + "]" );
}
А там и самому понятно станет.

Сыр-бор, так же проверить, ну и машки тож.
Это же, можно и в дебагере сделать, только перед запуском
точку остановки не забыть поставить, иначе плохо видно будет.

Вопрос, "Что я делаю не так ?", подразумевает ответ: Не проверяете,
что получилось, а думаете, что всё так, как и было задумано.

Последний раз редактировалось _SERG_; 30.08.2015 в 18:49.
30.08.2015, 20:44
Аватар для petro_gr81
petro_gr81 petro_gr81 на форуме Новичок форума
Регистрация: 14.08.2011 / Сообщений: 23
Поблагодарили 11 раз(а) / Репутация: 12
Здравствуйте! Подскажите что-нибудь о динамическом тейк профите, по какому принципу строится, на чем основан, может есть у кого в советнике, поделитесь блоком.
31.08.2015, 04:58
Аватар для _SERG_
_SERG_ _SERG_ вне форума Активный участник
Регистрация: 21.07.2009 / Сообщений: 264
Поблагодарили 82 раз(а) / Репутация: 82
Здравствуйте! Подскажите что-нибудь о динамическом тейк профите, по какому принципу строится, на чем основан, может есть у кого в советнике, поделитесь блоком.
Это вопрос про трал профита, или динамический лот?
31.08.2015, 05:02
Аватар для petro_gr81
petro_gr81 petro_gr81 на форуме Новичок форума
Регистрация: 14.08.2011 / Сообщений: 23
Поблагодарили 11 раз(а) / Репутация: 12
Это вопрос про трал профита, или динамический лот?
Это вопрос о тейкпрофите, но динамическом.
31.08.2015, 06:23
Аватар для vlad_123
vlad_123 vlad_123 на форуме Местный знаток
Регистрация: 29.01.2013 / Сообщений: 408
Поблагодарили 894 раз(а) / Репутация: 898
Это вопрос о тейкпрофите, но динамическом.

Скрытый текст


Например, _http://www.forex-mk.ru/ru/sovetniki/mql4/sovetniki/21-tralling

На заказ не программирую.

Последний раз редактировалось NSerega; 31.08.2015 в 12:34.
31.08.2015, 06:39
Аватар для petro_gr81
petro_gr81 petro_gr81 на форуме Новичок форума
Регистрация: 14.08.2011 / Сообщений: 23
Поблагодарили 11 раз(а) / Репутация: 12
Спасибо! Я уже гуглил, а покупать ради блока нет желания.
Ответить

Метки
mql4, mql4 помощь, вопросы mql4


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.



Текущее время: 11:02. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO