Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
подтверждения тезиса: движение=жизнь, покой=смерть. А что пишет в журнале? это внизу правые две вкладки
если бы у меня был бы - проверил бы и исправил бы ...
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Вопросы от начинающих MQL4 MT4 MetaTrader 4
Ilya Prozumentov, 2017.06.11 13:53
Есть шаблон класса для работы с массивом.Для этого шаблона-класса нужно реализовать сортировку, учитывая тот факт, что массив может хранить сложные типы данных. Например:
ArrayList<PP*> *dde; // PP - класс
Можно написать разные функции для простых типов и сложных, но компилятор не понимает, что функции жёстко разграничены по типу данных и продолжает ругаться:
'<' - illegal operation use ArrayList.mqh
Тогда я решил встроить интерфейс:
Все части конструкция компилируются. Но если попытаться её объявить:
ArrayList<PP*> *dde; // PP - класс
то, при компиляции файла вот такие ошибки:'QuickSorts' - template mismatch varQSort.mqh /*ошибка 1*/
'=' - type mismatch ArrayList.mqh /*ошибка 2*/
P.S.Что нужно исправить в коде, что бы устранить это несоответствие типов? Не понимаю, почему оно вообще возникло.
'<' - illegal operation use varQSort.mqh
преследует меня и в этой конструкции. А именно от неё я и хотел избавиться. Но эта ошибка мне понятна, а вот те две - нет.
Мне нужно чтобы, например в понедельник, если требуется открыть 2 или 3 сделки, функция сравнивала время и отправляла тру, а у меня пока сравнивает одно время.
а то при нажатии кнопки "загрузить" скачивается 6 000 000 котировок. не все хотят забивать жесткий диск данными котировок, долго ждать, пока они закачиваюся, а потом в таблице котировок, убирать ненужные данные.
Здравствуйте уважаемые ... кто подскажет почему указанный код ТрейлингСтопа для BUY ордеров работает корректно ...
... а аналогичный для SELL ордеров вообще не устанавливает SL ...
... и причина скорей всего в условии (Ask+8*D*Point)<OrderStopLoss(), если его убрать, то SL устанавливается, но ТрейлингСтоп без указанного условия работает некорректно ...
Для ордеров BUY условие (Bid-8*D*Point)>OrderStopLoss(), при OrderStopLoss()==0 воспринимается корректно(т.е. некоторая величина > 0) ...
... а вот для ордеров SELL условие (Ask+8*D*Point)<OrderStopLoss(), при OrderStopLoss()==0 воспринимается НЕ корректно(т.е. некоторая величина < 0 получается) ...
может кто подскажет, как правильно сформулировать в коде необходимое условие (Ask+8*D*Point)<OrderStopLoss() для корректной работы ТрейлингСтопa с ордерами SELL .
Заранее благодарю всех ответивших.
Добрый день! Есть функция, при которой индикатор читает файл тиковой истории . Но чтение происходит только однажды, при загрузке или обновлении индикатора. Как сделать, чтобы чтение происходило каждый раз, при появлении первого тика нулевого бара?
void ProcessOldCandles(int limit, TickStruct &lastTick)
{
int hTicksFile = FileOpen(Symbol() + ".tks", FILE_BIN | FILE_READ | FILE_SHARE_READ | FILE_SHARE_WRITE);
if (hTicksFile < 1)
return;
TickStruct tick;
while (!IsStopped())
{
if (!IsReadTimeAndBidAskOfTick(hTicksFile, tick))
return;
if (tick.time >= Time[limit])
break;
}
lastTick = tick;
int barIndex = iBarShift(NULL, 0, tick.time);
while (barIndex >= 0)
{
if (!IsReadTimeAndBidAskOfTick(hTicksFile, tick))
return;
if (!IsTickBelongToBar(tick, barIndex))
barIndex = iBarShift(NULL, 0, tick.time);
ProcessOneTick(barIndex, tick, lastTick);
}
FileClose(hTicksFile);
Здравствуйте уважаемые ... кто подскажет почему указанный код ТрейлингСтопа для BUY ордеров работает корректно ...
... а аналогичный для SELL ордеров вообще не устанавливает SL ...
... и причина скорей всего в условии (Ask+8*D*Point)<OrderStopLoss(), если его убрать, то SL устанавливается, но ТрейлингСтоп без указанного условия работает некорректно ...
Для ордеров BUY условие (Bid-8*D*Point)>OrderStopLoss(), при OrderStopLoss()==0 воспринимается корректно(т.е. некоторая величина > 0) ...
... а вот для ордеров SELL условие (Ask+8*D*Point)<OrderStopLoss(), при OrderStopLoss()==0 воспринимается НЕ корректно(т.е. некоторая величина < 0 получается) ...
может кто подскажет, как правильно сформулировать в коде необходимое условие (Ask+8*D*Point)<OrderStopLoss() для корректной работы ТрейлингСтопa с ордерами SELL .
Заранее благодарю всех ответивших.
Всем привет ... что-то уж больно низкая активность в этой ветке форума ... данная проблема решается так ...
... немного длинновато условие, но рабочее ... кто разбирается, как записать покороче, можете сократить, отзовитесь, буду благодарен ... остальные могут пользоваться как есть.
ввести функцию
OrderCloseByTicket (542534564)
закрытие ордера по тикету с полной лотностью.
чтобы не нужно было указывать лоты, цену, слиппедж.
аналогично нажатию крестика по ордеру в терминале.
ввести функцию
OrderCloseByPos (0)
закрытие ордера по позиции.
и тогда не нужно будет прописывать эти громоздкие конструкции.
Здравствуйте! Неправильно сравниваются два минусовых числа q и w, когда они равны, оператор иф считает, что одно больше другого.В чем ошибка? Когда q = -0,0002 и w тоже -0,0002, то res12=false, почему?