Отправлено: 14.04.14 09:56. Заголовок: Я в шоке! Подскажите.
Всем привет! Я в шоке! Выпал из рынка на 3,5 месяца, а тут такие перемены. Игорь подскажи, где можно ознакомиться с изменениями в MQL4? Хотел перенести все данные на новый комп, но некоторые индикаторы после компиляции перестают работать. Вот один из них. http://gfile.ru/a8cCP Хотя не перекомпилированные файлы работают. Компиляция ошибок в коде не выявляет. Но при отладке выдается ошибка формирования массива стр.67. Но в чем ошибка не пойму. Буду благодарен, если найдешь время исправить.
Игорь, подскажи, можно ли с помощью обработчика"CHARTEVENT_OBJECT_ENDEDIT — событие окончания редактирования текста в поле ввода графического объекта LabelEdit" задавать советнику значения типа double? Если ДА и если не сложно, напиши пример.
Игорь, подскажи, можно ли с помощью обработчика"CHARTEVENT_OBJECT_ENDEDIT — событие окончания редактирования текста в поле ввода графического объекта LabelEdit" задавать советнику значения типа double? Если ДА и если не сложно, напиши пример.
параметр sparam был не строковый, а типа double? Если так, то нельзя такое делать. Да и не нужно. Ведь строку легко преобразовать в вещественное значение при помощи функции StringToDouble. Таким образом, алгоритм будет следующий:
цитата:
void OnChartEvent(const int id, const long& lparam, const double& dparam, const string& sparam) { if (sparam != MY_LABEL_EDIT) return; string text = ObjectGetString(0, sparam, OBJPROP_TEXT); double value = StringToDouble(text); }
Нет. К примеру я хочу изменить лот советнику на поле графика, не вызывая настройки советника. Конкретный пример- встроенная функция "Торговля в один клик". Лот можно менять набирая текст на клавиатуре. То есть мне нужно вывести часть настроек советника в таблицу на графике цены, так чтобы их можно было задавать, а они подхватывались советником, как будто были изменены в настройках.
Отправлено: 12.05.16 10:43. Заголовок: Sergey пишет: Нет. ..
Sergey пишет:
цитата:
Нет. К примеру я хочу изменить лот советнику на поле графика, не вызывая настройки советника. Конкретный пример- встроенная функция "Торговля в один клик". Лот можно менять набирая текст на клавиатуре. То есть мне нужно вывести часть настроек советника в таблицу на графике цены, так чтобы их можно было задавать, а они подхватывались советником, как будто были изменены в настройках.
Посмотрите сам пример. Именно этому случаю он и соответствует.
Отправлено: 30.06.16 11:29. Заголовок: Игорь, подскажи в че..
Игорь, подскажи в чем проблема.... Вот часть кода из советника #define NumOrd 1 // Количество элементов массива (стратегий) struct OrdInfo { double isPrice; double isSL; double isTP; double isLot; int isTicket; int isType; int isMagic; string isComment; }; OrdInfo g_ordInfo|NumOrd|; //---- void Terminal() { Qnt=0; // Счётчик количества ордеров //---- for(int i=0; i<OrdersTotal(); i++) // По рыночн. и отлож. ордерам { if(OrderSelect(i,SELECT_BY_POS)==true //Если есть следующ. && OrderSymbol()==Symbol() //.. и наша вал.пара && OrderMagicNumber()!=0 && OrderMagicNumber()<=NumOrd) //.. и он открыт экспертом { Alert("1"); g_ordInfo|i|.isPrice = OrderOpenPrice(); // Цена открытия ордера Alert("2"); g_ordInfo|i|.isSL=OrderStopLoss(); // Стоп-лосс ордера g_ordInfo|i|.isTP=OrderTakeProfit(); // Тейк-профит ордера g_ordInfo|i|.isLot=OrderLots(); // Количество лотов g_ordInfo|i|.isTicket=OrderTicket(); // Номер ордера g_ordInfo|i|.isType=OrderType(); // Тип ордера g_ordInfo|i|.isMagic=OrderMagicNumber(); // ID ордера g_ordInfo|i|.isComment=OrderComment(); // Комментарий ордера Qnt++; // Колич. ордеров } } }
Советник прекрасно работает в тестере стратегий. Однако в реале зависает между метками 1 и 2. Причем комп не виснет, в журнале ничего. Но тики не проходят.
Советник прекрасно работает в тестере стратегий. Однако в реале зависает между метками 1 и 2. Причем комп не виснет, в журнале ничего. Но тики не проходят.
Проблема в неправильной записи информации об ордерах в массив. Нумерация ордеров и нумерация элементов массива совпадает, а не должна бы. Поэтому в тестере и работает все прекрасно - там нет "чужих" ордеров, все свои.
Правильная организация цикла такая:
цитата:
for(int i=0; i<OrdersTotal(); i++) // По рыночн. и отлож. ордерам { if(OrderSelect(i,SELECT_BY_POS)==true //Если есть следующ. && OrderSymbol()==Symbol() //.. и наша вал.пара && OrderMagicNumber()!=0 && OrderMagicNumber()<=NumOrd) //.. и он открыт экспертом { g_ordInfo[Qnt].isPrice = OrderOpenPrice(); // Цена открытия ордера g_ordInfo[Qnt].isSL=OrderStopLoss(); // Стоп-лосс ордера g_ordInfo[Qnt].isTP=OrderTakeProfit(); // Тейк-профит ордера g_ordInfo[Qnt].isLot=OrderLots(); // Количество лотов g_ordInfo[Qnt].isTicket=OrderTicket(); // Номер ордера g_ordInfo[Qnt].isType=OrderType(); // Тип ордера g_ordInfo[Qnt].isMagic=OrderMagicNumber(); // ID ордера g_ordInfo[Qnt].isComment=OrderComment(); // Комментарий ордера Qnt++; // Колич. ордеров } }
Отправлено: 28.08.16 15:30. Заголовок: Нужно сделать описан..
Нужно сделать описание объекта "кнопка". Рядом с объектом "кнопка" Установил "OBJ_LABEL" - "?". Как сделать, чтобы при наведении на "?" высвечивалось описание , а не имя объекта с ценой? Если выложите готовый блок алгоритма, буду очень признателен.
Нужно сделать описание объекта "кнопка". Рядом с объектом "кнопка" Установил "OBJ_LABEL" - "?". Как сделать, чтобы при наведении на "?" высвечивалось описание , а не имя объекта с ценой? Если выложите готовый блок алгоритма, буду очень признателен.
Никакого алгоритма там нет. При создании кнопки нужно лишь воспользоваться назначением свойства всплывающей подсказки:
Спасибо, на конец разобрался. ObjectSetString(0, name, OBJPROP_TOOLTIP, "текст"); Оказывается упускал первый параметр (chart_id) в результате получал ошибку и не мог понять в чем дело.
Игорь, знаком ли ты с программой Forex Tester. Можно ли в ней тестировать индикаторы MQL4?
Да, и не только по наслышке. В 2009-ом году переводил для Forex Tester один из индикаторов MQL4. Тогда же писал рекламную статью для них в журнале Fortrader.ru (47-й номер)
Sergey пишет:
цитата:
Можно ли в ней тестировать индикаторы MQL4?
Нет, нельзя. Нужно переводить программы на Delphi или на C++. Но справедливости ради нужно сказать, что API Forex Tester'a намеренно копирует функционал MQL4. Там даже также функции называются. Поэтому чисто алгоритмически перевод не очень сложен.
Все даты в формате GMT
2 час. Хитов сегодня: 1
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет