kazakov.v 189 Share Posted October 25, 2017 Можно ли как-то этого избежать? Вряд ли это история столько отъедает. Минутки за 1 год по одному инструменту весят где-то 23 Мб. Quote Никому верить нельзя. Мне - можно. Link to post Share on other sites
Secret Looser 5 Share Posted October 25, 2017 (edited) Вряд ли это история столько отъедает. Минутки за 1 год по одному инструменту весят где-то 23 Мб. Советник пишет, какую пару он обработал. Когда запускаю тест, терминал начинает откусывать по 200-300 МБ с каждой новой парой. Очевидно, он зачем-то подгружает всю историю М1. Примерно одинаково ест оперативы, даже если за неделю тестить. Просто когда больше, чем полгода, там видать ещё что-то помимо истории съедает, вот и не хватает. Edited October 25, 2017 by Secret Looser Quote Link to post Share on other sites
Ugar68 372 Share Posted October 30, 2017 Здравствуйте. Пишу на MQL4 мультивалютного советника, Советник использует индикаторы, вызываемые по iCustom? Quote Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку. Чужие программы не переделываю. Link to post Share on other sites
ToB. CyxoB 324 Share Posted November 8, 2017 Кто-нибудь знает, почему описание объекта, записанное в TOOLTIP при перезагрузке терминала заменяется на имя этого объекта (т.е. подсказка как бы отсутствует и автоматически формируется терминалом)? П.С. ChartSetInteger(chart_ID,CHART_SHOW_OBJECT_DESCR,0,value)) - не используется. Quote Link to post Share on other sites
ToB. CyxoB 324 Share Posted November 9, 2017 Кто-нибудь знает, почему описание объекта, записанное в TOOLTIP при перезагрузке терминала заменяется на имя этого объекта (т.е. подсказка как бы отсутствует и автоматически формируется терминалом)? П.С. ChartSetInteger(chart_ID,CHART_SHOW_OBJECT_DESCR,0,value)) - не используется. TOOLTIP не запоминаются. тчк. Полагаться на них нельзя. тчк. Но в некоторых случаях, их можно переназначитьб тчк. Quote Link to post Share on other sites
FSB 32 Share Posted November 30, 2017 (edited) Всех приветствую! Пример, есть история сделок: 1. EUR\USD sell magic1 2. EUR\USD buy magic5 3. EUR\USD sell magic3 4. EUR\USD sell magic2 5. EUR\USD buy magic4 Вопрос, как выбрать последний закрытый ордер с определённым магиком, например EUR\USD sell magic3, который по факту закрылся не последним? Интересует реализация на языке mql4 Edited November 30, 2017 by FSB Quote Не зная ни сна и ни отдыха; При лунном и солнечном свете; Мы делаем деньги из воздуха; Чтоб снова спустить их на ветер! Link to post Share on other sites
ZeleBoba 662 Share Posted November 30, 2017 (edited) Всех приветствую! Пример, есть история сделок: 1. EUR\USD sell magic1 2. EUR\USD buy magic5 3. EUR\USD sell magic3 4. EUR\USD sell magic2 5. EUR\USD buy magic4 Вопрос, как выбрать последний закрытый ордер с определённым магиком, например EUR\USD sell magic3, который по факту закрылся не последним? Интересует реализация на языке mql4 в цикле по pointer { if( OrderSelect( pointer, SELECT_BY_POS, MODE_HISTORY )) { if( OrderMagicNumber() == magicX && OrderType() == _order_type ) { ... код по обработке выбранного ордера } } else { ... обработка отсутствия искомого ордера } } можете также добавить проверку по времени закрытия ордера Edited November 30, 2017 by ZeleBoba 1 Quote Лучше маленький профит, чем большие рога. Link to post Share on other sites
FSB 32 Share Posted December 1, 2017 в цикле по pointer { if( OrderSelect( pointer, SELECT_BY_POS, MODE_HISTORY )) { if( OrderMagicNumber() == magicX && OrderType() == _order_type ) { ... код по обработке выбранного ордера } } else { ... обработка отсутствия искомого ордера } } можете также добавить проверку по времени закрытия ордера Спасибо огромное! Quote Не зная ни сна и ни отдыха; При лунном и солнечном свете; Мы делаем деньги из воздуха; Чтоб снова спустить их на ветер! Link to post Share on other sites
GRACHEV_KONSTANTIN 4 Share Posted December 12, 2017 Люди подскажите алгоритм определения балансовой операции , в частности интересует возможно ли это сделать на истории ? Quote Link to post Share on other sites
Snower88 0 Share Posted December 12, 2017 Добрый день! Подскажите пожалуйста, есть кусок кода: void watch_breakout() { if(active != true) return; int ticket = get_ticket(); if(Ask >= NormalizeDouble(channel_top, Digits)) { ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, SLIPPAGE, NormalizeDouble(Ask-Stoploss*Point,Digits), 0, "LONG", MAGIC, clrNONE); } if(Bid ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, SLIPPAGE, NormalizeDouble(Bid+Stoploss*Point,Digits), 0, "SHORT", MAGIC, clrNONE); } } ищет пробои из ценового канала, есть задача - проверять, что б пробой происходил не любой свечей, а только пинбаром, и после формирования пинбара открывать заказ. Подскажите пожалуйста, как можно такое реализовать, третий день бьюсь и решения пока не вижу Quote Link to post Share on other sites
ZeleBoba 662 Share Posted December 13, 2017 (edited) Добрый день! Подскажите пожалуйста, есть кусок кода: void watch_breakout() { if(active != true) return; int ticket = get_ticket(); if(Ask >= NormalizeDouble(channel_top, Digits)) { ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, SLIPPAGE, NormalizeDouble(Ask-Stoploss*Point,Digits), 0, "LONG", MAGIC, clrNONE); } if(Bid <= NormalizeDouble(channel_bottom, Digits)) { ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, SLIPPAGE, NormalizeDouble(Bid+Stoploss*Point,Digits), 0, "SHORT", MAGIC, clrNONE); } } ищет пробои из ценового канала, есть задача - проверять, что б пробой происходил не любой свечей, а только пинбаром, и после формирования пинбара открывать заказ. Подскажите пожалуйста, как можно такое реализовать, третий день бьюсь и решения пока не вижу В приведенном коде Вы анализируете пробой текущей ценой. А надо хаем или лоу предыдущего бара. надо проанализировать бар осуществивший пробой. если попадает в категорию "пин", то - необходимое действие. НО, пин-бар понятие довольно размытое для формализации. Вам необходимо будет задаться критериями для отнесения баров к этой категории. т.е. разница между опен и клозе должна быть не более заданной величины (параметр номер раз), отношение длин теней должно быть не менее ... (параметр номер два) и опять же по тому какая тень длиннее, определяем какой это пин. дерзайте. ПЫСЫ. Совсем забыл. Надо еще проверить его (пина) отношение с предыдущим баром. Находится ли его тело (поглощено) телом предыдущего бара и чтобы он был того же направления. Edited December 13, 2017 by ZeleBoba Quote Лучше маленький профит, чем большие рога. Link to post Share on other sites
AntFX 6,474 Share Posted December 13, 2017 Люди подскажите алгоритм определения балансовой операции , в частности интересует возможно ли это сделать на истории ? OrderType()==6 Quote 1 Link to post Share on other sites
GRACHEV_KONSTANTIN 4 Share Posted December 15, 2017 OrderType()==6 Антон спасибо за "секретную" функцию . Прям заговор какой-то 1 Quote Link to post Share on other sites
AntFX 6,474 Share Posted December 15, 2017 Антон спасибо за "секретную" функцию . Прям заговор какой-то В МТ5 балансовые сделки уже прописаны в констандах, а в МТ4 все ещё секрет, заговор и все такое Quote 1 Link to post Share on other sites
ИМН 67 Share Posted February 8, 2018 Подскажите пжл, можно ли при обработке текущего тика функцией OnTick, при наступлении некоторого события начать её исполнение сначала, не дожидаясь окончания обработки текущего тика? Иными словами, есть ли некий аналог оператора continue для этой функции? Благодарю. Quote Лёгкие деньги бывают только там же, где и бесплатный сыр. Link to post Share on other sites
ZeleBoba 662 Share Posted February 8, 2018 если по аналогии с continue, то этот оператор завершает текущую итерацию цикла и запускает следующую. Вы можете просто завершить OnTick оператором return. А далее работа по следующему тику. А вот если Вы не хотите дожидаться след.тика, то это надо организовать уже самому внутри OnTick. 2 Quote Лучше маленький профит, чем большие рога. Link to post Share on other sites
AntFX 6,474 Share Posted February 8, 2018 Подскажите пжл, можно ли при обработке текущего тика функцией OnTick, при наступлении некоторого события начать её исполнение сначала, не дожидаясь окончания обработки текущего тика? Иными словами, есть ли некий аналог оператора continue для этой функции? Благодарю.Смотря какого события Вы ждете, опишите задачу более полно. Quote 1 Link to post Share on other sites
ИМН 67 Share Posted February 15, 2018 (edited) Смотря какого события Вы ждете, опишите задачу более полно. Благодарю за желание помочь, выше уже Зелебоба исчерпывающе и, главное, точно ответил на мой вопрос, ура оператору return! Есть другой вопрос, связанный с этим же оператором: Если в функции, которая должна возвращать какое-либо значение, нет чётко указанного оператора return в конце функции, то будет выдана ошибка, что не все контрольные пути возвращают значения. Причём - что меня озадачило более всего - эта ошибка выдаётся даже и тогда, когда все возможные варианты значений применяемых в функции переменных "учтены" в теле функции и для каждого определённого сочетания этих значений в теле есть свои return'ы. Так вот компилятору этих внутренних return'ов мало, ему ещё и общий, явно указанный, подавай. Я прав в этом утверждении? Могу кратенько набросать схему моей функции: uint some_function(bool dir) { if (a[0] == 0 && a[1] == 0) return (233); Массив a[ ] типа uint, поэтому отрицательных значений быть не может. if (a[0] > 0 && a[1] == 0) return (456); В теле перебраны все 4 возможных комбинации значений задействованных if (a[0] == 0 && a[1] > 0) return (3452); переменных и для каждой свой return. Но скомпилировать текст программы if (a[0] > 0 && a[1] > 0) return (2342); мне не удалось, пока я не убрал последний оператор if, не добавил else и [если здесь не будет "своего" return'a, будет ошибка] "общий" return, обусловив его этим самым else'ом. } Edited February 15, 2018 by ИМН Quote Лёгкие деньги бывают только там же, где и бесплатный сыр. Link to post Share on other sites
AntFX 6,474 Share Posted February 15, 2018 (edited) Есть другой вопрос, связанный с этим же оператором:В конце последнего оператора if поставьте else return(0) и все будет хорошо Edited February 15, 2018 by AntFX 1 Quote 1 Link to post Share on other sites
ИМН 67 Share Posted February 15, 2018 В конце последнего оператора if поставьте else return(0) и все будет хорошо Да, я подумывал об этом, можно и так. Открытием для меня явилось то, что компил не отслеживает это дело. Не зная этого, я вывихнул себе мозги, не понимая, где я "забыл" вернуть значение. Quote Лёгкие деньги бывают только там же, где и бесплатный сыр. Link to post Share on other sites
AntFX 6,474 Share Posted February 15, 2018 Открытием для меня явилось то, что компил не отслеживает это дело. Не зная этого, я вывихнул себе мозги, не понимая, где я "забыл" вернуть значение.Нет, не ошиблись (если a[] имеет тип unsigned). Очевидно компилятор просто не отслеживает сложные последовательные условия. Quote 1 Link to post Share on other sites
SIBARIT 1 Share Posted February 27, 2018 Как прописать: если Low на предыдущих 4 свечах убывающие, то функция true??? Quote Link to post Share on other sites
ZeleBoba 662 Share Posted February 27, 2018 Как прописать: если Low на предыдущих 4 свечах убывающие, то функция true??? if( iLow( NULL, 0, 1 ) > iLow( NULL, 0, 2 ) && iLow( NULL, 0, 2 ) < iLow( NULL, 0, 3 ) && iLow( NULL, 0, 3 ) < iLow( NULL, 0, 4 ) && iLow( NULL, 0, 4 ) < iLow( NULL, 0, 5 ) ) flag = true; Quote Лучше маленький профит, чем большие рога. Link to post Share on other sites
FX Plaza 0 Share Posted March 9, 2018 Здравствуйте, уважаемые программисты и Модератор! Вопрос у меня больше к Администратору Торговой платформы.Техподдержка направила почему-то сюда к программистам. ОК. MQL4 MarketInfo(_Symbol,MODE_MARGINREQUIRED) работает на парах USD*, GBP*, NZD*,AUD*. (Лот рассчитывается правильно) И НЕ работает на парах EUR* (Хочу рассчитать Лот - получаю "Деление на 0")! Какие варианты решения? (кроме перехода на MQL5, в котором работает функция OrderCalcMargin()) Quote Link to post Share on other sites
FX Plaza 0 Share Posted March 9, 2018 Здравствуйте, уважаемые программисты и Модератор! Вопрос у меня больше к Администратору Торговой платформы.Техподдержка направила почему-то сюда к программистам. ОК. MQL4 MarketInfo(_Symbol,MODE_MARGINREQUIRED) работает на парах USD*, GBP*, NZD*,AUD*. (Лот рассчитывается правильно) И НЕ работает на парах EUR* (Хочу рассчитать Лот - получаю "Деление на 0")! Какие варианты решения? (кроме перехода на MQL5, в котором работает функция OrderCalcMargin()) Для проверки: Сервер Alpari-Pro.ECN-Demo Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.