0ll Опубликовано 1 августа, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 1 августа, 2017 Александр_F в Вашем коде есть сомнительные строки, например: if(OrderOpenPrice()что содержится в переменной BULevel? В Bid реальная цена как её можно умножать на Point?Я бы сделал так (если в BULevel кол-во пипс): if(OrderOpenPrice()Добавлено: 01-08-2017 05:57:30Alex Fato стрелочные индикаторы отличаются от обычных только типом буфера, так что Вам нужно с обычных индикаторов начинать, а как только научитесь Вам уже стрелочные нафиг не нужны будут... :d Изменено 1 августа, 2017 пользователем 0ll 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Alex Fato Опубликовано 1 августа, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 1 августа, 2017 Alex Fato стрелочные индикаторы отличаются от обычных только типом буфера, так что Вам нужно с обычных индикаторов начинать, а как только научитесь Вам уже стрелочные нафиг не нужны будут... :dДа согласен, и некоторые я уже писал.Но сейчас, задача состоит в том что нужно 2 индикатора объединить в одну стрелку.К примеру когда свеча заходит за Болиджер и за уровень стохастика, скрин ниже.Можешь как то мне помочь с этим или посоветовать того кто поможет?5Zk8Fjc0Dfg.jpg Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 1 августа, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 1 августа, 2017 Но сейчас, задача состоит в том что нужно 2 индикатора объединить в одну стрелку.К примеру когда свеча заходит за Болиджер и за уровень стохастика, скрин ниже.Можешь как то мне помочь с этим или посоветовать того кто поможет?Ну делай, я помогу (советом). Возьми боллинжер (3 буфера) делай их невидимыми, добавь буфер стоха и 2 стрелочных буфера . Ссылка на сообщение Поделиться на другие сайты More sharing options...
Alex Fato Опубликовано 1 августа, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 1 августа, 2017 Ну делай, я помогу (советом). Возьми боллинжер (3 буфера) делай их невидимыми, добавь буфер стоха и 2 стрелочных буфера . Первая версия готова, сейчас придумаю как отфильтровать стохастиком._http://fxpics.ru/image/5I25wДумал будет сложнее.Код скидать файлом или копировать и как текст?90_BB.mq4 Изменено 1 августа, 2017 пользователем Alex Fato 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 1 августа, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 1 августа, 2017 Можно и под спойлером - для оперативностиТолько шаблон старый - возьми посвежее для 600+ билдов. Ссылка на сообщение Поделиться на другие сайты More sharing options...
izeran6565 Опубликовано 2 августа, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 2 августа, 2017 izeran6565, а ничего, что оптить со спрэдами на шару вы сможете года через 3 - после того, как лично соберете реальные котиры всех нужных вам пар на всех нужных вам брокерах?!А ближайшие пару лет опту/тестам ни-ни?!При том, что за 3 года круглосуточной включенности для сбора котиров ваша коллекция старых ноутбуков как раз Богу душу и отдаст!И даже после этого вы не сможете тестить всех ботов, в код которых нельзя будет воткнуть понимание этой приблуды.я понимаю вашу попытку за сотку баксов решить проблему на пару штук.но вам нужен нормальный сервер для опта, в котором вы сможете за часы вместо месяцев комплексно оптить все параметры ботов на правильных котирах единственной копии TDS2.Вы ж должны знать сколько денег стоит время и что ваши развлечения с оптом на старых ноутах эквивалентны потерям прибыли от всего, как минимум, за столько же месяцев... Похоже сервер это единственный выход, буду в этом направлении двигаться 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Alex Fato Опубликовано 6 августа, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 августа, 2017 Можно и под спойлером - для оперативностиТолько шаблон старый - возьми посвежее для 600+ билдов. Шаблон новый нашел и не один, теперь у меня 4 шаблона.Такой вопрос на видеокурсе был рассмотрен самый простой индикаторТот же что и здесь _https://book.mql4.com/ru/samples/icustomПри смене параметров BufferH = High[i+1];Линия сдвигается в право. Скрин внизуПочему при BufferH = High[i-1]; Индикатор пропадает?#property indicator_chart_window#property indicator_buffers 2#property indicator_color1 clrRed#property indicator_width1 1#property indicator_style1 0#property indicator_color2 clrLime#property indicator_width2 1#property indicator_style2 0double BufferH[];double BufferL[];//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+int OnInit() { SetIndexBuffer(0, BufferH); SetIndexStyle(0, DRAW_LINE); SetIndexBuffer(1, BufferL); SetIndexStyle(1, DRAW_LINE); return(INIT_SUCCEEDED); }//+------------------------------------------------------------------+//| 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[]) { for (int i=0; i { BufferH = High[i-1]; BufferL = Low; } return(rates_total); }//+------------------------------------------------------------------+5Zk8Fjc0Dfg.jpgGBPUSDH1.png Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 6 августа, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 августа, 2017 Вы не указали индекс у буферов (BufferH[?], Low[?]) + возможно и при High[-1] выбивает по ошибке.цикл желательно использовать по другому, чтоб на каждом тике не перебирать все бары историипопробуй напиши так:{ i = rates_total - prev_calculated - 1; if (i while( i > 0 ) // отсекаем тики 0-бара { BufferH[ i ] = High[ i-1 ]; BufferL[ i ] = Low [ i ]; } return(rates_total);}ПС: возможно насчёт индексов я не прав - форум не пропускает конструкцию [ i ] без пробелов... ;) Изменено 6 августа, 2017 пользователем 0ll Ссылка на сообщение Поделиться на другие сайты More sharing options...
Alex Fato Опубликовано 6 августа, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 августа, 2017 Вы не указали индекс у буферов (BufferH[?], Low[?]) + возможно и при High[-1] выбивает по ошибке.цикл желательно использовать по другому, чтоб на каждом тике не перебирать все бары историипопробуй напиши так:{ i = rates_total - prev_calculated - 1; if (i while( i > 0 ) // отсекаем тики 0-бара { BufferH[ i ] = High[ i-1 ]; BufferL[ i ] = Low [ i ]; } return(rates_total);}ПС: возможно насчёт индексов я не прав - форум не пропускает конструкцию [ i ] без пробелов... ;) Терминал зависает сразу же только индикатор ставлюИндикаторы с условием i-1 вообще реально писать? или можно только +1 Изменено 6 августа, 2017 пользователем Alex Fato Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 6 августа, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 августа, 2017 Индикаторы с условием i-1 вообще реально писать? или можно только +1Реально, но надо аккуратно. Вы поясните задачу, для чего это? писать в текущий буфер значение из "будущего". Ссылка на сообщение Поделиться на другие сайты More sharing options...
Alex Fato Опубликовано 6 августа, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 августа, 2017 Индикаторы с условием i-1 вообще реально писать? или можно только +1Реально, но надо аккуратно. Вы поясните задачу, для чего это? писать в текущий буфер значение из "будущего". Да, счас все объясню.Скидываю все четыре шаблонав них прописано условие точки входа, которая дает 90%if(High > BB_SELL_1 && Close >= Close[i-1] && Close > Open )и если удалить Close >= Close[i-1] то все 4 шаблона работают, но тогда нет точки входаесли добавить то в тестере ничего не работает, а на графике работает только на истории, а на появляющихся барах пусто.1. И я так понимаю или можно как то сделать что б индикатор работал с этой точкой входа.2. Или это иллюзия и работать будет только на истории, где уже есть "будущий бар", и мне нужно искать другую точку входа. 90 ВВ ver 5.0 это тот же старый шаблоностальные новые какой лучше не знаю еще.90_BB_ver_5.0.mq4arrows_90_PRO.mq4iTest3.mq4lreversenenveloper_90.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 6 августа, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 августа, 2017 Понятно. Нужно сделать чтоб [ i - 1 ] всегда было >= 1, ноль уже не подойдёт, т.к. клоуз[0] постоянно меняется.Давай пробовать. Кстати нашёл ошибку в своём посте - забыл i-- в цикле While.Написал индюка, пробуй, проверь код - может чего недопонял...ПС: в твоём новом шаблоне много хрени, похоже автор шаблона не совсем понял принцип работы индюка.ППС: алерты не смотрел, но на 1 баре работать не будут - только на 2-ом. BB_signal_90.mq4 Изменено 6 августа, 2017 пользователем 0ll Ссылка на сообщение Поделиться на другие сайты More sharing options...
Alex Fato Опубликовано 6 августа, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 августа, 2017 Понятно. Нужно сделать чтоб [ i - 1 ] всегда было >= 1, ноль уже не подойдёт, т.к. клоуз[0] постоянно меняется.Давай пробовать. Кстати нашёл ошибку в своём посте - забыл i-- в цикле While.Написал индюка, пробуй, проверь код - может чего недопонял...ПС: в твоём новом шаблоне много хрени, похоже автор шаблона не совсем понял принцип работы индюка.ППС: алерты не смотрел, но на 1 баре работать не будут - только на 2-ом. Алерты то уже потом, когда со стелкой все хорошо будет.По тестил в тестере бары идут сигналы появляются, почитал код превосходно, я не знал что можно так цикл писать и про i-- тоже не знал.Но на тесте в меленом режиме заметил такую не приятною особенностьСигнальная стрелка появляется когда бар 1 закрывается, а нужно по закрытию бара 2.(скрин номеров бара внизу.)Я попробую за ночь что то сделать, и завтра буду пробовать.Возможно ли как то ранее получить сигнал?Бар01.png Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 7 августа, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 августа, 2017 Возможно ли как то ранее получить сигнал? :) По Вашим условиям можно только стрелочку перенести со 2-го бара на 1-ый. Но имей в виду - момент появления стрелки изменить нельзя... Ссылка на сообщение Поделиться на другие сайты More sharing options...
alex_quiet Опубликовано 7 августа, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 августа, 2017 Добрый день.При написании советника столкнулся с проблемой выставления отложенных ордеров BUY_STOP и SELL_STOP.Создание ордеров выполняется строкой (на примере покупки) Ticket = OrderSend(Symbol (),OP_BUYSTOP,Lot,(High[1]+150),0,0,0,"Comment ",1111,0, Blue);Результатом выполнения строки является ошибка 130.Та же самая строка, выполненная из скрипта прекрасно работает.Ticket - объявленапеременная Lot фиксирована и =0,1выражение (High[1]+150) также может быть заменена на переменную, но результат остается тот же.пробовал SL и TP задавать =0, а также конечным числом (в том числе и расчетной переменной) - результат тот жеПри этом, если OP=BUYSTOP заменить на OP_BUY все работает.В чем может быть проблема? Что я не учел?Заранее спасибо Изменено 7 августа, 2017 пользователем alex_quiet Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 7 августа, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 августа, 2017 При написании советника столкнулся с проблемой выставления отложенных ордеров BUY_STOP и SELL_STOP.В скрипте открывает? и цена не смущает?надо High[1] + 150 *_PointPS: Если будете сталкиваться с ошибками, сначала Print-ом выводите все данные по ордеру и смотрите что реально отправляется в функцию OrderSend. Такие ошибки реально найти самому без обращений на форумы, имхо. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Alex Fato Опубликовано 9 августа, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 9 августа, 2017 Возможно ли как то ранее получить сигнал? :) По Вашим условиям можно только стрелочку перенести со 2-го бара на 1-ый. Но имей в виду - момент появления стрелки изменить нельзя... А как правильно перенести стрелку, что б по закрытию свечи 1 над этой свечой появлялась стрелка? Ссылка на сообщение Поделиться на другие сайты More sharing options...
Ленивый Лис Опубликовано 9 августа, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 9 августа, 2017 Подскажите, как получить номер бара и цены Open Close High Low этого бара по клику на графике?void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam) { if(id==CHARTEVENT_CLICK) { int lparamToBarNumber; Print(lparamToBarNumber); } } Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 10 августа, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 августа, 2017 А как правильно перенести стрелку, что б по закрытию свечи 1 над этой свечой появлялась стрелка?2 пути: писать в i-1 буфер или переделать условия с точки зрения 1 бара (что правильней). Думаю Вам под силу самому пробовать. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Roman 13 Опубликовано 10 августа, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 августа, 2017 Добрый день подскажите как отменить отложенный ордер по условию, например при открытии вверх был выставлен отложенный ордер выше максимума предыдущей свечи , но цена пошла вниз и не задела ордер, нужно чтобы отложенный ордер был отменен, если цена опустится ниже минимума предыдущей свечи. Спасибо. Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 10 августа, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 августа, 2017 нужно чтобы отложенный ордер был отменен, если цена опустится ниже минимума предыдущей свечи.if ( Low[0] Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 18 августа, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 18 августа, 2017 Здравствуйте, уважаемые!Проблема вот в чем: при инициализации советника необходимо иметь историю в несколько недель по текущему инструменту и на текущем ТФ.Как организовать проверку средствами MQL и, при необходимости, подкачку истории?Спасибо. Ссылка на сообщение Поделиться на другие сайты More sharing options...
вут716 Опубликовано 19 августа, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 19 августа, 2017 Здрасте всем. Прошу совета бывалых. Как в конце дня закрыть все какие есть ордера.например : иф тайм аур(тайм каррент) равно 23 , то закрыть все ордера ( и отложки ирыночные) Ссылка на сообщение Поделиться на другие сайты More sharing options...
MikR0ReR Опубликовано 19 августа, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 19 августа, 2017 Подскажите, как получить номер бара и цены Open Close High Low этого бара по клику на графике?void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam) { if(id==CHARTEVENT_CLICK) { int lparamToBarNumber; Print(lparamToBarNumber); } } Привет!Суть такова, получаем координаты, преобразовываем их во время, ну а время в индекс бара(я назвал его "shift").С индексом вариантов много. Через индекс узнаем интересующие нас данные, через функции: MqlRates(предварительно заполнив его через CopyRates) в этом массиве будет вся интересующая тебя инфа или отдельно запрашивать через: iOpen(),iHigh(),iLow(),iClose().Написал я индикатор, можно кинуть на график и понять что к чему. Информация будет выводится во вкладку Эксперты.Вроде все.Eksperiment_Indi.mq4 Изменено 19 августа, 2017 пользователем Pavel888 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Alex Fato Опубликовано 22 августа, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 22 августа, 2017 Возможно, ли сделать так что б индикатор рисовал стрелку, на открытии бара, а не на закрытии?Или тогда столкнемся перерисовыванием?[Spoiler]#property indicator_buffers 2#property indicator_color1 clrFireBrick#property indicator_color2 clrFireBrick#property indicator_width1 2#property indicator_width2 2input string arr_set = "=== Arrow settings ===";input int arrow_indent = 22;input int UP_code = 234;input int DW_code = 233;input int BB_Period = 20; //периодinput int BB_devi = 2; //кол-во стандартных отклоненийinput int shift1 = 1;extern int CCI_Period = 5;input string emp1 = "///////////////////////////////////////";input string al_set = "Alerts settings";input bool use_alert = false;input string up_alert = "UP";input string down_alert = "DOWN";extern bool WI_A = True;double bufUP[];double bufDW[];int prev_bars;/////////////////////////////////////////////////////////////////int OnInit() { ArrayInitialize(bufUP,EMPTY_VALUE); ArrayInitialize(bufDW,EMPTY_VALUE); SetIndexBuffer(0,bufUP); SetIndexStyle(0,DRAW_ARROW); SetIndexArrow(0,UP_code); SetIndexLabel(0,"UP arrow"); SetIndexBuffer(1,bufDW); SetIndexStyle(1,DRAW_ARROW); SetIndexArrow(1,DW_code); SetIndexLabel(1,"DOWN arrow"); return(INIT_SUCCEEDED); }//////////////////////////////////////////////////////////////////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[]) { if(rates_total int i = rates_total - prev_calculated; if (i else if (i>=rates_total) i = rates_total -1; else if (i == 1) i = 2; while( i > 0 ) // отсекаем тики 0-бара, сменил на i>0 все бары { double BB_SELL_1 = iBands(NULL, 0, BB_Period, BB_devi, 0, PRICE_CLOSE, MODE_UPPER, i); double CCI_O = iCCI(NULL, 0, CCI_Period, PRICE_OPEN, i); double CCI_C = iCCI(NULL, 0, CCI_Period, PRICE_CLOSE, i); double WI_13 = iWPR(NULL, 0, 14, i); double WI_131 = iWPR(NULL, 0, 14, i+1); double CCI_C1 = iCCI(NULL, 0, CCI_Period, PRICE_CLOSE, i+1); if(WI_A == false) { if (CCI_C CCI_O >= 100 && CCI_C //WI_13 -20 //pro++ ) bufUP = High + arrow_indent *_Point; } if(WI_A == true) { if (//CCI_C //CCI_O >= 100 && //CCI_C WI_13 -20 //pro++ ) bufUP = High + arrow_indent *_Point; } double BB_BUY_1 = iBands(NULL, 0, BB_Period, BB_devi, 0, PRICE_CLOSE, MODE_LOWER, i); if (//CCI_O //CCI_C >= -100 && //CCI_C >= CCI_O //&&//вход на покупку WI_13 > -80 && WI_131 ) bufDW = Low - arrow_indent *_Point; i--; }//Alerts /* if(use_alert) { if(bufUP[1]!=EMPTY_VALUE) Alert(Symbol()," ",Period()," ",up_alert); if(bufDW[1]!=EMPTY_VALUE) Alert(Symbol()," ",Period()," ",down_alert); }*/ return(rates_total); }//+------------------------------------------------------------------+ Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти