vadd 32 Share Posted October 8, 2008 из справки: int OrderSend(string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE) Основная функция, используемая для открытия позиции или установки отложенного ордера. Возвращает номер тикета, который назначен ордеру торговым сервером или -1 в случае неудачи. Чтобы получить дополнительную информацию об ошибке, необходимо вызвать функцию GetLastError(). Вот это и проверяй. Не об этом был вопрос. Понятно, что когда я устанавливаю ордер, я могу проконтролировать результат в виде тикета или ошибки. А вот как проконтролировать исполнение отложенного ордера? Каждый тик просматривать список ордеров в ожидании события, которое может произойти вообще не сегодня? Неоптимально. Но очевидно, что при срабатывании отложенника с сервера приходит некий сигнал для терминала. Может быть в библиотеке есть какая-то функция которая вызывается только в этот момент? Quote Link to post Share on other sites
Programmer 33 Author Share Posted October 8, 2008 Добрый... Столкнулся с такой замарочкой: Есть переменная типа int Count1 которая наполняется счетчиком Count1++ Для вычисления процента я немогу ее поделить на себе подобную Count2++ , но умножается... почему так? Поделить можете, но при этом результат надо определить как double: Например int Сount1 = 50; int Count2=25; double ResultPercent = (Count2/Count1)*100; // в этом случае результат будет 50 (0,5*100) А если определить результат как целый тип, то int ResultPercent = (Count2/Count1)*100; // в этом случае результат будет 0 (0*100), так как 0,5 округлится до 0. Прежде, чем делить надо привести сами эти переменные к типу double. Т.е.: double _Count1 = Count1, _Count2 = Count2; double ResultPercent = (_Count1/_Count2)*100; Иначе при делении Вы получите int, который потом приведётся к double - следовательно ошибка. Quote Link to post Share on other sites
Shu 0 Share Posted October 9, 2008 Но очевидно, что при срабатывании отложенника с сервера приходит некий сигнал для терминала. Может быть в библиотеке есть какая-то функция которая вызывается только в этот момент? увы.. ваши бы слова, да разработчикам в уши. а на самом деле, только анализ - что было и что стало.. Quote люблю пиво, стреляю, пишу советники Link to post Share on other sites
Rider 0 Share Posted October 9, 2008 Подскажите пожалуйста, можно ли запустить несколько сеансов МТ4, что бы войти одновременно на разные счета. Простое копирования в разные каталоги привело к тому, что пишет "нет связи" при любой попытке логина. Перестал логиниться даже тот каталог, с которого делали копию. Quote Link to post Share on other sites
Rider 0 Share Posted October 9, 2008 Подскажите пожалуйста, как получить результат вычисления с точностью до нужного знака после запятой. Quote Link to post Share on other sites
Roger 18 Share Posted October 9, 2008 увы.. ваши бы слова, да разработчикам в уши. а на самом деле, только анализ - что было и что стало.. Еще бы знать зачем ему эти танцы с бубном, может быть и смогли бы помочь его горю. Quote Link to post Share on other sites
Programmer 33 Author Share Posted October 9, 2008 Подскажите пожалуйста, можно ли запустить несколько сеансов МТ4, что бы войти одновременно на разные счета. Простое копирования в разные каталоги привело к тому, что пишет "нет связи" при любой попытке логина. Перестал логиниться даже тот каталог, с которого делали копию. Надо не просто копировать терминал, а установить несколько. Quote Link to post Share on other sites
Programmer 33 Author Share Posted October 9, 2008 Подскажите пожалуйста, как получить результат вычисления с точностью до нужного знака после запятой. NormalizeDouble() Quote Link to post Share on other sites
Rider 0 Share Posted October 10, 2008 Огромное спасибо. А курс Курс MQL4 будет продолжаться? Quote Link to post Share on other sites
Ravend 0 Share Posted October 10, 2008 (edited) Доброе время суток. В MetaEditore есть возможность выставлять брейкпойнты, но воспользоваться ими не удается. Пробовал ставить их в теле start() и прогонять советник в "Тестере стратегий", в код так и не вывалился. Подскажите, как ими правильно пользоваться и какие есть возможности для трассировки данных? Спасибо. Edited October 10, 2008 by Ravend Quote Link to post Share on other sites
vadd 32 Share Posted October 10, 2008 Еще бы знать зачем ему эти танцы с бубном, может быть и смогли бы помочь его горю. "Танцы с бубном" - это что? Желание знать, сработал ли отложенный ордер? Хм... Quote Link to post Share on other sites
Programmer 33 Author Share Posted October 10, 2008 Огромное спасибо. А курс Курс MQL4 будет продолжаться? Будет. Но медленно, т.к. основная база знаний уже предоставлена. Quote Link to post Share on other sites
Programmer 33 Author Share Posted October 10, 2008 Доброе время суток.В MetaEditore есть возможность выставлять брейкпойнты, но воспользоваться ими не удается. Пробовал ставить их в теле start() и прогонять советник в "Тестере стратегий", в код так и не вывалился. Подскажите, как ими правильно пользоваться и какие есть возможности для трассировки данных? Спасибо. Ответ на Ваш вопрос: Вот это действительно непростой вопрос. В MQL4 его никак не решить, т.к. в откомпилированных MQL-программах не предусмотрено наличие отладочной информации (поэтобу собственно дебаггера до сих пор нет, хотя в эдиторе предусмотрена кнопочка F9-брейкпоинт) Подробнее: http://forum.mql4.com/ru/5376 http://forum.mql4.com/ru/7660 http://articles.mql4.com/ru/203 Quote Link to post Share on other sites
Ravend 0 Share Posted October 10, 2008 Programmer, спасибо за ответ но не могли бы вы ответить ещё на один как в "Тестере стратегий" выставить исследуемый интервал больше одного месяца (ТФ M5), выставление флага "Использовать дату" результата не дает Quote Link to post Share on other sites
Programmer 33 Author Share Posted October 10, 2008 To Ravend: как в "Тестере стратегий" выставить исследуемый интервал больше одного месяца (ТФ M5), выставление флага "Использовать дату" результата не дает Не даёт, потому что история не закачана. Закачайте - и всё будет работать. Quote Link to post Share on other sites
Roger 18 Share Posted October 10, 2008 "Танцы с бубном" - это что? Желание знать, сработал ли отложенный ордер? Хм... А почему он должен не сработать, если цена дошла? Разве что денег на счете нет. Цену и счет проследить нетрудно. Quote Link to post Share on other sites
ЖАБА77 1,853 Share Posted October 11, 2008 вопрос! реал есть связь ..... демо нет связи ... сегодня . суббота. итоги недели не могу просмотреть ..... или это только в моем компьютере нет связи на демосчете?.. спасибо. Quote Покупаю лоссы -Дарю профиты) Ква! Link to post Share on other sites
Programmer 33 Author Share Posted October 12, 2008 To ЖАБА77: Только у тебя. Проверь пароль. Quote Link to post Share on other sites
ЖАБА77 1,853 Share Posted October 12, 2008 To ЖАБА77:Только у тебя. Проверь пароль. в норме ) спасибо! Quote Покупаю лоссы -Дарю профиты) Ква! Link to post Share on other sites
DmitryN 0 Share Posted October 13, 2008 Добрые люди, помогите с техническим исполнением. Создаю эксперта, торгующего по стохастику. Когда главная линия = сигнальной линии, он должен смотреть на главную линию на предыдущем баре, если она < текущей главной линии - покупать; если наоборот - продавать. Так вот вопрос - как сказать ему "посмотри на предыдущий бар"? Quote Link to post Share on other sites
Programmer 33 Author Share Posted October 13, 2008 To DmitryN: Во-первых: у Вас тригер неверный. Надо искать не равенство линий стохастика, а их пересечение, т.е. изменение их взаиморасположения. Во-вторых: обратиться к предыдущему бару можно посредством параметра shift функции iStoch(). Поставьте shift = 1. Quote Link to post Share on other sites
sam2008 0 Share Posted October 13, 2008 Помогите, пожалуйста, сделать так, чтоб этот скрипт закрывал все ордера при определенной просадке, а потом уже и сам терминал. //+------------------------------------------------------------------+ //| CloseTerminal.mq4 | //| Copyright © 2006, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright © 2006, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" #property show_inputs #include <WinUser32.mqh> //+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ int start() { int hwnd=WindowHandle(Symbol(),Period()); int hwnd_parent=0; //---- while(!IsStopped()) { hwnd=GetParent(hwnd); if(hwnd==0) break; hwnd_parent=hwnd; } if(hwnd_parent!=0) PostMessageA(hwnd_parent,WM_CLOSE,0,0); //---- return(0); } //+------------------------------------------------------------------+ Или может, есть другие способы это сделать? Quote Link to post Share on other sites
abeiks 9 Share Posted October 14, 2008 Подскажите , как осуществить что-бы , все отложение ордера закрылись при особых условий? Есть похожие на OrderClose функций которые будут относится только к отложенным ордерам? Quote Link to post Share on other sites
Programmer 33 Author Share Posted October 14, 2008 To abeiks: Для отложенных ордеров используйте функцию OrderDelete(). 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.