Ответ
 
Опции темы
Старый 15.11.2014, 18:58   #3161 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,517
Репутация: 3643
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,109
Поблагодарили 3,647 раз(а) в 1,468 сообщениях
Поинты: 2004
Сообщение от mogul Посмотреть сообщение
может и подошли бы, но не выщло прикрутить, не разобрался с ними, в прочем как с массивами всеми. пока еще трудны для понимания. читаю, смотрю коды, пока туго
Если знаете как и не в тягость, подскажите, на конкретном рабочем примере может и понимание быстрее придет
Я не все вопросы просмотрел. Понял так, что ищешь в массиве, а так из файла конечно в цикле. Я чуток поправил свой пост пока ты отвечал не него.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
mogul (15.11.2014)
Старый 15.11.2014, 19:18   #3162 (permalink)
Активный участник
 
Аватар для mogul
 
Регистрация: 20.04.2009
Сообщений: 12
Репутация: 0
mogul
Сказал(а) спасибо: 8
Поблагодарили 0 раз(а) в 0 сообщениях
Поинты: 20
все так же: hi находит, lo = 0.
это штука у меня перед циклом стояла, не указал я почему то.

пробовал с массивами вот это сейчас,

max[i] = cena; min[i]=cena; double maxId=ArrayMaximum(max,WHOLE_ARRAY,0);
double minId=ArrayMaximum(min,WHOLE_ARRAY,0);
в результате вышло только, что самый большой элемент 64, т.е. верно посчитал колличество.
понимаю ,что не совсем должна быть эта штука сложная, но не выходит у меня и все.
если бы по барам то сделал бы сам, а тут из-вне, как и за что зацепится ума не приложу
спасибо за помощь и что откликнулись, но если придет мысль какая и будет не лениво, сообщите. просматриваю регулярно
mogul вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 15.11.2014, 19:30   #3163 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,517
Репутация: 3643
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,109
Поблагодарили 3,647 раз(а) в 1,468 сообщениях
Поинты: 2004
Сообщение от mogul Посмотреть сообщение
все так же: hi находит, lo = 0.
Ну и правильно... Писание "на коленке" редко бывает без ошибок.
Код:
double lo = 1000, hi = 0;
  for (i = 0; i < 480; i++) 
{
     optiontype = FileReadString(hFile);
     cena = StrToDouble(FileReadString(hFile));
    // Как я понял, то при каждой итерации цикла читается следующая строка файла...
     if (cena > hi) hi = cena;
     if (cena < lo) lo = cena;
 }
   // После выхода из цикла имеем hi и lo...
Попробуй так
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 15.11.2014, 19:34   #3164 (permalink)
Активный участник
 
Аватар для mogul
 
Регистрация: 20.04.2009
Сообщений: 12
Репутация: 0
mogul
Сказал(а) спасибо: 8
Поблагодарили 0 раз(а) в 0 сообщениях
Поинты: 20
без изменений, hi есть, lo = 0

не знаю, обратил ли ты внимание или нет, но данные поступают не подряд от меньшего к большему или наоборот, а вперемешку, за меньшим может стоять большее, еще меньшее, большее и т.д, мешанина в общем.
если задать подряд, то у меня как то один раз вышло, но потом я забыл как, больше не получилось, но в общем то так и не надо, т. к. данные идут всегда в перемешку

Последний раз редактировалось mogul; 15.11.2014 в 19:40.
mogul вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 15.11.2014, 19:37   #3165 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,517
Репутация: 3643
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,109
Поблагодарили 3,647 раз(а) в 1,468 сообщениях
Поинты: 2004
Сообщение от mogul Посмотреть сообщение

пробовал с массивами вот это сейчас,

max[i] = cena; min[i]=cena; double maxId=ArrayMaximum(max,WHOLE_ARRAY,0);
double minId=ArrayMaximum(min,WHOLE_ARRAY,0);
в результате вышло только, что самый большой элемент 64, т.е. верно посчитал колличество.
понимаю ,что не совсем должна быть эта штука сложная, но не выходит у меня и все.
если бы по барам то сделал бы сам, а тут из-вне, как и за что зацепится ума не приложу
спасибо за помощь и что откликнулись, но если придет мысль какая и будет не лениво, сообщите. просматриваю регулярно
А если через массив, то надо загнать все прочитанные данные в один массив, или вообще поменять подход к этому вопросу и записывать данные сразу массивом FileWriteArray _http://docs.mql4.com/ru/files/filewritearray а потом читать так-же массивом FileReadArray _http://docs.mql4.com/ru/files/filereadarray.
И когда получил массив искать индекс максимального и минимального элемента по которым соответственно найдутся и сами значения.

Последний раз редактировалось AlexeyVik; 15.11.2014 в 19:40.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 15.11.2014, 19:40   #3166 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,010
Репутация: 828
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 842 раз(а) в 554 сообщениях
Поинты: 1308
Сообщение от mogul Посмотреть сообщение
без изменений, hi есть, lo = 0
Отсюда следует, что где-то есть переменная cena со значением "0" или с пустым значением, что то же самое.
Присваивай cena[i] (масив объяви) и потом
ArrayMax к ней и ArrayMin к ней же.
Заодно и распечатай весь массив, явно же присваивание стоит, раз ноль получился. значит, ноль где-то был.
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
mogul (15.11.2014)
Старый 15.11.2014, 19:47   #3167 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,252
Репутация: 1962
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 347
Поблагодарили 1,891 раз(а) в 1,068 сообщениях
Поинты: 1270
Отправить сообщение для Ugar с помощью ICQ
Точно. Там явно читается не то из файла. При ошибке преобразования строки в число, возвращается 0.
Лучше разобраться с файлом, но можно просто добавить условие.
Код:
double lo = 0, hi = 0;   
for (i = 0; i < 480; i++)  
{      
optiontype = FileReadString(hFile);      
cena = StrToDouble(FileReadString(hFile));     
    if(cena > 0.000001)
{
if (cena > hi) hi = cena;     
 if (cena < lo || lo<0.000001) lo = cena; 
 }}
Возможно в конце файла лажа, или длина файла не соответствует циклу...

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!

Последний раз редактировалось Ugar; 15.11.2014 в 19:51.
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
mogul (15.11.2014)
Старый 15.11.2014, 19:47   #3168 (permalink)
Активный участник
 
Аватар для mogul
 
Регистрация: 20.04.2009
Сообщений: 12
Репутация: 0
mogul
Сказал(а) спасибо: 8
Поблагодарили 0 раз(а) в 0 сообщениях
Поинты: 20
вот такой результат получаю, в различных комбинациях

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

[свернуть]

Последний раз редактировалось NSerega; 16.11.2014 в 14:48.
mogul вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 15.11.2014, 19:49   #3169 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,010
Репутация: 828
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 842 раз(а) в 554 сообщениях
Поинты: 1308
Кстати, если строк в файле 479, а цикл идет до 480, то последнее значение, кажись, и будет нулевым, нет?
Цикл же никак не обрывается по окончании файла
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
mogul (15.11.2014)
Старый 15.11.2014, 19:53   #3170 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,517
Репутация: 3643
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,109
Поблагодарили 3,647 раз(а) в 1,468 сообщениях
Поинты: 2004
Сообщение от mogul Посмотреть сообщение
без изменений, hi есть, lo = 0

не знаю, обратил ли ты внимание или нет, но данные поступают не подряд от меньшего к большему или наоборот, а вперемешку, за меньшим может стоять большее, еще меньшее, большее и т.д, мешанина в общем.
если задать подряд, то у меня как то один раз вышло, но потом я забыл как, больше не получилось, но в общем то так и не надо, т. к. данные идут всегда в перемешку
Значит распечатай в цикле что читается из файла. И обрати внимание где объявлены hi и lo перед циклом...
По алгоритму получается так:

Объявили переменные с присвоением им значений
hi = 0, lo = 1000;
Читаем из файла первое значение cena = 1.2531;
Если cena больше hi(тоесть больше 0) то hi = 1.2531;
Если cena меньше lo(тоесть меньше 1000) то lo = 1.2531;
При следующей итерации
hi будет 1.2656; а lo останется 1.2531;
дальше hi = 1.2712; lo = 1.2531;
дальше hi = 1.2712; lo = 1.2418;
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
mogul (15.11.2014)
Старый 15.11.2014, 19:57   #3171 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,517
Репутация: 3643
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,109
Поблагодарили 3,647 раз(а) в 1,468 сообщениях
Поинты: 2004
Сообщение от ansol Посмотреть сообщение
Кстати, если строк в файле 479, а цикл идет до 480, то последнее значение, кажись, и будет нулевым, нет?
Цикл же никак не обрывается по окончании файла
Совершенно верно. Поэтому я зря убрал из условия проверку на > 0
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
mogul (15.11.2014)
Старый 15.11.2014, 19:57   #3172 (permalink)
Активный участник
 
Аватар для mogul
 
Регистрация: 20.04.2009
Сообщений: 12
Репутация: 0
mogul
Сказал(а) спасибо: 8
Поблагодарили 0 раз(а) в 0 сообщениях
Поинты: 20
Фантастика. заработало с условием. Но я же 0 отбрасываю уловием

if (cena <1) i--;

это не верно? вместо 1 что то другое надо, как в условие поставили 0.00001
ну все равно, супер бесконечно благодарен, два месяца мозговал над этим.
21 век настал все таки
mogul вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 15.11.2014, 20:05   #3173 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,252
Репутация: 1962
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 347
Поблагодарили 1,891 раз(а) в 1,068 сообщениях
Поинты: 1270
Отправить сообщение для Ugar с помощью ICQ
Сообщение от mogul Посмотреть сообщение
Фантастика. заработало с условием. Но я же 0 отбрасываю уловием

if (cena <1) i--;

это не верно? вместо 1 что то другое надо, как в условие поставили 0.00001
ну все равно, супер бесконечно благодарен, два месяца мозговал над этим.
21 век настал все таки
if (cena <1) i--;Это возвращает цикл назад. Должно вообще привести к зацикливанию.
Тогда уж лучше пропускать пустоту
if (cena <1) continue;

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (16.11.2014)
Старый 19.11.2014, 05:48   #3174 (permalink)
Интересующийся
 
Аватар для Александр_Стручков
 
Регистрация: 14.07.2014
Адрес: Ачинск
Сообщений: 20
Репутация: 2
Александр_Стручков
Сказал(а) спасибо: 10
Поблагодарили 1 раз в 1 сообщении
Поинты: 32
Опять взываю о помощи гуру MQL..

В начале текста советника объявлен массив.
PHP код:
int orders [200][3]; 
Далее в функции On init пытаюсь заполнить его значениями, но выдает ошибку array out of range

PHP код:
   for(q=199;i>=0;q--)
     {
      
orders[q,0]=0;
      
orders[q,1]=0;
      
orders[q,2]=1;
     } 
Что не так?
Александр_Стручков вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 19.11.2014, 05:54   #3175 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,252
Репутация: 1962
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 347
Поблагодарили 1,891 раз(а) в 1,068 сообщениях
Поинты: 1270
Отправить сообщение для Ugar с помощью ICQ
Сообщение от Александр_Стручков Посмотреть сообщение
Опять взываю о помощи гуру MQL..

В начале текста советника объявлен массив.
PHP код:
int orders [200][3]; 
Далее в функции On init пытаюсь заполнить его значениями, но выдает ошибку array out of range

PHP код:
   for(q=199;i>=0;q--)
     {
      
orders[q,0]=0;
      
orders[q,1]=0;
      
orders[q,2]=1;
     } 
Что не так?
Переменную перепутал. for(q=199;q>=0;q--)

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (21.11.2014)
Старый 21.11.2014, 13:41   #3176 (permalink)
Местный знаток
 
Аватар для gince
 
Регистрация: 09.09.2008
Адрес: Литва
Сообщений: 396
Репутация: 733
gince - gince - gince - gince - gince - gince - gince -
Сказал(а) спасибо: 178
Поблагодарили 733 раз(а) в 189 сообщениях
Поинты: 192
Отправить сообщение для gince с помощью Skype™
Здрастуйте.
Насколько я понимаю, то с этого индикатора взять данные невозможно.
Прав ли я ? Если неправ, то покажите как. Я пробовал так

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

y1 = iCustom(Symbol(),0 , "Nihilist_Ultra Trend_V2",3,1);
Print("y1=",y1);
y2 = iCustom(Symbol(),0 , "Nihilist_Ultra Trend_V2",4,1);
Print("y2=",y2);
[свернуть]


получаю всегда
2014.11.21 15:42:10.859 **************GBPJPY,M1: y1=0.0
Вложения:
Тип файла: ex4 Nihilist_Ultra_Trend_V2.ex4 (10.5 Кб, 7 просмотров)

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Гинтарас

Последний раз редактировалось gince; 21.11.2014 в 13:43.
gince на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 21.11.2014, 13:49   #3177 (permalink)
Местный знаток
 
Аватар для gince
 
Регистрация: 09.09.2008
Адрес: Литва
Сообщений: 396
Репутация: 733
gince - gince - gince - gince - gince - gince - gince -
Сказал(а) спасибо: 178
Поблагодарили 733 раз(а) в 189 сообщениях
Поинты: 192
Отправить сообщение для gince с помощью Skype™
Извеняюсь, сам ошибку сделал в названии индикатора
iCustom(Symbol(),0 , "Nihilist_Ultra_Trend_V2",3,1);

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Гинтарас
gince на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 22.11.2014, 11:23   #3178 (permalink)
Почётный гражданин
 
Аватар для Yurkov
 
Регистрация: 19.01.2011
Сообщений: 642
Репутация: 359
Yurkov - Yurkov - Yurkov - Yurkov -
Сказал(а) спасибо: 163
Поблагодарили 356 раз(а) в 166 сообщениях
Поинты: 200
Всем здрасте!
Сразу оговорюсь, я не программист.
Хочу добавить в свою сову функцию расчета лота. На 1000 единиц депозита лот 0.1

написал так:

double Getlots()
{
Lots= AccountBalance() / 1000*LotsFor1000;
Lots=MathMax(Lots, MarketInfo (Symbol(), MODE_MINLOT));
Lots=MathMin(Lots, MarketInfo (Symbol(),MODE_MAXLOT));
Lots=NormalizeDouble(Lots,2);
return(Lots);
}

В итоге советник расчитывает лот только разово. К примеру начальный депозит 2000, Советник пославит лот 0.2, но когда депозит становится 3000, лот по прежнему остается 0.2
Что не так? Где ошибка?
Yurkov на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 22.11.2014, 11:45   #3179 (permalink)
Почётный гражданин
 
Аватар для matro3
 
Регистрация: 18.07.2013
Сообщений: 349
Репутация: 344
matro3 matro3 matro3 matro3
Сказал(а) спасибо: 25
Поблагодарили 340 раз(а) в 143 сообщениях
Поинты: 160
Вызываете функцию только раз?
matro3 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 22.11.2014, 11:53   #3180 (permalink)
Почётный гражданин
 
Аватар для Yurkov
 
Регистрация: 19.01.2011
Сообщений: 642
Репутация: 359
Yurkov - Yurkov - Yurkov - Yurkov -
Сказал(а) спасибо: 163
Поблагодарили 356 раз(а) в 166 сообщениях
Поинты: 200
Сообщение от matro3 Посмотреть сообщение
Вызываете функцию только раз?
Если Вы мне, то я не знаю, я не программист) Но судя по всему она вызывается только раз. Может нужно что-то дописать?

Последний раз редактировалось Yurkov; 22.11.2014 в 12:38.
Yurkov на форуме   Ответить с цитированиемОтветить с цитированием  
Ответ

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


Опции темы

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

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



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


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