deathmurder Опубликовано 12 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 12 мая, 2017 Ребята, привет всем!Подскажите, как в советнике вернуть наличие стрелочки фрактала вверх или вниз и спустя 2 полнотелые свечи после этой стрелочки выставить отложенный ордер. double iFractals( string symbol, // имя символа int timeframe, // таймфрейм int mode, // индекс линии int shift // сдвиг ); я уже мучал функцию фрактала, но по сути она возвращает только уровень цены при возникновении этого фрактала. Ссылка на сообщение Поделиться на другие сайты More sharing options...
DreamWorks Опубликовано 12 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 12 мая, 2017 я уже мучал функцию фрактала, но по сути она возвращает только уровень цены при возникновении этого фрактала. Здравствуйте! Функция iFractals() возвращает цену верхнего фрактала, если параметром int mode указать 1, и цену нижнего фрактала, если 2. ...и спустя 2 полнотелые свечи после этой стрелочки выставить отложенный ордер. Находите последний (самый свежий) фрактал. Считайте бары после последнего фрактала до текущего (нулевого). Если на первом и втором баре нет фракталов, а на третьем есть, то ставьте отложку. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
DreamWorks Опубликовано 13 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 13 мая, 2017 Локальный максимум это синяя линия или серая? Изменено 13 мая, 2017 пользователем DreamWorks Ссылка на сообщение Поделиться на другие сайты More sharing options...
iloirin Опубликовано 14 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 14 мая, 2017 В индикаторе - это линия level_0. Добавлено: 14-05-2017 11:03:06Уважаемый DreamWorks! Вы очень помогли в первой моей просьбе. Честно говоря, постеснялась напрямую к Вам обратиться. А зря... По факту, Вы - единственный, кто откликнулся. Спасибо.В данном индикаторе использую только эту функцию, все остальные отключаю. Выложила скрины рабочей области и настроек данного индикатора, чтобы было понятнее.Рабочая_область.pngНастройки_индикатора_Gann_SQ9_A2.docx Изменено 14 мая, 2017 пользователем iloirin 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
М13 Опубликовано 14 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 14 мая, 2017 Привет. Сразу к делу. Может кто знает, как отобразить в коде советника, ближайшие ценовые зоны, которые строит индикатор. Нужно собственно выяснить минимум и максимум ближайшей зоны сверху и аналогично мин макс ближайшей зоны снизу,. Через iCustom не получается , буфера отображают информацию о фракталах, и на их основе индикатор строит прямоугольники. Через ObjectsTotal(), я сам догнать пока не могу , еще и примеров такого кода найти не могу. Кто знает ,как это сделать отзовитесь :) Думаю и другим новичкам в MQL это будет интересно и полезно. Shved-Supply-and-Demand-e600.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 14 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 14 мая, 2017 М13 индикатор при SetGlobals == true создаёт глобальные переменные с ценами, может это Вам подойдёт? можно добавить в индикатор создание дополнительных переменных сюда: if (SetGlobals == true) { GlobalVariableSet("SSSR_HI_"+Symbol()+Period()+i, zone_hi); GlobalVariableSet("SSSR_LO_"+Symbol()+Period()+i, zone_lo); GlobalVariableSet("SSSR_HITS_"+Symbol()+Period()+i, zone_hits); GlobalVariableSet("SSSR_STRENGTH_"+Symbol()+Period()+i, zone_strength); GlobalVariableSet("SSSR_AGE_"+Symbol()+Period()+i, zone_start); } Ссылка на сообщение Поделиться на другие сайты More sharing options...
DreamWorks Опубликовано 14 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 14 мая, 2017 Уважаемый DreamWorks! Вы очень помогли в первой моей просьбе. Честно говоря, постеснялась напрямую к Вам обратиться. А зря... По факту, Вы - единственный, кто откликнулся. Спасибо. Пожалуйста. Да, почему-то народ разбежался. Было как-то поактивней раньше. Понимаю, что профи могут быть заняты и не до этого. Но здесь очень много обучающихся, и такие вот небольшие просьбы могут быть очень полезными для приобретения навыков в программировании, а также полезными для тех, кто с этими просьбами обращается. Поэтому, студенты-MQL, не проходите мимо! iloirin, вот Ваш индикатор.Gann_SQ9_A2.mq4 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
iloirin Опубликовано 14 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 14 мая, 2017 Уважаемый DreamWorks! Огромное спасибо Вам за участие в "форекс-будущем" новичка. У меня в ближайших планах начать изучение mql-программирования. На сайте есть видео-курс и ветка на форуме. Но пока у меня еще очень мало знаний. Еще раз спасибо за поддержку. Удачи Вам! 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Николайец Опубликовано 14 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 14 мая, 2017 Приветствую. У меня функция передаёт в онтик ценовые значения. Загоняю их в массив и что бы было удобнее брать оттуда свежие данные пытаюсь перевернуть направление индексации функцией ArraySetAsSeries.Проверка (ArrayGetAsSeries) показывает, что индексация происходит как у таймсерий, но принт печатает, что ничего не изменилось.Помогите пожалуйста разобраться. Спойлер extern int BarsForFractal = 11;int i=0; double fr;double Arr_Fr[];//+------------------------------------------------------------------+int OnInit(){return(INIT_SUCCEEDED);}//+------------------------------------------------------------------+void OnDeinit(const int reason){}//+------------------------------------------------------------------+void OnTick(){ if (!NewBar()) return; // если не новый бар, то выходим fr=Fractal(); if (fr==0) return; if (fr!=0) { ArrayResize (Arr_Fr,100000); ArraySetAsSeries (Arr_Fr,true); Arr_Fr [ i ] = fr; if (Arr_Fr [ i ] >0) i++; if (ArrayGetAsSeries (Arr_Fr)) Print("ArrayGetAsSeries true"); else Print ("ArrayGetAsSeries false"); Print ("massive___",Arr_Fr[0],"_",Arr_Fr[1],"_",Arr_Fr[2],"_",Arr_Fr[3],"_",Arr_Fr[4]); } }//+------------------------------------------------------------------+double Fractal() // возвращает значение фрактала из BarsForFractal баров{ double UpFr=0,DwFr=0,Fr=0; int indxUpFr,indxDwFr; indxUpFr = iHighest (Symbol(),0,MODE_HIGH,BarsForFractal,1); if (indxUpFr==(BarsForFractal+1)/2) { UpFr = iHigh (Symbol(),0,(BarsForFractal+1)/2); Print("Up__Fr________"+DoubleToString (UpFr,Digits)); } else UpFr=0; indxDwFr = iLowest (Symbol(),0,MODE_LOW,BarsForFractal,1); if (indxDwFr==(BarsForFractal+1)/2) { DwFr = iLow (Symbol(),0,(BarsForFractal+1)/2); Print("Dw__Fr________"+DoubleToString (DwFr,Digits)); } else DwFr=0; if (UpFr!=0) Fr=UpFr; if (DwFr!=0) Fr=DwFr; return (Fr);}//+------------------------------------------------------------------+bool NewBar() // новый бар{ static datetime PrevBar=0; if (PrevBar==Time[0]) return(false); PrevBar=Time[0]; return(true);} //+-------------------------------------------------------------------------------------+ Изменено 15 мая, 2017 пользователем Николайец Ссылка на сообщение Поделиться на другие сайты More sharing options...
М13 Опубликовано 14 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 14 мая, 2017 0ll спасибо за помощь, но если честно я еще больше запутался :) Знаний пока катастрофически не хватает. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Roman 13 Опубликовано 15 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 мая, 2017 Здравствуйте подскажите, как оформить в виде кода закрытие позиции по такому условию : например позиция Buy, закрытие должно произойти , когда цена Bid выше уровня открытия на заданное кол-во пунктов и в то же время ниже минимума предыдущей свечи. Спасибо. Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 15 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 мая, 2017 Считаем, что рабочий ордер выделен.if ( MathAbs( Bid - OrderOpenPrice() ) > TargetDist * _Point && Bid Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 15 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 мая, 2017 Николайец Вы перед выводом переворачивайте, а после вывода возвращайте назад, тогда увидите работу функции. В Вашем случае в этом нет необходимости, если опишите что хотите получить, то может найдём более эффективный алгоритм.М13 индикатор создаёт и поддерживает в актуальном состоянии глобальные переменные с ценами областей и доступ к ним легче, чем из советника перебирать и анализировать графические объекты. НО придётся несколько модифицировать код индикатора, т.к. Вам нужно и хай и лоу зоны. Только зоны там разные, какие именно нужны Вы не описали... Ссылка на сообщение Поделиться на другие сайты More sharing options...
Николайец Опубликовано 15 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 мая, 2017 Oll Цитата Николайец Вы перед выводом переворачивайте, а после вывода возвращайте назад, тогда увидите работу функции. В Вашем случае в этом нет необходимости, если опишите что хотите получить, то может найдём более эффективный алгоритм. Хочу брать последние десять значений фракталов и поработать с ними. Вот, застрял) Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 16 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 16 мая, 2017 Хочу брать последние десять значений фракталов и поработать с ними. Вот, застрял)Последнее значение нужно писать в 0 ячейку всегда, переворачивать ничего не надо. При появлении нового фрактала сдвигать ячейки 0-8 в область 1-9, таким образом освобождая для записи 0-ячейку. Только будьте осторожны с копированием массива самого в себя, лучше используйте посредника - пустой массив.Вот пример экспериментального скрипта по копированию массива в себя (так лучше не делать - результаты будут не стабильные), но поиграться с массивами в скрипте можноArray_Copy.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
well72 Опубликовано 16 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 16 мая, 2017 Здравствуйте, коллеги!Никак не могу найти способ найти хай/лоу диапазона. Не за определенное количество свечей, как в первом уроке было, а, например, с 22.00 вчера по 7.00 сегодня. На буднях число свечей одинаковое, а вот при переходе через выходные разное. Помогите, пожалуйста. Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 16 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 16 мая, 2017 На буднях число свечей одинаковое, а вот при переходе через выходные разноеХмм... На сколько разное? Приведите пример.Можно конечно заморочиться и при DayOfWeek() == 1 рассчитывать номер свечи пятницы 22-00 с помощью функции iBarShift() и взять экстремумы на реальную разницу свечей. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
well72 Опубликовано 16 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 16 мая, 2017 Сейчас посчитал у двух разных брокеров - у Ф4Ю (мск-1) на буднях (М15) 47 баров, на переходе 43. На часовом 10 и 11 соответственно. У брокера с мск разницы нет. Забавно...У Ф4Ю в пятницу последний бар в 22.59 по терминалу. В будни 23.59. Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 16 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 16 мая, 2017 Сейчас посчитал у двух разных брокеров - у Ф4Ю (мск-1) на буднях (М15) 47 баров, на переходе 43Для Вашей системы критичен этот лишний час? если на ф4ю будет брать от 21-00 пятницы? Если критично, то надо делать специальный расчёт для понедельника, как выше описал. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
М13 Опубликовано 16 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 16 мая, 2017 0ll если Вы спрашиваете по расположению, то ближайшие, по отношению к цене сопротивление Res и поддержка Sup, если зона пробивается, то соответственно следующая за ней. Макс и мин зоны нужен для формализации торгового алгоритма.Если имеете ввиду по силе, то для отбоя можно все, кроме слабых Weak, думаю это лучше вынести во внешние параметры. Вообще было-бы здорово научиться работать с графическими объектами и такими индикаторами в частности. Глобальные переменные я посмотрел, но как их перебрать , по каким параметрам, чтобы получить нужные мне значения, я пока не знаю. Буду благодарен, если поможете. Изменено 16 мая, 2017 пользователем М13 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Николайец Опубликовано 16 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 16 мая, 2017 Oll Цитата Последнее значение нужно писать в 0 ячейку всегда, переворачивать ничего не надо. При появлении нового фрактала сдвигать ячейки 0-8 в область 1-9, таким образом освобождая для записи 0-ячейку. Читал про такое решение перед тем как обратиться за помощью сюда, но закодировать не смог, не нашёл нигде примеров. Может Вы знаете где посмотреть?Добавлено: 16-05-2017 14:39:04Oll Цитата Николайец Вы перед выводом переворачивайте, а после вывода возвращайте назад, тогда увидите работу функции. Спойлер if (fr!=0) { ArrayResize (Arr_Fr,100000); Arr_Fr[ i ]=fr; if (Arr_Fr[ i ]>0) i++; ArraySetAsSeries (Arr_Fr,true); Print ("massive___",Arr_Fr[0],"_",Arr_Fr[1],"_",Arr_Fr[2],"_",Arr_Fr[3],"_",Arr_Fr[4]); if (ArrayGetAsSeries (Arr_Fr)) Print("ArrayGetAsSeries true"); else Print ("ArrayGetAsSeries false"); ArraySetAsSeries (Arr_Fr,false); if (ArrayGetAsSeries (Arr_Fr)) Print("ArrayGetAsSeries true"); else Print ("ArrayGetAsSeries false"); } Теперь принты гласят, что в массиве одни нули, а перевороты работают... Изменено 16 мая, 2017 пользователем Николайец Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 16 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 16 мая, 2017 закодировать не смог, не нашёл нигде примеров. Может Вы знаете где посмотреть?Вот примерно так (без разницы верхний/нижний):Сначала определяем массивы: double fr[10], f0[9];Потом в коде совы:if ( newBar() ) { double frc = checkFrc(); // если есть фрактал frc = цена, если нет frc = -1; if ( frc > 0 ) { ArrayCopy( f0, fr, 0, 0, 9 ); // копируем первые 9 ячеек в промежуточный буфер f0 ArrayCopy( fr, f0, 1, 0, 9 ); // копируем обратно, но в 1 ячейку fr[0] = frc; } // записываем текущее значение фрактала}М13 глобальные переменные не надо перебирать - к ним обращаться по именам, которые Вы сами зададите. Но если хотите универсального решения, в том числе для индикаторов без исходного кода, то да, нужно обращаться через графические объекты в цикле, примерно так:Определяемся с постоянной частью имени "своих" объектов: string objName0 = "SSSR"; // SSSR - это в Вашем случае, для других индюков будет другое имя. int L = StringLen( objName0 ); // длина имени for ( int i = ObjectsTotal() - 1; i >= 0; i-- ) // перебираем объекты (только не надо это делать на каждом тике!!! ) if(StringSubstr( ObjectName(i), 0, L) == objName0 ) // нашли наш объект { // здесь определяем что это за зона, находим границы цен и т.д. } 3 Ссылка на сообщение Поделиться на другие сайты More sharing options...
kofesutra Опубликовано 17 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 17 мая, 2017 Здравствуйте все! Прошу Вас, направьте мои мысли в правильном направлении :)Что хочу сделать: журнал сделок с возможностью вписывать в него и дополнительные заметки (например, "выход из позиции по фильтру №2"),по каждому роботу, сету и паре отдельно (мои роботы не мультивалютные),дальше для анализа импортировать этот журнал в табличный редактор (это уже за пределами mql5). Сейчас пользуюсь штатным отчётом, но перед анализом приходится предварительно рассортировывать записи по парам и мэджикам.Было бы проще сразу брать данные по нужному роботу и паре. Спасибо! Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 17 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 17 мая, 2017 Пиши в текстовый файл .csv набор нужных полей через разделитель ";", потом открывай в ехеле и сразу получишь таблицу для анализа.Тут только мелкая проблема с разделителем десятичной точки и языковыми настройками винды. Ехель по умолчанию (если винда русская) воспринимает точку как разделитель даты, поэтому надо при записи менять точку на запятую Ссылка на сообщение Поделиться на другие сайты More sharing options...
well72 Опубликовано 17 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 17 мая, 2017 Здравствуйте, коллеги!Написал простой перевертыш по авторскому индикатору. Индикатор не ломаный, скомпилировался нормально. Но терминал при тестировании выдает cannot open fail и так далее.Подскажите, в чем подвох?) WPRRSI_UPDOWN.rar Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти