haiduc Опубликовано 17 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 17 февраля, 2016 haiduc сове и индюку цвет линий до лампочки - главное номер буфера и значение в нём. Там, где Вы нашли решение, на след. странице есть моя сова для проверки стрелочных индюков, она подойдёт для проверки любых 2-х цветных индюков - надо только условия входа/выхода изменить. понял, благодарю! надо просто проверить if (priceliniaGREEN != EMPTY_VALUE && CountBuy() ==0 && Ask вроде работает. а с примера выше, который я нашел, так другие номера буферов открывают ордера по стрелке. как хорошо, когда мучаешься, но понимаешь суть процесса! 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Найк Опубликовано 19 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 19 февраля, 2016 Цитата Найк у Вас сова работает по закрытию бара ибо Вы используете индюк на 1-баре, но каждый тик его проверяете. примените в самом начале след код и сова станет быстрее работать: static datetime new_Bar = 0; if (new_Bar == Time[0]) return; //Если бар не закрыт - выход new_Bar = Time[0]; Спасибо. Эта штука, хотя я ее и переделал помогла мне разобраться в касяках кода.Так смешно.В одном индюке стояло условие, перебирать до 1>=0 вместо i>=0.И он перебирал. А в другом другой косяк был.Так что все дело в опечатках в коде оказалось. Ссылка на сообщение Поделиться на другие сайты More sharing options...
SVS696 Опубликовано 19 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 19 февраля, 2016 Просьба помочь нубу в mql. Почему-то мои совы даже такого вида //+------------------------------------------------------------------+//| Drifter 1.00.mq4 |//| Copyright 2016, SVS |//| http://tlap.com/forum/profile/77648-SVS696 |//+-----------------------------------------------------------------+#property copyright "Copyright 2016, SVS"#property link "http://tlap.com/forum/profile/77648-SVS696"#property version "1.00"#property strict#property show_inputs//--- input parametersinput bool FixedLot=false;input bool DinamicSpread=false;input float Lot=1.00;input float Percentage=2.0;input float Follow=0.5;input int StopZerro=100;input int FollowStop=170;input int Distance=200;input int MiddleSpread=20;//+------------------------------------------------------------------+//| Expert program start function |//+------------------------------------------------------------------+void OnStart() {//--- }//+------------------------------------------------------------------+//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+int OnInit() {//---//--- return(INIT_SUCCEEDED); }//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+void OnDeinit(const int reason) {//--- }//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+ не открывают менюшку параметров, да и вообще не пашут. Хотя если копирую полностью чей-то пример, то все нормально.Как скрипт все нормально работает. Ссылка на сообщение Поделиться на другие сайты More sharing options...
mobidik Опубликовано 19 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 19 февраля, 2016 Просьба помочь нубу в mql. Почему-то мои совы даже такого вида Спойлер //+------------------------------------------------------------------+//| Drifter 1.00.mq4 |//| Copyright 2016, SVS |//| http://tlap.com/forum/profile/77648-SVS696 |//+-----------------------------------------------------------------+#property copyright "Copyright 2016, SVS"#property link "http://tlap.com/forum/profile/77648-SVS696"#property version "1.00"#property strict#property show_inputs//--- input parametersinput bool FixedLot=false;input bool DinamicSpread=false;input float Lot=1.00;input float Percentage=2.0;input float Follow=0.5;input int StopZerro=100;input int FollowStop=170;input int Distance=200;input int MiddleSpread=20;//+------------------------------------------------------------------+//| Expert program start function |//+------------------------------------------------------------------+void OnStart() {//--- }//+------------------------------------------------------------------+//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+int OnInit() {//---//--- return(INIT_SUCCEEDED); }//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+void OnDeinit(const int reason) {//--- }//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+ не открывают менюшку параметров, да и вообще не пашут. Хотя если копирую полностью чей-то пример, то все нормально.Как скрипт все нормально работает. Удали строку: #property show_inputs Ссылка на сообщение Поделиться на другие сайты More sharing options...
SVS696 Опубликовано 19 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 19 февраля, 2016 Удали строку: #property show_inputs Если бы все так было просто... Вообщем я уже проверял и проверил ещё раз. Не работает, даже если убрать все #property. Изменено 19 февраля, 2016 пользователем SVS696 Ссылка на сообщение Поделиться на другие сайты More sharing options...
dermitay Опубликовано 20 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 20 февраля, 2016 SVS696, выстави в настройках разрешение торговать совам(в настройках терминала сервис-настройки-советники), если и при этом у тебя не будут показываться инпуты, и елис ты этот код действительно запускаешь из папки скриптов - то выход один - сноси на хрен терминал и ставь его с нуля, так как код у тебя абсолютно верно написан, все работает(я про инпуты), я проверил.однако, ты должен быть в курсе что переменные лота - должны быть дабловыми, тебя сервак пошлет в пеший тур если ты в ордерсенде подпихнешь ему флоатовскую переменную. аналогично перепроверь на корреткность тип других переменных. Ссылка на сообщение Поделиться на другие сайты More sharing options...
SVS696 Опубликовано 20 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 20 февраля, 2016 SVS696, и елис ты этот код действительно запускаешь из папки скриптов однако, ты должен быть в курсе что переменные лота - должны быть дабловыми, тебя сервак пошлет в пеший тур если ты в ордерсенде подпихнешь ему флоатовскую переменную. аналогично перепроверь на корреткность тип других переменных. 1) Если я компилю в скрипт и кидаю в скрипты, то все нормально, а вот при компиляции совы (естественно потом кидаю в советники) уже окошко начинает отрисовываться и сразу пропадает. В другом терминале аналогично. Компилирую именно сову, код с нуля даже писал.2)Про double спасибо Изменено 20 февраля, 2016 пользователем SVS696 Ссылка на сообщение Поделиться на другие сайты More sharing options...
dermitay Опубликовано 20 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 20 февраля, 2016 1) Если я компилю в скрипт и кидаю в скрипты, то все нормально, а вот при компиляции совы (естественно потом кидаю в советники) ужи окошко начинает отрисовываться и сразу пропадает. тебе уже выше правильно написали. в сове не нужен show_inputs. это скриптовый параметр как и show_indicator_inputs(ну или как его там, точно не помню лексикон) - индикаторный. тебе в любом случае в логах пишется ошибка при таких подходах что ты используешь скриптовые вещи в сове и наоборот. выводится критическая ошибка типа "this is not script" или наподобие. Ссылка на сообщение Поделиться на другие сайты More sharing options...
SVS696 Опубликовано 20 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 20 февраля, 2016 1) Если я компилю в скрипт и кидаю в скрипты, то все нормально, а вот при компиляции совы (естественно потом кидаю в советники) ужи окошко начинает отрисовываться и сразу пропадает. тебе уже выше правильно написали. в сове не нужен show_inputs. это скриптовый параметр как и show_indicator_inputs(ну или как его там, точно не помню лексикон) - индикаторный. тебе в любом случае в логах пишется ошибка при таких подходах что ты используешь скриптовые вещи в сове и наоборот. выводится критическая ошибка типа "this is not script" или наподобие. Косяк тут какой-то//+------------------------------------------------------------------+//| Expert program start function |//+------------------------------------------------------------------+void OnStart() {//--- }//+------------------------------------------------------------------+ Тогда где описывать основное тело советника? Ссылка на сообщение Поделиться на другие сайты More sharing options...
dermitay Опубликовано 20 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 20 февраля, 2016 Тогда где описывать основное тело советника? OnStart используется только в скриптах и индикаторах(про последние - не точно).в сова основное тело - это либо стандартно void OnTick() либо если ты хард-тру мультивалютник то void OnTimer()(его еще надо правильно объявлять в ините). смотря как ты реализовываешь логику.вобще, я на твоем месте создал бы стандартный код сова через помощника метаэдитора и сам бы увидел все необходимые блоки, которые создаются автоматически. 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 20 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 20 февраля, 2016 подтверждаю:1. если МТ видит в коде #property show_inputs, то считает это скриптом без вариантов2. OnStart() - это стартовая функция скрипта3. OnCalculate() - индикатора4. OnTick() - для эксперта. Эксперт без этой функции не запустится (если только через таймер)Запустите этот код как эксперта (сейчас рынок закрыт - алерта не будет - тика нет, но параметры увидите):input double ddd = 10;void OnTick() { Alert("Hello World! ddd =",ddd); } 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
mobidik Опубликовано 20 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 20 февраля, 2016 ups, уже ответили... Ссылка на сообщение Поделиться на другие сайты More sharing options...
SVS696 Опубликовано 20 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 20 февраля, 2016 Короче я изучал старый mql4 надо учить mql5) который работает и в новых терминалах. Ссылка на сообщение Поделиться на другие сайты More sharing options...
serpent989 Опубликовано 20 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 20 февраля, 2016 Программисты, подскажите! название функции, переменной которой является название индикатора, который отобразится на графике инструмента, к которому прикрепить собственно написанный советник? Изменено 20 февраля, 2016 пользователем serpent989 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Гриб Опубликовано 20 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 20 февраля, 2016 В продолжение темы вопросы от ламера ...=)Мне нужна помощь в функции подсчета ордеров. Считать ордера по позициям я научился благодаря урокам. Теперь мне нужно посчитать конкретные ордера на покупку и конкретные ордера на продажу, как быть? Выручайте!!! =) Ссылка на сообщение Поделиться на другие сайты More sharing options...
dermitay Опубликовано 20 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 20 февраля, 2016 В продолжение темы вопросы от ламера ...=)Мне нужна помощь в функции подсчета ордеров. Считать ордера по позициям я научился благодаря урокам. Теперь мне нужно посчитать конкретные ордера на покупку и конкретные ордера на продажу, как быть? Выручайте!!! =) параметры ордеров погулить не судьба,не? OrderType(), например. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Гриб Опубликовано 20 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 20 февраля, 2016 Я не совсем ясно выразился. OrderType() это все понятно. Есть 2 ордера на покупку, с разной ценой открытия и разными тейками и стопами, как мне каждый из них отдельно посчитать? Пример если цена выше открывается покупка, если цена ниже открывается покупка, но нужно чтобы открылось не больше чем n ордеров Ссылка на сообщение Поделиться на другие сайты More sharing options...
JR Опубликовано 20 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 20 февраля, 2016 Универсальная функция подсчета ордеров в рынке любого типа (тип передается в функцию) спасет вас, и станет основой любого будущего советника. Почти любой эксперт должен всегда знать есть ли в рынке "его" ордера и в каком количестве. Ссылка на сообщение Поделиться на другие сайты More sharing options...
serpent989 Опубликовано 20 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 20 февраля, 2016 Программисты, подскажите! название функции, переменной которой является название индикатора, который отобразится на графике инструмента, к которому прикрепить собственно написанный советник? Ну вообщем, чтоб ещё понятнее было, то нужна функция обратная этой - bool ChartIndicatorDelete( long chart_id, // идентификатор графика int sub_window, // номер подокна const string indicator_shortname // короткое имя индикатора );Что-то мне подсказывает, что такой функции нет в MQL4... Ссылка на сообщение Поделиться на другие сайты More sharing options...
Гриб Опубликовано 20 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 20 февраля, 2016 Универсальная функция подсчета ордеров в рынке любого типа (тип передается в функцию) спасет вас, и станет основой любого будущего советника. Почти любой эксперт должен всегда знать есть ли в рынке "его" ордера и в каком количестве. если вы говорите о такой:int BuyCount(){ int count = 0; for (int buy = OrdersTotal()-1; buy>=0; buy--) { if(OrderSelect(buy,SELECT_BY_POS,MODE_TRADES)) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && (OrderType() == OP_BUY )) count++; } } return(count); }То она не подойдет Ссылка на сообщение Поделиться на другие сайты More sharing options...
dermitay Опубликовано 20 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 20 февраля, 2016 serpent989, попробуй два цикла. один вложен в другой. главный перебирает окна открытых графиков, а второй перебирает подокна выбранного графика. и почитай про вот эту функциюhttps://docs.mql4.com/ru/chart_operations/windowfindзадачу так и не понял до конца. если тебе надо кидать вместе с совой и индикатор на этот же график - так еще проще, прям в ините ну или однократно выполняемая функция, в которой будет подгружаться заранее подготовленный темплейт с совой и индикатором. но, это какой-то геморой получается. проще кинуть на график сову и нужный индкиатор, сохранить как темплейт и применять уже этот темлпейт к любому окну - и сова и индюк будут автоматом подсасываться. и не надо шаманить с кодом и творить танцы с бубном, которые легко обходятся вне кода.Гриб, я, конечно, понимаю что не бывает глупых вопросов, бывают глупые ответы. но я десять раз перечитал твои посты и так и не понял собстно а что тебе надо и чего не устраивает в тобой же приведенном коде. тебе надо функцию для селл чтоли расписать код? :)) Изменено 20 февраля, 2016 пользователем dermitay 3 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Гриб Опубликовано 20 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 20 февраля, 2016 Да не надо мне функцию на селл))). Вопрос по другому задам. При появлении сигнала на покупку открывается один ордер на покупку и один на продажу. При появлении сигнала на продажу открывается один ордер на продажу и один на покупку, как это описать в коде? А вообще хотел сказать спасибо, что возитесь с такими как я. Респект вам всем парни Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 21 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 21 февраля, 2016 Гриб я тоже не понял, но попробую - может Вам при открытии 2-ой пары ордеров проверять BuyCount() serpent989 поддерживаю dermitay - смотри в сторону шаблонов. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
JR Опубликовано 21 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 21 февраля, 2016 Гриб, я имел ввиду универсальную функцию, подобную этой:int CountTrades(int otype) //Считаем количество открытых ордеров нужного типа { int Count = 0; for (int i = OrdersTotal() - 1; i >= 0; i--) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol() == Symbol() && OrderType() == otype && OrderMagicNumber() == Magic) Count ++; } } return (Count);} А далее ты уже используешь ее в логике открытия как нужно. Например в твоем случае (если я правильно понял):if (CountTrades(OP_BUY) == 0 && CountTrades(OP_SELL) == 0) //нету наших ордеров в рынке { if (Сигнал покупки) { Открываем покупки Открываем продажи } else if (Сигнал продажи) { Открываем продажи Открываем покупки } } Дальше включай логику сам 3 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Qj Опубликовано 21 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 21 февраля, 2016 Гриб, я имел ввиду универсальную функцию, подобную этой: int CountTrades(int otype) //Считаем количество открытых ордеров нужного типа { int Count = 0; for (int i = OrdersTotal() - 1; i >= 0; i--) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol() == Symbol() && OrderType() == otype && OrderMagicNumber() == Magic) Count ++; } } return (Count);} А далее ты уже используешь ее в логике открытия как нужно. Например в твоем случае (если я правильно понял):if (CountTrades(OP_BUY) == 0 && CountTrades(OP_SELL) == 0) //нету наших ордеров в рынке { if (Сигнал покупки) { Открываем покупки Открываем продажи } else if (Сигнал продажи) { Открываем продажи Открываем покупки } } Дальше включай логику сам Мне кажется стоит все собрать за один проход по всем ордерам чем за 2. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти