FoxMongoose Опубликовано 17 февраля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 17 февраля, 2015 FoxMongoose "крайние" это 2 последних? ну а между 1-ым и 2-ым числом разность какая? или они одинаковые?если да, то это последовательность Фибоначчи. Можно реализовать и без массива. Опишите чётко, чтоб вопросов не возникало, можно и с примером расчёта. Нет, крайние это первый и последний элемент.Вот на примере рулетки:Возьмем последовательность из 2 чисел: [5;5]То есть первая ставка 10Проигрыш - добавляем к последовательности сумму ставки [5;5;10], складываем крайние числа, следующая ставка 15Проигрыш - [5;5;10;15], следующая ставка 20Выигрыш - [5;10], вычеркнули крайние числа, следующая ставка 15Выигрыш - весь ряд вычеркнут, наша прибыль 10 у.е., то есть сумма изначального ряда [5;5] Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 17 февраля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 17 февраля, 2015 Давайте лучше на примере торговли валютой:начинаем с 1-го ордера с начальным лотом 0,1 - лосснаступили условия для открытия 2-го ордера. Лот № 2 - ? считаем тоже 0,1 - лосс№3 лот 0,2 -лосс№4 лот 0,3 -лосс№5 лот 0,4 -профит№6 лот 0,4 -профит№7 лот 0,5 -лосс№8 лот 0,7 - и т.д.правильно? Ссылка на сообщение Поделиться на другие сайты More sharing options...
FoxMongoose Опубликовано 17 февраля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 17 февраля, 2015 Давайте лучше на примере торговли валютой:начинаем с 1-го ордера с начальным лотом 0,1 - лосснаступили условия для открытия 2-го ордера. Лот № 2 - ? считаем тоже 0,1 - лосс№3 лот 0,2 -лосс№4 лот 0,3 -лосс№5 лот 0,4 -профит№6 лот 0,4 -профит№7 лот 0,5 -лосс№8 лот 0,7 - и т.д.правильно? Так, но всегда должен быть начальный ряд, хотя-бы из одного лота, в вашем примере по окончанию серии будет лишь безубыток. По вашему примеру будет так:№1 лот 0.1, [0.1]№2 лот 0.2, [0.1;0.1]№3 лот 0.3, [0.1;0.1;0.2]№4 лот 0.4, [0.1;0.1;0.2;0.3]№5 лот 0,5, [0.1;0.1;0.2;0.3;0,4]№6 лот 0,4 [0.1;0.2;0.3]№7 лот 0,2 [0.2]№8 лот 0.4 [0.2;0.2] Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 17 февраля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 17 февраля, 2015 Логика до конца не ясна. Ведь если продолжить серию из Вашего примера, то каждый раз после 5 лоссов и 2 профитов начальный лот будет увеличен (по такому-же принципу). Как вернуться к начальному лоту? или это не предусматривается? потому как даже если будут профиты, то всё-равно пути назад (к 0,1) нет (или я не вижу).Ну да ладно... Такой хитрый ММ реализовывать надо (наверное) через массив. причём чтоб не загонять МТ с изменением размеров, надо делать сразу оптимальной длинны и сохранять текущий размер во внешней переменной. НО что делать в реале, когда МТ перегрузится и все данные будут утеряны? - надо сохранять каждый раз в файле на диске. Вы готовы к таким подвигам? Ссылка на сообщение Поделиться на другие сайты More sharing options...
FoxMongoose Опубликовано 17 февраля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 17 февраля, 2015 Логика до конца не ясна. Ведь если продолжить серию из Вашего примера, то каждый раз после 5 лоссов и 2 профитов начальный лот будет увеличен (по такому-же принципу). Как вернуться к начальному лоту? или это не предусматривается? потому как даже если будут профиты, то всё-равно пути назад (к 0,1) нет (или я не вижу).Ну да ладно... Такой хитрый ММ реализовывать надо (наверное) через массив. причём чтоб не загонять МТ с изменением размеров, надо делать сразу оптимальной длинны и сохранять текущий размер во внешней переменной. НО что делать в реале, когда МТ перегрузится и все данные будут утеряны? - надо сохранять каждый раз в файле на диске. Вы готовы к таким подвигам? Начинать с начального лота нужно, когда все числа в массиве закончатся (вычеркнутся).А вот про сохранение я не подумал. И к таким подвигам еще не готов, я только начал переходить от Паскаля к MQL :d Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rever27 Опубликовано 17 февраля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 17 февраля, 2015 Rever27 функция инит отрабатывает 1 раз при запуске совы. если Вы хотите пересчитывать лот, то нужно расчёт лота делать непосредственно перед вызовом ОрдерСенд. Поставил перед OrderSend - ничего не изменилось. Мм не меняется в зависимости от депозита. воткнул в OrderSend - Мм заработал, но построение сетки у мартина слетело. Возможно, авто мм не работает только в тесте, на реале будет иначе, буду разбираться. 0ll, почти неделю разбирался. Все таки родил решение #:-s Спасибо.Проблема была в том, что код советника, начиная с OrderSend(... был под Void, а мой АвтоММ под int start. По сути, советник работал и так, но смена лота происходила бы только при смене таймфрейма пары, либо перезагрузки терминала. Перенеся же код с OrderSend(... под шапку start - тестер сразу стал менять лот. Профит )Хотя, мне показалось, что теперь тест стал немного медленнее идти. Теперь вплотную займусь изучением вашего кода по торговле только двумя парами :) 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
SpyRF Опубликовано 19 февраля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 19 февраля, 2015 помогите получить адекватные данные от стрелочного индикатора HMA Arrows. Пробовал iCustom, но при тестировании получались расхождения между стрелками и открытием сделок и это расхождение не 1-2 свечи, а входы были там где не было сигнала и быть е должно. HMA+Indicator.rar Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 19 февраля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 19 февраля, 2015 SpyRF индюк HMA Arrows берёт данные от своего цветного брата и ищет локальный экстремум из 3 баров (типа: 31) и результат (стрелочка) будет только на 1 баре.Что касается HMA Color, то есть подозрение, что рисует. Лучше запустите в визуальном режиме любого эксперта и накиньте на график индюки и наблюдайте возможные изменения на закрытых барах.В самом HMA Arrows только 2 буфера и других данных (более адекватных) там нет... Ссылка на сообщение Поделиться на другие сайты More sharing options...
SpyRF Опубликовано 19 февраля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 19 февраля, 2015 SpyRF индюк HMA Arrows берёт данные от своего цветного брата и ищет локальный экстремум из 3 баров (типа: 31) и результат (стрелочка) будет только на 1 баре.Что касается HMA Color, то есть подозрение, что рисует. Лучше запустите в визуальном режиме любого эксперта и накиньте на график индюки и наблюдайте возможные изменения на закрытых барах.В самом HMA Arrows только 2 буфера и других данных (более адекватных) там нет... Вы бесспорно правы, что написали насчет HMA Arrows, но я не могу никак советник заставить работать также как и индюк. Стрелочки у индюка иногда перерисовываются, например, если было сильное движение в противоположную от стрелочки сторону, но с этим можно жить при определенных условиях, HMA color сильно уж не перерисовывается, в частности, как и любая машка он следует за ценой и изменение его касается ближайших свечей. Я раньше торговал с этими индюками, потом переключился на дневки, потому что новая работа не позволяет сидеть на Форексе днем, вот поэтому хочу свою стратегию автоматизировать, хз получится или нет, потому что никакой робот не заменит того, что видит человек, но попытать счастья все-таки хочется. А вот как заставить советник видеть "глазами индикатора" не пойму ( Изменено 19 февраля, 2015 пользователем SpyRF Ссылка на сообщение Поделиться на другие сайты More sharing options...
FoxMongoose Опубликовано 20 февраля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 20 февраля, 2015 Правильно ли я использую расчет тейка и стопа от ATR? OrderSend(Symbol(),OP_BUY,Lots(),Ask,30,Ask-(ATR*10000*20)*Point,Ask+(ATR*10000*70)*Point,"",MAGIC,0,Blue); Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 20 февраля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 20 февраля, 2015 FoxMongoose в общем - да, но это лишнее: *10000...*Point, т.к. Point = 0.00001. Просто Ask +- N*ATR. 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
77павел Опубликовано 23 февраля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 23 февраля, 2015 Подскажите кто знает как прописать функцию чтобы после закрытия сделки советник ждал нового сигнала а не открывал повторно при оставшемся условии писал по индикатору масд я так понимаю что как то можно привязать к бару ?? Спасибо всем!!! Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 23 февраля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 23 февраля, 2015 77павел можно по разному... Например если у Вас условие на вход: Бид Слозе[1]>0 && Слозе[0] Ссылка на сообщение Поделиться на другие сайты More sharing options...
77павел Опубликовано 23 февраля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 23 февраля, 2015 Спасибо #:-s неделю мучаюсь)))) Добавлено: 23-02-2015 12:31:02if(Ask> maprice &&Macd1>0 && Close [1]>0&&Close [0]Добавлено: 23-02-2015 12:39:14 maprice = iMA (Symbol(),0 ,MaPeriod,MaShift,MODE_EMA,PRICE_CLOSE,1); Macd1 =iMACD(NULL,TPeriod1,InpFastEMA,InpSlowEMA,InpSignalSMA,PRICE_CLOSE,MODE_MAIN,0); Macd2 =iMACD(NULL,TPeriod1,InpFastEMA,InpSlowEMA,InpSignalSMA,PRICE_CLOSE,MODE_MAIN,1); Macd3=iMACD(NULL,TPeriod1,InpFastEMA,InpSlowEMA,InpSignalSMA,PRICE_CLOSE,MODE_SIGNAL,2); Snox1 = (iStochastic(NULL,TPeriod,5,3,3,MODE_SMA,0,MODE_MAIN,0)> iStochastic(NULL,TPeriod,5,3,3,MODE_SMA,0,MODE_SIGNAL,0)>80); Snox2 = (iStochastic(NULL,TPeriod,5,3,3,MODE_SMA,0,MODE_SIGNAL,0)>iStochastic(NULL,TPeriod,5,3,3,MODE_SMA,0,MODE_MAIN,0) // второй экран - стохастика if( Bid maprice&&Close [0] {Добавлено: 23-02-2015 12:44:01это на лонг и на шорт пак путано конечно Изменено 23 февраля, 2015 пользователем 77павел Ссылка на сообщение Поделиться на другие сайты More sharing options...
SpyRF Опубликовано 23 февраля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 23 февраля, 2015 может быть кто-нито поможет? Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 23 февраля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 23 февраля, 2015 77павел чего-то Вы много условий написали. Вроде речь была про макд, поэтому условие:(Macd2 0) - вставляйте это в свою формулу, только не прописывайте сразу 2 пересечения (макд и МА) - сделок может не быть. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Ballbreaker Опубликовано 23 февраля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 23 февраля, 2015 Здравствуйте! Помогите решить маленькую задачу :Хотел бы изменить настройки в индикаторе "ZigZag Pointer Alert", а именно заменить "стрелочки", на "кружочки",например такие,как в индикаторе "123PatternsV6".Исключительно для "красоты глаз"Думаю,там где-то надо заменить "стрелка" на "круг",но увы не могу понять где,буду рад помощи,спасибо!Фото и индикаторы прикрепил :d 1.jpg2.jpgIn.rar Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 23 февраля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 23 февраля, 2015 Весь секрет здесь: SetIndexStyle(1,DRAW_ARROW); SetIndexArrow(1,108);Поменяй код 108 на код из другого индюка, или любой другой и будет индюк рисовать не стрелочки, а кружочки или что-угодно... 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
SunnY the Dreamer Опубликовано 24 февраля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 24 февраля, 2015 Здравствуйте. Screen На графике установлены модифицированные MA с зависимостью периода от таймфрейма т. е. 18 периодов для Н1 превратится в 18*60 периодов на M1. На основе их данных я пишу осциллятор. Поскольку каждый таймфрейм имеет свою МА, которую видно на более младшем таймфрейме, то в целях оптимизации расчётов я хочу отказаться от вызова iCustom в коде осциллятора. Вместо iCustom каждая МА создаст для себя глобальную переменную и будет писать в неё готовое значение, а осциллятору останется считывать эти значения, делать дальнейшие расчёты и рисовать линии в своём окне. Вопрос первый: Будет ли такая конструкция работать быстрее, чем вызов iCustom с параметрами уже установленного на графике индикатора?Вопрос второй: Есть ли смысл добавить запись в файл для ранее рассчитанных значений с целью исключения повторных расчётов при смене таймфрейма? Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 24 февраля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 24 февраля, 2015 Вопрос первый: Будет ли такая конструкция работать быстрее, чем вызов iCustom с параметрами уже установленного на графике индикатора?Вопрос второй: Есть ли смысл добавить запись в файл для ранее рассчитанных значений с целью исключения повторных расчётов при смене таймфрейма? 1. Конечно быстрее. и для оперативы легче.2. При смене ТФ происходит переинициализация и все значения утрачиваются. Если не хотите пересчитывать есть 3 способа: через файл, глобальные переменные, графические объекты.Пересчитывать всё на самом деле можно за один проход на глубину самой длинной машки - секунда. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Ballbreaker Опубликовано 24 февраля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 24 февраля, 2015 Весь секрет здесь: SetIndexStyle(1,DRAW_ARROW); SetIndexArrow(1,108);Поменяй код 108 на код из другого индюка, или любой другой и будет индюк рисовать не стрелочки, а кружочки или что-угодно... Спасибо больше,все получилось! Ссылка на сообщение Поделиться на другие сайты More sharing options...
master.man Опубликовано 24 февраля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 24 февраля, 2015 Друзья, подскажите почему функция не хочет работать? Переменная buyclose, прописывается во внешних переменных и ей присваивается цена по которой я бы хотел закрыть все позиции (например buyclose = 1.5649). Остальные функции работают хорошо, компилируется без ошибок... if (CountTrades() > 0) { if (Bid >= NormalizeDouble(buyclose, Digits)) { int count = 0; for (int i=OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic2 && OrderMagicNumber() == Magic) { OrderClose(OrderTicket(), OrderLots(), Bid, Slippage); } } } } } 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
chistaia-rodina Опубликовано 24 февраля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 24 февраля, 2015 master.man, после выбора ордера, строчка должна выглядеть так:if (OrderSymbol() == Symbol() && (OrderMagicNumber() == Magic2 || OrderMagicNumber() == Magic)). 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
master.man Опубликовано 24 февраля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 24 февраля, 2015 Спасибо chistaya-rodina, возможно из-за этого... буду пробовать т.к. этот бот обкатывается только в реальном времени, потому что первый ордер открывается вручную Ссылка на сообщение Поделиться на другие сайты More sharing options...
chistaia-rodina Опубликовано 24 февраля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 24 февраля, 2015 master.man, если больше ошибок нет, то должно работать. По прежней записи выходило, что выбранный ордер, должен иметь одновременно оба мейджика, а теперь, либо-первый, либо-второй. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти