xbms Опубликовано 7 февраля, 2014 Автор Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 февраля, 2014 По поводу новых вкусностей нового билда было бы интересно посмотреть видео,уж как то там заморочено все))) или с непривычки кажется))) \M/ ждите, за выходные попробую сделать видео... :)Добавлено: 07-02-2014 16:19:25 Цитата То есть даты не хватает? Обязательно надо вставлять? Добавлено: 07-02-2014 08:24:37xbms а можете про блоки рассказать? как они используются для скрытия лоса и профита от брокера чёто не понятно вообще как блок на это влияет? А может это я вообще затеил зря? Опытные люди подскажите стоит ли в это лесть? Чтоб я больше никому здесь голову не морочил плиз!!! какие блоки?о чём ты? 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
elruso Опубликовано 7 февраля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 февраля, 2014 По поводу новых вкусностей нового билда было бы интересно посмотреть видео,уж как то там заморочено все))) или с непривычки кажется))) \M/ ждите, за выходные попробую сделать видео... :)Добавлено: 07-02-2014 16:19:25 Цитата То есть даты не хватает? Обязательно надо вставлять? Добавлено: 07-02-2014 08:24:37xbms а можете про блоки рассказать? как они используются для скрытия лоса и профита от брокера чёто не понятно вообще как блок на это влияет? А может это я вообще затеил зря? Опытные люди подскажите стоит ли в это лесть? Чтоб я больше никому здесь голову не морочил плиз!!! какие блоки?о чём ты? Я спрашивал скрыть лос и профит от брокера mzk_3 чёто про блок написал я не понял о чём речь! Ссылка на сообщение Поделиться на другие сайты More sharing options...
Старик Опубликовано 7 февраля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 февраля, 2014 elruso, не мучали бы вы себя и других попытками обучиться программированию.Это намного шире и сложней, чем показывает наш многотерпеливый подвижник xbms.Просто выкиньте из головы слово программирование и живите долго и счастливо, как 99% нормальных людей. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
elruso Опубликовано 7 февраля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 февраля, 2014 elruso, не мучали бы вы себя и других попытками обучиться программированию.Это намного шире и сложней, чем показывает наш многотерпеливый подвижник xbms.Просто выкиньте из головы слово программирование и живите долго и счастливо, как 99% нормальных людей. Старик? А почему мой пост исчез который я тебе написал? Ссылка на сообщение Поделиться на другие сайты More sharing options...
denis77515 Опубликовано 8 февраля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 8 февраля, 2014 Старик но почему же выкинуть из головы программирование.Я не говорю о сложных каких то программах или советниках.А научиться хотя бы основному, что бы было можно в автоматическом режиме протестировать свои идеи.Кому уж сильно надо,сложную программу то милости просим к профи за бабки.Так большое спасибо XBMS за его начинания и поддержку.вообще этой теме и блогу.У нас в городе не кто даже не слышал про MQL, хотя общался с многими программистами.С++,легко много таких.в остольном напряг.Где еще как не на таких ресурсах что узнать.Спасибо еще раз вам за ваше начинание XBMS ! Ссылка на сообщение Поделиться на другие сайты More sharing options...
elruso Опубликовано 8 февраля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 8 февраля, 2014 Старик но почему же выкинуть из головы программирование.Я не говорю о сложных каких то программах или советниках.А научиться хотя бы основному, что бы было можно в автоматическом режиме протестировать свои идеи.Кому уж сильно надо,сложную программу то милости просим к профи за бабки.Так большое спасибо XBMS за его начинания и поддержку.вообще этой теме и блогу.У нас в городе не кто даже не слышал про MQL, хотя общался с многими программистами.С++,легко много таких.в остольном напряг.Где еще как не на таких ресурсах что узнать.Спасибо еще раз вам за ваше начинание XBMS ! Да!!! Я думаю что никто здесь программистом крутым становиться не собирается просто трэйдеры хотят автоматизировать собственные системы и всего лишь, ну может какието трюки выучить, ничего сложного в этом нет, для этого в полне достаточно уроков xbms только желание надо, а Старик как ответит так и желание отпадёт!!! Я мистеру Старику написал но мой пост вдруг испарился :-? 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
xbms Опубликовано 8 февраля, 2014 Автор Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 8 февраля, 2014 Цитата Я спрашивал скрыть лос и профит от брокера mzk_3 чёто про блок написал я не понял о чём речь! ну так а что тут сложного?Вы не ставите у открытого ордера ТП и СЛ, а просто на каждом тике проверяете достигла-ли цена Вашего виртуального ТП или СЛ.Проверяется просто, например Profit:if (MathAbs(Ask-OrderOpenPrice())/Point >= TakeProfit){ CloseOrder();}ну как-то так... :) 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
elruso Опубликовано 8 февраля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 8 февраля, 2014 Цитата Я спрашивал скрыть лос и профит от брокера mzk_3 чёто про блок написал я не понял о чём речь! ну так а что тут сложного?Вы не ставите у открытого ордера ТП и СЛ, а просто на каждом тике проверяете достигла-ли цена Вашего виртуального ТП или СЛ.Проверяется просто, например Profit:if (MathAbs(Ask-OrderOpenPrice())/Point >= TakeProfit){ CloseOrder();}ну как-то так... :) Да xbms спасибо Вам за ответ!!! Я немного по другому делал я писал:if(OrderProfit() == Profit){ } Изменено 8 февраля, 2014 пользователем elruso Ссылка на сообщение Поделиться на другие сайты More sharing options...
denis77515 Опубликовано 8 февраля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 8 февраля, 2014 Господа не подскажете как написать функцию,если сделка ушла в минус на 2% от депозита,то закрыть ее автоматически ? В документации читал всякие операторы,но так пока не придумал как это сделать.я понимаю что нужно первой написать цикл перебора ордеров.2 выбрать ордер с помощью Order Select(), 3 Проверит на пренадлежность к магику,потом какой это ордер Buy или Sell, а вот как условие на на закрытие ордера написать не придумаю,какие для этого нужны операторы. И последний OrderClose(.......) Ссылка на сообщение Поделиться на другие сайты More sharing options...
mzk_3om6u Опубликовано 8 февраля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 8 февраля, 2014 if(OrderProfit() == Profit){ } Плохое решение. Подумайте почему. Ссылка на сообщение Поделиться на другие сайты More sharing options...
elruso Опубликовано 8 февраля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 8 февраля, 2014 Господа не подскажете как написать функцию,если сделка ушла в минус на 2% от депозита,то закрыть ее автоматически ? В документации читал всякие операторы,но так пока не придумал как это сделать.я понимаю что нужно первой написать цикл перебора ордеров.2 выбрать ордер с помощью Order Select(), 3 Проверит на пренадлежность к магику,потом какой это ордер Buy или Sell, а вот как условие на на закрытие ордера написать не придумаю,какие для этого нужны операторы. И последний OrderClose(.......) Тебе надо наверное OrderProfit() использовать он профит в деньгах показывает!!! Как достигнит 2% закрывай! Найди 2% double AccountBalance()/100*2 что-то в таком роде и сравнивай с OrderProfit()!Добавлено: 08-02-2014 18:23:31 if(OrderProfit() == Profit){ } Плохое решение. Подумайте почему. Да всё понятно теперь Спосибо mzk_3!!! Изменено 8 февраля, 2014 пользователем elruso Ссылка на сообщение Поделиться на другие сайты More sharing options...
Gstar Опубликовано 8 февраля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 8 февраля, 2014 Добрый вечер.Написал функцию закрытия всех ордеров, а она закрывает не все ордера. Где закралась ошибка?void CloseOrders(){ for(int i=OrdersTotal()-1; i>=0; i--) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL) { OrderClose(OrderTicket(), 0.01, Bid, 5, Green); } if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY) { OrderClose(OrderTicket(), 0.01, Ask, 5, Green); } } }}Спасибо! :) Ссылка на сообщение Поделиться на другие сайты More sharing options...
Ttomas Опубликовано 8 февраля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 8 февраля, 2014 Первое что бросилось в глаза это цены закрытия. Так как селл открывается по Бид то закрываться должен по Аск. Для бай все наоборот. Лот желательно жестко не указывать а указать просто OrderLots() 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Gstar Опубликовано 9 февраля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 9 февраля, 2014 Первое что бросилось в глаза это цены закрытия. Так как селл открывается по Бид то закрываться должен по Аск. Для бай все наоборот. Лот желательно жестко не указывать а указать просто OrderLots() Спасибо большое, помогло!!! =d> Ссылка на сообщение Поделиться на другие сайты More sharing options...
metall Опубликовано 9 февраля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 9 февраля, 2014 Здрасти, пытаюсь исправить ошибки:'ada_16' - invalid array access'ada_56' - invalid array access 'aia_68' - invalid array accessВ блоке:void f0_0 (string as_0, int aia_8[], double ada_12[], double ada_16[][6], double &a_ihigh_20, double &a_ilow_28, double &ad_36, double &ad_44, int &ai_52, double ada_56[][4], int aia_60[7], double ada_64[2], int aia_68[][512]) { double lda_112[5]; int lia_116[5]; int li_72 = aia_8[0]; int li_76 = aia_8[1]; int li_80 = aia_8[2]; int li_84 = aia_8[3]; double ld_88 = ada_12[0]; double ld_96 = ada_12[1]; double ld_104 = ada_12[2]; int li_120 = ArraySize(ada_16) / 6; f0_2(as_0, li_72, li_76, li_80, a_ihigh_20, a_ilow_28); ad_36 = MathCeil(a_ihigh_20 / ld_96) * ld_96; ad_44 = MathCeil(a_ilow_28 / ld_96) * ld_96; if (ad_36 if (ad_44 > a_ilow_28) ad_44 -= ld_96; ai_52 = MathRound((ad_36 - ad_44) / ld_96); lda_112[0] = ld_88; lda_112[1] = ld_96; lda_112[2] = ad_36; lda_112[3] = ad_44; lda_112[4] = ld_104; lia_116[0] = li_76; lia_116[1] = li_80; lia_116[2] = li_84; lia_116[3] = ai_52; lia_116[4] = li_120; ArrayResize(ada_56, ai_52); ArrayResize(aia_68, ai_52); ArrayInitialize(ada_56, 0.0); ArrayInitialize(aia_68, -1); mt4MpGet(lda_112, lia_116, ada_16, ada_56, aia_60, ada_64, aia_68 );}Прочтя документация, что проблема вроде бы с массивами?! Ссылка на сообщение Поделиться на другие сайты More sharing options...
Ромашка Опубликовано 10 февраля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 февраля, 2014 Добрый день, подскажите кто то уже кодил систему управления капиталом по Райану Джонсу? В отличие от простого увеличения лота в зависимости от роста депозита она стабильнее :-bПысы Уже можно не отвечать, открыл глаза и нашел в соседней ветке ! Изменено 10 февраля, 2014 пользователем Ромашка Ссылка на сообщение Поделиться на другие сайты More sharing options...
denis77515 Опубликовано 10 февраля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 февраля, 2014 Вот попробуй,эта фукция работает,да увиличивае лот но по мере его ростаи так же уменьшает по мере его уменьшения. Спойлер [extern double MaximumRisk = 0.03;extern double DecreaseFactor = 3.0;extern string ___ = " Шаг Баланса";extern double balans = 1000;double LotsOptimized() { double minlot = MarketInfo(Symbol(), MODE_MINLOT); double maxlot = MarketInfo(Symbol(), MODE_MAXLOT); double lot = Lots; int orders = OrdersHistoryTotal(); int losses = 0; lot = NormalizeDouble(AccountFreeMargin() * MaximumRisk / balans, 2); if (DecreaseFactor > 0.0) {for (int i = orders - 1; i >= 0; i--) { if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) == FALSE) { Print("Error in history!"); break; }if (OrderSymbol() != Symbol() || OrderType() > OP_SELL) continue;if (OrderProfit() > 0.0) break;if (OrderProfit() }if (losses > 1) lot = NormalizeDouble(lot - lot * losses / DecreaseFactor, 2);}if(lot if(lot > maxlot) lot = maxlot; return (lot);}]В OrderSend() там где лот впишешь LotsOptimized() 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Teo Опубликовано 10 февраля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 февраля, 2014 В уроках было показано условие:if (timeprev == Time[0]) return; timeprev = Time[0];Подскажите равносильно ли оно этому условию:if (Volume[0]>1) return; Принцип вроде разный, а результат одинаков... :) Ссылка на сообщение Поделиться на другие сайты More sharing options...
Sharovik Опубликовано 11 февраля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 февраля, 2014 Подскажите пожалуйста, в чем мб. проблема, у меня по коду должны открываться два ордера, но иногда 1 из них почему то не открывается, функция открытия ордера взята из урока" Качественное открытие и модификация ордеров" + добавлено условие перед открытием на свободность торгового потока, в журнале нету никаких записей об ошибках. кто что подскажет?открытие двух ордеров по разным парам.на этом же впс стоит еще 4 терминала, не может это быть тормоза сервера ? Изменено 11 февраля, 2014 пользователем Sharovik Ссылка на сообщение Поделиться на другие сайты More sharing options...
Teo Опубликовано 11 февраля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 февраля, 2014 Такой вопрос возник. Как правильно совмещать классический СтопЛосс и ТрейлингСтоп?Пример: Открылась сделка, через время - сделка в плюсе, начинает работать трал... Всё ок.А если сделка после открытия сразу уходит в минус... И продолжает уходить до МаржинКолла... И приходится надеяться, что через несколько лет цена всё таки вернётся в место открытия...Чтоб такого избежать нужно использовать обычный СтопЛосс...Исходя из моей, пока ещё, нубологики 8-} по примеру урока про "Трейлинг Стоп" могу предположить, что в открытии ордера в пункте СтопЛосс указать вместо нуля - свой желаемый СЛ:OrderSend(Symbol(), OP_BUY, Lots, Ask, 5, 0, 0, "", Magik, 0, Blue);OrderSend(Symbol(), OP_BUY, Lots, Ask, 5, 32, 0, "", Magik, 0, Blue);(32 - сугубо абстрактное значение, которое я использовал исключительно для наглядности.)Так ли это? Или нужно вносить изменения в саму функцию TralingStop() ? Ссылка на сообщение Поделиться на другие сайты More sharing options...
elruso Опубликовано 11 февраля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 февраля, 2014 Такой вопрос возник. Как правильно совмещать классический СтопЛосс и ТрейлингСтоп?Пример: Открылась сделка, через время - сделка в плюсе, начинает работать трал... Всё ок.А если сделка после открытия сразу уходит в минус... И продолжает уходить до МаржинКолла... И приходится надеяться, что через несколько лет цена всё таки вернётся в место открытия...Чтоб такого избежать нужно использовать обычный СтопЛосс... Исходя из моей, пока ещё, нубологики 8-} по примеру урока про "Трейлинг Стоп" могу предположить, что в открытии ордера в пункте СтопЛосс указать вместо нуля - свой желаемый СЛ:OrderSend(Symbol(), OP_BUY, Lots, Ask, 5, 0, 0, "", Magik, 0, Blue);OrderSend(Symbol(), OP_BUY, Lots, Ask, 5, 32, 0, "", Magik, 0, Blue);(32 - сугубо абстрактное значение, которое я использовал исключительно для наглядности.)Так ли это? Или нужно вносить изменения в саму функцию TralingStop() ? Обычный СторЛос через NormalizeDouble трал его будет подтягивать! 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Teo Опубликовано 12 февраля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 12 февраля, 2014 Обычный СтопЛос через NormalizeDouble трал его будет подтягивать! Действительно, так и есть. ;) В первую очередь я так и сделал, но была ошибка в коде из которого все стоплосы не работали... Поэтому думал что данный метод неправильный, и решил спросить на форуме :) (Сейчас всё норм. 8-> )И сразу встал перед новой проблемой.Как использовать фнкцию OrderClose() ?К примеруУ меня условие, если одна машка выше другой - открывается покупка. if (SMA2>SMA1) OrderSend(Symbol(), OP_BUY, Lot, Ask, 3, SL_Buy, 0, "", Magic, 0, Blue);Закрытие сделки хочу в момент пересечения машек. Я так понимаю условие будет if (SMA2 == SMA1) OrderClose()Но как правильно записать эту функцию не могу понять. Или может сначала ордер нужно выбрать (OrderSelect()), перед тем как закрывать его? Изменено 12 февраля, 2014 пользователем Teo Ссылка на сообщение Поделиться на другие сайты More sharing options...
elruso Опубликовано 12 февраля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 12 февраля, 2014 Обычный СтопЛос через NormalizeDouble трал его будет подтягивать! Действительно, так и есть. ;) В первую очередь я так и сделал, но была ошибка в коде из которого все стоплосы не работали... Поэтому думал что данный метод неправильный, и решил спросить на форуме :) (Сейчас всё норм. 8-> )И сразу встал перед новой проблемой.Как использовать фнкцию OrderClose() ?К примеруУ меня условие, если одна машка выше другой - открывается покупка. if (SMA2>SMA1) OrderSend(Symbol(), OP_BUY, Lot, Ask, 3, SL_Buy, 0, "", Magic, 0, Blue);Закрытие сделки хочу в момент пересечения машек. Я так понимаю условие будет if (SMA2 == SMA1) OrderClose()Но как правильно записать эту функцию не могу понять. Или может сначала ордер нужно выбрать (OrderSelect()), перед тем как закрывать его? Да! Сначала напиши цикл, выбери ордер, там проверишь на символ и на магик! Потом проверь на тип ордера то есть бай или сэл! Потом пиши условия при котором будет orderclose! А вообще рекомендую посмотреть уроки Xbms он там всё великолепно про это рассказывает! Зайди на сайт а потом Уроки по MQL! 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
AndreyP Опубликовано 14 февраля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 14 февраля, 2014 xbms,подскажите пожалуйста как вынести содержимое функции comment() в правый верхний угол и шрифт малость увеличить? Изменено 14 февраля, 2014 пользователем AndreyP Ссылка на сообщение Поделиться на другие сайты More sharing options...
xbms Опубликовано 14 февраля, 2014 Автор Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 14 февраля, 2014 xbms,подскажите пожалуйста как вынести содержимое функции comment() в правый верхний угол? Смотрим стандартную справку по F1:CommentВыводит комментарий, определенный пользователем, в левый верхний угол графика.Отсюда вывод: Никак! 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти