Ответ
 
Опции темы
Старый 25.09.2015, 10:07   #4181 (permalink)
Активный участник
 
Аватар для _Fatal_
 
Регистрация: 09.07.2010
Сообщений: 305
Репутация: 102
_Fatal_ _Fatal_
Сказал(а) спасибо: 91
Поблагодарили 104 раз(а) в 59 сообщениях
Поинты: 60
Здравствуйте, есть индикаторый на Thinkoswim, ктото может их переделать под MT4
_Fatal_ вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 25.09.2015, 12:11   #4182 (permalink)
Местный знаток
 
Аватар для vlad_123
 
Регистрация: 29.01.2013
Сообщений: 335
Репутация: 824
vlad_123 - vlad_123 - vlad_123 - vlad_123 - vlad_123 - vlad_123 - vlad_123 -
Сказал(а) спасибо: 29
Поблагодарили 820 раз(а) в 327 сообщениях
Поинты: 388
Сообщение от hoz Посмотреть сообщение
Этой функцией я пользовался.. Но мне нужно более универальное решение. Чтобы можно было вместо хая бара подставить, например, значение какого-то расчёта. Поэтому я и ищу решение альтернативное.
ArrayMaximum/ArrayMinimum

Сообщение от hoz Посмотреть сообщение
Но стрелки то рисуются не там где нужно. Почему? Я вообще в шоке . Пишу вещи на порядок сложнее в логике, но индикаторов не писал раньше. И вот застрял на этом месте... Просьба направить в требуемом направлении..
_http://forum.mql4.com/ru/57685

В двух словах - объявляем буффер, обнуляем его, потом в нужных местах вставляем стрелки

Код:
double buf_1[];
double buf_2[];
...
int init() {
 SetIndexBuffer(0, buf_1);
 SetIndexBuffer(1, buf_2);
 //---- Стиль исполнения графика 
 //---- DRAW_ARROW - стрелки(символы)
 SetIndexStyle (0, DRAW_ARROW, STYLE_SOLID, 3);
 SetIndexStyle (1, DRAW_ARROW, STYLE_SOLID, 3);
 SetIndexArrow (0, 233);
 SetIndexArrow (1, 234);
 //---- установка значений индикатора, которые не будут видимы на графике
 SetIndexEmptyValue(0,0.0);
 SetIndexEmptyValue(1,0.0);
...
int start() {
...
//---- проверка условий по вашим правилам и отрисовка стрелки
 if (MA_Fast_1 > MA_Slow_1 && MA_Fast_2 <= MA_Slow_2) buf_1[i+1] = Low[i+1] - 10 * Point;
 if (MA_Fast_1 < MA_Slow_1 && MA_Fast_2 >= MA_Slow_2) buf_2[i+1] = High[i+1] + 10 * Point;
...
[свернуть]

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Мониторинг советников: http://www.myfxbook.com/members/vlad_123/

На заказ не программирую.
vlad_123 на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 25.09.2015, 15:25   #4183 (permalink)
Почётный гражданин
 
Аватар для Viko2000
 
Регистрация: 22.02.2012
Сообщений: 431
Репутация: 442
Viko2000 - Viko2000 - Viko2000 - Viko2000 - Viko2000 -
Сказал(а) спасибо: 1,348
Поблагодарили 441 раз(а) в 170 сообщениях
Поинты: 430
Сообщение от Viko2000 Посмотреть сообщение
Нашёл проблему. ) На реальных счётах, где на протяжении всей его жизни менялся баланс, плюс, 0, плюс, 0, вот этот код начинает не корректно работать. А именно на сколько я понял, как только цена касается отложки, и даже если прибыль в 0 и выше, тут же исполняется условие. Во как.

if (AccountEquity()>=AccountBalance()+AccountBalance( )/100*PercentProfit)
{Close_all();
}
как только убираю этот код, закрытие не происходит и бот работает дальше.
Так как же будет выглядеть правильно закрытие всего по проценту прибыли Эквити.
Молчат все как партизаны.) Допёр же, ну крут же, жалко не Скрудж.))))

if (AccountEquity()>=AccountBalance()+AccountCredit() +OrderSwap()+AccountBalance()/100*PercentProfit)
{Close_all();
}

Во как надо. Чёртов грёбанный кредит. Так же и посидеть можно.))))
Так что други, на будущие не забываем вписывать в логику срабатывания всё что присутствует в цифрах.)
Viko2000 вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
DomovenokBrest (26.09.2015)
Старый 26.09.2015, 09:48   #4184 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Сообщение от vlad_123 Посмотреть сообщение
ArrayMaximum/ArrayMinimum


_http://forum.mql4.com/ru/57685

В двух словах - объявляем буффер, обнуляем его, потом в нужных местах вставляем стрелки

Код:
double buf_1[];
double buf_2[];
...
int init() {
 SetIndexBuffer(0, buf_1);
 SetIndexBuffer(1, buf_2);
 //---- Стиль исполнения графика 
 //---- DRAW_ARROW - стрелки(символы)
 SetIndexStyle (0, DRAW_ARROW, STYLE_SOLID, 3);
 SetIndexStyle (1, DRAW_ARROW, STYLE_SOLID, 3);
 SetIndexArrow (0, 233);
 SetIndexArrow (1, 234);
 //---- установка значений индикатора, которые не будут видимы на графике
 SetIndexEmptyValue(0,0.0);
 SetIndexEmptyValue(1,0.0);
...
int start() {
...
//---- проверка условий по вашим правилам и отрисовка стрелки
 if (MA_Fast_1 > MA_Slow_1 && MA_Fast_2 <= MA_Slow_2) buf_1[i+1] = Low[i+1] - 10 * Point;
 if (MA_Fast_1 < MA_Slow_1 && MA_Fast_2 >= MA_Slow_2) buf_2[i+1] = High[i+1] + 10 * Point;
...
[свернуть]
Если через буфер я понимаю. Но это всё можно и без буфера реализовать. Почему нет? Вы этого не понимаете тоже?
Ведь буфер тут нет необходимости заводить т.к. хранить информацию не нужно.
Выполнилось условие - создали объект! Выполнилось ещё раз условие - создали объект! И т.д. Объекты не удаляются в процессе выполнения программы. Логично?
Тогда должно и так работать? В чём загвоздка?
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 26.09.2015, 16:16   #4185 (permalink)
Новичок форума
 
Аватар для sega111
 
Регистрация: 13.03.2013
Сообщений: 20
Репутация: 7
sega111
Сказал(а) спасибо: 2
Поблагодарили 6 раз(а) в 1 сообщении
Поинты: 18

По умолчанию Помощь


ребят подскажите пожалуйста чего тут не хватает в коде (закрытие всех ордеров по эквии) чтобы код вставить в советник
extern double Profit = 1;
extern double Loss = 1000000;
double Last_Equity;

Last_Equity = AccountEquity( );

double Equity,Diff_Profit,Diff_Loss;
Equity = AccountEquity( );
Diff_Profit = Equity - Last_Equity;
Diff_Loss = Last_Equity - Equity;
if(Diff_Profit > Profit || Diff_Loss > Loss)

я так понимаю саму функцию закрытия
sega111 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 26.09.2015, 17:15   #4186 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,516
Репутация: 3643
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,109
Поблагодарили 3,647 раз(а) в 1,468 сообщениях
Поинты: 2002
Сообщение от hoz Посмотреть сообщение
Этой функцией я пользовался.. Но мне нужно более универальное решение. Чтобы можно было вместо хая бара подставить, например, значение какого-то расчёта. Поэтому я и ищу решение альтернативное.


Согласен. Буфер MaxSize, на данный момент, не используется. Но лишь потому, что мне нада написать условие, чтоб стрелка рисовалась после 3 увеличивающихся хаём баров. А дальше уже займусь передачей в буфер данных.

На данный момент, вся логика просто:

PHP код:
//+---------------------------------------------------------------------------------------------------------------------------------------+//|                                          Определение наличия увеличивающегося размера бара                                            |//+---------------------------------------------------------------------------------------------------------------------------------------+bool ExistencePositiveSequence (int fi_Index){   if (High[fi_Index] > High[fi_Index - 1])   {      sequenceCount++;            return (true);   }   sequenceCount = 0;         return (false);}//+---------------------------------------------------------------------------------------------------------------------------------------+//|                                               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[]){   int limit = rates_total - prev_calculated;      if (prev_calculated == 0) limit--;      else limit++;      for (int i = 0; i < limit; i++)   {      if (ExistencePositiveSequence (i) == true)      {           if (sequenceCount == 3)           CDraw.DrawObject (_Symbol, _Period,  OBJ_ARROW_UP, i, Time[i], Open[i]);      }   }      return (rates_total); 
Но стрелки то рисуются не там где нужно. Почему? Я вообще в шоке . Пишу вещи на порядок сложнее в логике, но индикаторов не писал раньше. И вот застрял на этом месте... Просьба направить в требуемом направлении..
Привет, Виктор. Я даже и не подумал что здесь -http://forum.mql4.com/ru/69388 это твоя тема.
К коду много вопросов. Например, зачем рисовать стрелки если можно загнать их в буфер такими-же стрелками. Но это фигня учитывая неопытность написания индикаторов.
На мой взгляд лучше строить цикл на уменьшение номера бара
for (int i = limit; i >= 0; i--)
Потом я-бы подсчёт количества баров поставил-бы в функцию ExistencePositiveSequence и соответственно или return(true) или обнуление переменной sequenceCount если после двух, например или даже одного раза выполнения условия вдруг нарушение и надо начинать подсчёт с начала...
Сейчас посмотрел ещё раз, а ты там исправил строку CDraw.DrawObject (_Symbol, _Period, OBJ_ARROW_UP, i, Time[i], Open[i]);
где было Time[0], Open[0])
В общем копай в сторону обнуления переменной sequenceCount если условие выполнено меньше заданного количества раз.

Сообщение от hoz Посмотреть сообщение
Если через буфер я понимаю. Но это всё можно и без буфера реализовать. Почему нет? Вы этого не понимаете тоже?
Ведь буфер тут нет необходимости заводить т.к. хранить информацию не нужно.
Выполнилось условие - создали объект! Выполнилось ещё раз условие - создали объект! И т.д. Объекты не удаляются в процессе выполнения программы. Логично?
Тогда должно и так работать? В чём загвоздка?
Да никаких проблем в этом нет, но на мой взгляд так будет универсальней. Если потом надо будет читать значения индикатора, то не надо будет его переписывать.

Последний раз редактировалось AlexeyVik; 26.09.2015 в 17:20.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 26.09.2015, 19:10   #4187 (permalink)
Новичок форума
 
Аватар для sega111
 
Регистрация: 13.03.2013
Сообщений: 20
Репутация: 7
sega111
Сказал(а) спасибо: 2
Поблагодарили 6 раз(а) в 1 сообщении
Поинты: 18
капец! тут чего нет специалистов
sega111 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 26.09.2015, 19:16   #4188 (permalink)
Местный знаток
 
Аватар для vlad_123
 
Регистрация: 29.01.2013
Сообщений: 335
Репутация: 824
vlad_123 - vlad_123 - vlad_123 - vlad_123 - vlad_123 - vlad_123 - vlad_123 -
Сказал(а) спасибо: 29
Поблагодарили 820 раз(а) в 327 сообщениях
Поинты: 388
Сообщение от hoz Посмотреть сообщение
Если через буфер я понимаю. Но это всё можно и без буфера реализовать. Почему нет? Вы этого не понимаете тоже?
Ведь буфер тут нет необходимости заводить т.к. хранить информацию не нужно.
Использование SetIndexBuffer не наталкивает на размышления?
Индикаторы так и работают - рисуют линии/стрелки/и т.д. используя данные из назначенных буферов.
Вам же, почему-то, хочется переделать стандартный механизм на что-то оригинальное. Причем, бенефиты от этого совсем неочевидны, а потенциальшых граблей - море.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Мониторинг советников: http://www.myfxbook.com/members/vlad_123/

На заказ не программирую.
vlad_123 на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 26.09.2015, 19:36   #4189 (permalink)
Новичок форума
 
Аватар для sega111
 
Регистрация: 13.03.2013
Сообщений: 20
Репутация: 7
sega111
Сказал(а) спасибо: 2
Поблагодарили 6 раз(а) в 1 сообщении
Поинты: 18
спасибо за помощь, сам разобрался
sega111 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 26.09.2015, 20:40   #4190 (permalink)
Почётный гражданин
 
Аватар для Viko2000
 
Регистрация: 22.02.2012
Сообщений: 431
Репутация: 442
Viko2000 - Viko2000 - Viko2000 - Viko2000 - Viko2000 -
Сказал(а) спасибо: 1,348
Поблагодарили 441 раз(а) в 170 сообщениях
Поинты: 430
Сообщение от sega111 Посмотреть сообщение
капец! тут чего нет специалистов
Не расстраивайся. ))) Главная тема этой ветки не в помощи, а в развитии собственного потенциала. Ну а специи здесь, это все те, задающие вопросы и в последствии сами всё решающие. _)))) Красотища.)))
И кстати, как то у тебя всё за мудрено, может подойдет как с поста 4183.

Последний раз редактировалось Viko2000; 26.09.2015 в 20:43.
Viko2000 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 27.09.2015, 11:33   #4191 (permalink)
Активный участник
 
Аватар для yurez83
 
Регистрация: 15.08.2013
Сообщений: 151
Репутация: 91
yurez83
Сказал(а) спасибо: 267
Поблагодарили 90 раз(а) в 43 сообщениях
Поинты: 70
здравствуйте. ребята, может кто то подскажет мне в одном вопросе. склепал советник, который закрывает ордера, с минимальным профитом n-пунктов при пересечении мувинга с низу вверх или с верху вниз. всё прекрасно работает, кроме одного - при инициализации сова сначала срабатывает закрытие ордеров.

для определения пересечения мувинга написал функцию Proverka, в которой обьявил статические переменные last и current и присвоил значение ноль. функция передаёт значение 1 или 2 при пересечении цены мувинга, при инициализации сова должно передаваться значении 0, но походу это не так и ордера как уже и написал закрываются..

заранее буду благодарен, если поможете подрихтовать.
код прилагаю.
Вложения:
Тип файла: mq4 Profit.mq4 (4.2 Кб, 7 просмотров)
yurez83 вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Viko2000 (27.09.2015)
Старый 27.09.2015, 12:24   #4192 (permalink)
Почётный гражданин
 
Аватар для Yurkov
 
Регистрация: 19.01.2011
Сообщений: 642
Репутация: 359
Yurkov - Yurkov - Yurkov - Yurkov -
Сказал(а) спасибо: 163
Поблагодарили 356 раз(а) в 166 сообщениях
Поинты: 200
Добрый день!
Подскажите, есть ли код для реверса? Т.е. если сигнал на покупку, откроется Sell и наоборот.
Yurkov на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 27.09.2015, 12:25   #4193 (permalink)
Элитный участник
 
Аватар для RoboMaks
 
Регистрация: 19.08.2012
Адрес: Баку, Азербайджан
Сообщений: 651
Репутация: 1128
RoboMaks RoboMaks RoboMaks RoboMaks RoboMaks RoboMaks RoboMaks RoboMaks RoboMaks
Сказал(а) спасибо: 322
Поблагодарили 1,118 раз(а) в 442 сообщениях
Поинты: 623
Отправить сообщение для RoboMaks с помощью Skype™
Сообщение от yurez83 Посмотреть сообщение
всё прекрасно работает, кроме одного - при инициализации сова сначала срабатывает закрытие ордеров.

для определения пересечения мувинга написал функцию Proverka, в которой обьявил статические переменные last и current и присвоил значение ноль. функция передаёт значение 1 или 2 при пересечении цены мувинга, при инициализации сова должно передаваться значении 0, но походу это не так и ордера как уже и написал закрываются..
Ошибки такого рода происходят из-за того, что при инициализации сова не сразу выдаются точные показания вызываемых индюков - т.е. до полной инициализации индюка его значение может быть равным нулю или очень большому значению ( значительно больше значения цены). Чтобы избежать этой ошибки добавьте проверку значения индюка
if ( значение индюка > 0 && значение индюка < 100000 )

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Программирование советников, индикаторов и скриптов для МТ4
контакты для платных работ:
e-mail: maksshukurov@mail.ru
skype: maksshukurov1
RoboMaks вне форума   Ответить с цитированиемОтветить с цитированием  
3 пользователя(ей) сказали cпасибо:
gush (27.09.2015), Viko2000 (27.09.2015), yurez83 (27.09.2015)
Старый 28.09.2015, 07:00   #4194 (permalink)
Активный участник
 
Аватар для yurez83
 
Регистрация: 15.08.2013
Сообщений: 151
Репутация: 91
yurez83
Сказал(а) спасибо: 267
Поблагодарили 90 раз(а) в 43 сообщениях
Поинты: 70
Сообщение от RoboMaks Посмотреть сообщение
Чтобы избежать этой ошибки добавьте проверку значения индюка
if ( значение индюка > 0 && значение индюка < 100000 )
добавил.. к сожалению - без изменений.
yurez83 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 28.09.2015, 07:29   #4195 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,516
Репутация: 3643
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,109
Поблагодарили 3,647 раз(а) в 1,468 сообщениях
Поинты: 2002
Сообщение от yurez83 Посмотреть сообщение
добавил.. к сожалению - без изменений.
А ты попробуй посчитать вручную что возвращает твоя функция int Proverka (double znah1 , double znah2) при первом обращении к ней.

Самый простой вариант обойти твою проблему, вызвать эту функцию из инита.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
Viko2000 (28.09.2015), yurez83 (28.09.2015)
Старый 28.09.2015, 07:41   #4196 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,516
Репутация: 3643
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,109
Поблагодарили 3,647 раз(а) в 1,468 сообщениях
Поинты: 2002
Сообщение от RoboMaks Посмотреть сообщение
Ошибки такого рода происходят из-за того, что при инициализации сова не сразу выдаются точные показания вызываемых индюков - т.е. до полной инициализации индюка его значение может быть равным нулю или очень большому значению ( значительно больше значения цены). Чтобы избежать этой ошибки добавьте проверку значения индюка
if ( значение индюка > 0 && значение индюка < 100000 )
Вот это самое "очень большое значение" называется EMPTY_VALUE (пустое значение). Тогда получается правильное сравнение
значение индюка != EMPTY_VALUE
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
Viko2000 (28.09.2015), yurez83 (28.09.2015)
Старый 28.09.2015, 10:05   #4197 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Сообщение от yurez83 Посмотреть сообщение
здравствуйте. ребята, может кто то подскажет мне в одном вопросе. склепал советник, который закрывает ордера, с минимальным профитом n-пунктов при пересечении мувинга с низу вверх или с верху вниз. всё прекрасно работает, кроме одного - при инициализации сова сначала срабатывает закрытие ордеров.

для определения пересечения мувинга написал функцию Proverka, в которой обьявил статические переменные last и current и присвоил значение ноль. функция передаёт значение 1 или 2 при пересечении цены мувинга, при инициализации сова должно передаваться значении 0, но походу это не так и ордера как уже и написал закрываются..

заранее буду благодарен, если поможете подрихтовать.
код прилагаю.

Потому что условие кривое.

PHP код:
   iProverka=Proverka(MA,BA);                             // Проверка прохода через машку
        
if(iProverka == || iProverka == 2)
     {
   for (
int i=OrdersTotal()-1i>=0i--)
    {
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);   // выбор ордера
                                                                                                       
          
      
if (OrderType()==OP_BUY && OrderSymbol()==Symbol()) // проверка инструмента
      
{
         
point=MarketInfo(OrderSymbol(),MODE_POINT);
         if (
point==0) break;
         
bid=MathRound(MarketInfo(OrderSymbol(),MODE_BID)/point);
         
open=MathRound(OrderOpenPrice()/point);
         if (
bid-open<Profit) continue;
         
OrderClose(OrderTicket(),OrderLots(),bid*point,slippage);
      }
      if (
OrderType()==OP_SELL&& OrderSymbol()==Symbol())
      {
         
point=MarketInfo(OrderSymbol(),MODE_POINT);
         if (
point==0) break;
         
ask=MathRound(MarketInfo(OrderSymbol(),MODE_ASK)/point);
         
open=MathRound(OrderOpenPrice()/point);
         if (
open-ask<Profit) continue;
         
OrderClose (OrderTicket(),OrderLots(),ask*point,slippage);     
      
     }
      
    }
   } 

Если машка пересечена, т.е. Proverka возвратит 1 или 2, то по-любому вызовется условие:

PHP код:
if (OrderType()==OP_BUY && OrderSymbol()==Symbol()) 

или

PHP код:
if (OrderType()==OP_BUY && OrderSymbol()==Symbol()) 

А дальше на примере выбора позиции на покупку, вызовется:

PHP код:
if (bid-open<Profit) continue; 

В водных параметрах в комментах написано, типа это прибыль в пунктах. А тут нет пунктов. Должно быть типа:

PHP код:
if (bid-open<Profit ПУНКТ) continue; 

А вообще, как выше сказано, принтуайте все данные, влияющие на вызов функции закрытия, и увидите всё своими глазами.

Последний раз редактировалось hoz; 28.09.2015 в 10:08.
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
Viko2000 (28.09.2015), yurez83 (28.09.2015)
Старый 28.09.2015, 10:10   #4198 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Сообщение от AlexeyVik Посмотреть сообщение
Вот это самое "очень большое значение" называется EMPTY_VALUE (пустое значение). Тогда получается правильное сравнение
значение индюка != EMPTY_VALUE
Если индюк возвратил значение, то па факту оно не будет "пустым".
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Viko2000 (28.09.2015)
Старый 28.09.2015, 10:25   #4199 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,516
Репутация: 3643
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,109
Поблагодарили 3,647 раз(а) в 1,468 сообщениях
Поинты: 2002
Сообщение от hoz Посмотреть сообщение
Если индюк возвратил значение, то па факту оно не будет "пустым".
Нет, в этом ты не прав. Индикатор при запросе возвращает то, что содержится в запрашиваемом буфере на том баре который нас интересует. Соответственно если там пустое значение, то и получим мы пустое значение.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Viko2000 (28.09.2015)
Старый 28.09.2015, 10:27   #4200 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Сообщение от AlexeyVik Посмотреть сообщение
Привет, Виктор. Я даже и не подумал что здесь -http://forum.mql4.com/ru/69388 это твоя тема.

Здарова Алексей. Моя видимо Долбусь уже несколько дней, вот и написал в пару мест.

Сообщение от AlexeyVik Посмотреть сообщение
К коду много вопросов. Например, зачем рисовать стрелки если можно загнать их в буфер такими-же стрелками. Но это фигня учитывая неопытность написания индикаторов.

Да, когда писал не знал об этом, а если и знал, то на практике не применял. Теперь уже в курсе...

Сообщение от AlexeyVik Посмотреть сообщение
На мой взгляд лучше строить цикл на уменьшение номера бара
for (int i = limit; i >= 0; i--)

Я уже это понял. Но это если будет один цикл, а если с вложенным, то разницы нет, как я вижу.

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

А вот это очень странно. Смысла нет пересчитывать условие на всех барах, которые мы сравниваем. Это не логично. Если сравниваем 100 баров, то проще сравнивать на каждом расчётном баре текущий и предыдущий. А не все сравниваемые. Как-то мне такой вариант вообще не нравится...
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Viko2000 (28.09.2015)
Ответ

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


Опции темы

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

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



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


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