denis77515 Опубликовано 27 ноября, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 ноября, 2014 Друзья, данная тема очень нужна, и мне как новичку который начал изучать ее по вашим видео урокам вообще не чего не понятно. в данном курсе даны понятия уже для человека который хоть как то начал разбирать в MQL. Я считаю что в первых уроках должны быть описания блоков -"Что за что отвечает, если что то убрать то будет то то ,то". Одним словом со скелета от легкого к сложному.Пытался по уроку прикрутить к индикатору оповещение по ID к андроиду крутил вертел, не чего. Так же и с звуковым алертом. Если не трудно прикрутите я хоть увижу что и куда.Заранее спасибо. Он декомпилированный что ли ? Встречался с таким кодом в декомпилах,очень трудно разобрать чего куда! Ссылка на сообщение Поделиться на другие сайты More sharing options...
chistaia-rodina Опубликовано 27 ноября, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 ноября, 2014 osvit, говорите что уроки рассчитаны на тех, кто что-то уже знает, так и Вы вроде начали не с первого из них. Ссылка на сообщение Поделиться на другие сайты More sharing options...
pavlovost Опубликовано 28 ноября, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 28 ноября, 2014 pavlovost Ну раз уж Вы учитесь, то будете сами исправлять.1. Создайте функцию init() и в ней определите размер Вашего динамического массива.2. Решите будет это массив обычный или тайм-серия (с обратным индексированием)После этого Ваш цикл заработает, но вывод в коммент по одному значению - неправильно, т.к. в итоге на экране будет видно последнее. Нужно сделать вывод в одной строке все 5-значений. для этого создаётся новый цикл и в строковую переменную добавляются значения массива разделённые пробелами, а потом коммент.Ещё надо создать функцию deinit() в которой очищать коммент после выгрузки совы: коммент = ""; Не очень понял, для чего создавать функцию init() и в ней определять размер массива? И как его определить, если размер массива - переменная (что вроде бы не допускается).Также не понял, как вывести в строку результаты, ведь кол-во результатов - переменная (В, кол-во баров). Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 28 ноября, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 28 ноября, 2014 Не очень понял, для чего создавать функцию init() и в ней определять размер массива? И как его определить, если размер массива - переменная (что вроде бы не допускается).Также не понял, как вывести в строку результаты, ведь кол-во результатов - переменная (В, кол-во баров). 1. В Вашем коде массив вообще не имеет размерности и чтоб он узнал свою размерность нужно прочитать и сделать.2. Я-ж написал "создаётся новый цикл". Имеется в виду цикл от 0 до В. внутри string sss += StringConcatenate("Max[",i,"]=",a,", ");. после цикла: коммент(sss);Если на самом деле хотите писать программы (на любом языке) нужно больше читать справочной литературы - там всё написано. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
pavlovost Опубликовано 28 ноября, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 28 ноября, 2014 Не очень понял, для чего создавать функцию init() и в ней определять размер массива? И как его определить, если размер массива - переменная (что вроде бы не допускается).Также не понял, как вывести в строку результаты, ведь кол-во результатов - переменная (В, кол-во баров). 1. В Вашем коде массив вообще не имеет размерности и чтоб он узнал свою размерность нужно прочитать и сделать.2. Я-ж написал "создаётся новый цикл". Имеется в виду цикл от 0 до В. внутри string sss += StringConcatenate("Max[",i,"]=",a,", ");. после цикла: коммент(sss);Если на самом деле хотите писать программы (на любом языке) нужно больше читать справочной литературы - там всё написано. Спасибо за ответы! Попробую разобраться. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Chelentano Опубликовано 28 ноября, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 28 ноября, 2014 Привет! Никак не могу разобраться как взять цену открытия (закрытия, хай, лоу) у конкретной свечи на графике. К примеру, мне нужна цена открытия седьмой по счету свечи на часовом графике, 27.11.2014 :d Можете подсказать как взять ее? Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 29 ноября, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 29 ноября, 2014 Привет! Никак не могу разобраться как взять цену открытия (закрытия, хай, лоу) у конкретной свечи на графике. К примеру, мне нужна цена открытия седьмой по счету свечи на часовом графике, 27.11.2014 :d Можете подсказать как взять ее?Вообще Open[7]. Но это если считать от текущей свечи. Если нужна свеча именно 27.11.14 7-00, то по другому, например так:Open[iBarShift(_Symbol,PERIOD_H1,D'2014.11.27'+7*3600)]есть и другие варианты Ссылка на сообщение Поделиться на другие сайты More sharing options...
Chelentano Опубликовано 29 ноября, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 29 ноября, 2014 Привет! Никак не могу разобраться как взять цену открытия (закрытия, хай, лоу) у конкретной свечи на графике. К примеру, мне нужна цена открытия седьмой по счету свечи на часовом графике, 27.11.2014 :d Можете подсказать как взять ее?Вообще Open[7]. Но это если считать от текущей свечи. Если нужна свеча именно 27.11.14 7-00, то по другому, например так:Open[iBarShift(_Symbol,PERIOD_H1,D'2014.11.27'+7*3600)]есть и другие варианты Класс! Большое спасибо! Не знал о существовании iBarShift()Добавлено: 29-11-2014 23:20:33Что ж, новая загвоздка возникла, наверняка где-то о ней повествуют, но не смог найти >:dПодскажите, пожалуйста, как из блока (в данном случае for()), вытащить значение переменной k, что бы использовать ее значение, полученное в for() и дальше?for (shift; shift >= 23; shift -= 24) { Arr1[k] = iClose (Symbol(), 0, shift); k++; } Изменено 29 ноября, 2014 пользователем Chelentano Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 30 ноября, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 ноября, 2014 Подскажите, пожалуйста, как из блока (в данном случае for()), вытащить значение переменной k, что бы использовать ее значение, полученное в for() и дальше?Ваш код вообще работать не будет. Лучше словами опишите что хотите сделать.Можно из цикла вызвать внешнюю функцию и передать туда "к". Ссылка на сообщение Поделиться на другие сайты More sharing options...
Chelentano Опубликовано 30 ноября, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 ноября, 2014 Подскажите, пожалуйста, как из блока (в данном случае for()), вытащить значение переменной k, что бы использовать ее значение, полученное в for() и дальше?Ваш код вообще работать не будет. Лучше словами опишите что хотите сделать.Можно из цикла вызвать внешнюю функцию и передать туда "к". Да, дурацкий я пример привел. Вот другой, наверное, более правильный)for (int k=0; k { Array [k]=k*10; }Внимание вопрос: как мне использовать массив за пределами цикла? Если следовать вашему совету, вызвав внешнюю функцию в цикле, то ведь получится что его потом из этой функции никуда не перетащишь. Или я не понимаю чего-то? Изменено 1 декабря, 2014 пользователем Chelentano Ссылка на сообщение Поделиться на другие сайты More sharing options...
denis77515 Опубликовано 1 декабря, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 1 декабря, 2014 Oll Доброго времени,спасибо за вашу работу и проявленный интерес к этой системе.Посмотрел ваш индикатор по корзине USD сравнил с оригиналом значения индикатора практически не отличаются.Если писать советника самому с вашего индикатора,то по умолчанию у него прописана корзина USD,от сюда вопрос как взять показания индикатора по двум другим корзинам или все пары прописывать уже не посредственно в коде советника через функцию iCustom(); Ссылка на сообщение Поделиться на другие сайты More sharing options...
Chelentano Опубликовано 1 декабря, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 1 декабря, 2014 Разобрался, все в порядке, спасибо! :) Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 1 декабря, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 1 декабря, 2014 как взять показания индикатора по двум другим корзинам или все пары прописывать уже не посредственно в коде советника через функцию iCustom(); denis77515 по Кукловоду давайте общаться в его теме. В сове Вы можете прописывать и передавать в индюк любые корзины (для этого и писался), так-же не стоит в одну сову прописывать все 3 корзины, нужно делать одну и к сове 3 сета с разными корзинами. Если я все-таки возьмусь писать сову, то сделаю именно так. Ссылка на сообщение Поделиться на другие сайты More sharing options...
oleguitar Опубликовано 4 декабря, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 4 декабря, 2014 Привет всем!Оффтоп маленький ;)Можно ли на мониторинге Myfxbook удалить статистику? У меня счет просто есть, там сделки какие-то открывал по другой системе, а сейчас советник запускаю, и старые сделки не нужны. Ссылка на сообщение Поделиться на другие сайты More sharing options...
chistaia-rodina Опубликовано 4 декабря, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 4 декабря, 2014 oleguitar, наверное там можно только установить другую начальную дату, через пользовательский анализ. Возможно можно удалить счёт из мониторинга и заново его создать, точно не знаю, сам не пробовал. Ссылка на сообщение Поделиться на другие сайты More sharing options...
AsLightningStorm Опубликовано 6 декабря, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 декабря, 2014 Уважаемые коллеги, здравствуйте!В блоке Trade like a pro, я наткнулся на торговую систему под названием "Devilfish". И решил собрать с неё робота. ссылка: _http://tradelikeapro.ru/forex-octopus/От себя добавил разделение позиции. Собственно, в этом и проблема.цель: Вместо одной позиции объемом х, открывать 2 позиции с объемом 0,5х. Причем одна позиция должна быть короткой и открыться всего 1 раз за всё то время пока не закроется вторая(длинная).В итоге короткие позиции открываются более 1 раза, либо длинная позиция не открывается, в некоторых случаях не включается трал по МА, хотя на мой взгляд все условия соблюдены, идеи по решению проблемы закончились((Журнал выдает сообщения о неизвестных тикетах, пестрит об ордермодифи ерор 4108....2014.12.05 23:18:18.890 2014.01.07 02:15 devilfish GBPUSD,H1: OrderModify error 41082014.12.05 23:18:18.890 2014.01.07 02:15 devilfish GBPUSD,H1: unknown ticket 3 for OrderModify function...2014.12.05 23:18:18.890 2014.01.07 02:15 devilfish GBPUSD,H1: OrderModify error 41082014.12.05 23:18:18.890 2014.01.07 02:15 devilfish GBPUSD,H1: unknown ticket 6 for OrderClose function...Помогите, пожалуйста! Devilfish.rarDevilfish_test0.jpgDevilfish_test1.jpgDevilfish.txt Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 6 декабря, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 декабря, 2014 Посмотрел Ваш код. Немудрено, что у Вас кончились идеи по его исправлению, у меня так вообще не возникло...Вся проблема в том, что нет чёткого алгоритма работы программы и Вы, имхо, не до конца разобрались что такое тикет.Вот этот кусок как иллюстрация: if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicSell && OrderTicket()==ticket4) { if(OrderType()==OP_SELL) count++; }Вы хотите подсчитать сколько у Вас в системе ордеров с тикетом4? - ответ если селл, то, возможно, 1, а если бай, то по-любому = 0.Мой совет: начните заново, с блок-схемы. Если тяжело скачайте готовую сову с похожими индюками и её модифицируйте.Пишите здесь (текстом) алгоритм работы совы - что-за-чем, а мы дополним, исправим или посоветуем.Совет: не делайте разные магики для селл и бай - нет необходимости.По Вашему сова должна одновременно торговать в обе стороны или поочереди? Ссылка на сообщение Поделиться на другие сайты More sharing options...
AsLightningStorm Опубликовано 6 декабря, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 декабря, 2014 Торговая система построена на 3х ЕМА с разными периодами(напр. 3,13,55) и на 2х индикаторах тренда(octopus1, octopus2).для входов используются пересечения скользящих разного периода, затем входы фильтруются 2-мя индикаторами.Выход из позиции осуществляется тралом по медленной МА или по пересечению 2х быстрых(напр. ЕМА(3),ЕМА(13)) в тот период времени, когда Octopus2 поменяет свой сигнал на противоположный.Теоретически, торговля в 2 стороны не возможна.Попробую переписать убрав все лишняки Добавлено: 06-12-2014 18:40:29Примерно так. Добавлено: 06-12-2014 18:48:29Далее я хочу убрать "мясо" которое начинается во время флэтов. Предлагаю ввести ограничение "минимальный стоп-лосс"Добавлено: 06-12-2014 19:45:09Для этого нужно рассчитать величину стоп-лоса в пунктах.Каким образом можно преобразовать дабл в интеджер? Есть ли такой преобразователь?предлагаю такую функцию:int slbuy(){double slbuy1;slbuy1 = NormalizeDouble(BarClose - "цена СЛ", Digits);for (int q = 1; q { slbuy1 = slbuy1 * 10; return(slbuy1); }}devilfishstock.mq4 Изменено 8 декабря, 2014 пользователем AsLightningStorm Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 7 декабря, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 декабря, 2014 Каким образом можно преобразовать дабл в интеджер? Есть ли такой преобразователь? :dПрости за смех, код аккуратный - видно, что знакомы с программированием, но впечатление такое, что с Луны свалились и документации по МКЛ в глаза не видели.double ddd = 1.02;int iii = (int)ddd;вот и всё преобразование (просто отбрасывается дробная часть), если надо округлить то читай здесь.Теперь о коде: Вы проигнорировали мой совет о блок схеме, но теперь я знаю, что сова торгует поочереди (бай/селл) поэтому:№ тикета и лот у Вас одно значение зачем две переменных? Нет переменной для хранения текущего направления торговли, текущего СЛ.Блок схема:Старт.Проверяем текущее направление торговли (3 состояния: -1 нет, 0 бай, 1 селл. Только так!)если -1: проверка сигналов на открытие если есть: открываемесли 0 или 1: контроль (пересчёт) ордеров по направлению (на предмет, а вдруг закрылись по ТР или СЛ) если закрылись: сброс направления -1, обнулить тикет, СЛ, выход если на месте: контроль ТР и СЛ и расчёт нового значения СЛ по текущему направлению если новый СЛ ближе старого минимум на 5 пипс, или текущий ТР и СЛ = 0 - модификация ордера по направлениюКонец.Саму модификацию Вы делаете не правильно. Ошибками будет сыпать на каждом тике. Но об этом позже, сначала скелет - потом мясо. Ссылка на сообщение Поделиться на другие сайты More sharing options...
nixxx Опубликовано 7 декабря, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 декабря, 2014 Извиняюсь, пишу тут чтобы не плодить темы. Подправьте пожалуйста сову, выдает ошибки при компиляции на 745м. Сова по ТС Пуриа. 3MACrossMACDTrendFollowerV2+bstopv1.1.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 8 декабря, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 8 декабря, 2014 Извиняюсь, пишу тут чтобы не плодить темы. Подправьте пожалуйста сову, выдает ошибки при компиляции на 745м. Сова по ТС Пуриа.Возьми теперь компилируется.3MACrossMACDTrendFollowerV2+bstopv1.1.mq4 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
AsLightningStorm Опубликовано 8 декабря, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 8 декабря, 2014 Так лучше? devilfish1.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 8 декабря, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 8 декабря, 2014 Так лучше. Ещё немного подправил. devilfishstock.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
AsLightningStorm Опубликовано 8 декабря, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 8 декабря, 2014 Добавилif (MathAbs(ma3 - SL) > Slippage*Point) { SL = NormalizeDouble(ma3 - Slippage*Point, Digits); OrderModify(OrderTicket(),OrderOpenPrice(), SL, OrderTakeProfit(),OrderExpiration(),Blue); }без него SL не двигает, но с ним в журнале ...2014.12.08 18:55:44.187 2014.01.06 15:40 devilfish(1) GBPUSD,H1: OrderModify error 12014.12.08 18:55:44.187 2014.01.06 15:37 devilfish(1) GBPUSD,H1: OrderModify error 12014.12.08 18:55:44.187 2014.01.06 15:35 devilfish(1) GBPUSD,H1: OrderModify error 1...Я понимаю, что этого быть не должно, может *часть текста отсутствует* с ним? Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 8 декабря, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 8 декабря, 2014 Я понимаю, что этого быть не должно, может *часть текста отсутствует* с ним?К какому брокеру МТ подключен? если не ЕЦН, то надо проверять на СтопЛевел (когда ма3 близко к цене дистанции недостаточно), пробуй вместо Слиппажа поставь 200*_Point (больше 200 вряд-ли будет) Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти