Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Не мовсем выкрутился всеравно при смене таимфрейма происходит удаление объектов
void OnDeinit(const int reason)
{
switch(reason)
{
case REASON_CHARTCHANGE:
Print("Ничего не делаем");
break;
default:;
Print("Удаляем объекты");
DeleteMyObject();
}
}
т.е. переменная reason имееть какоето другое значение?
ВЫЯСНИЛ ВСЕГДА ВОЗВРАЩАЕТСЯ - ( 1 );
это в индикаторе в эксперте не проверял...
К сожалению, индикатор не знает, за что его выгружают (кроме случая перекомпиляции, когда его явно дёргают). Индикаторы не привязаны к графикам. Мы сейчас думаем над тем, как правильно сообщить выгружаемому индикатору причину.
Поэтому попробуйте использовать глобальную временную переменную, как я советовал выше.
OrderSend(request,result);
int Code=result.retcode; if(Code==TRADE_RETCODE_DONE) Print("Заявка выполнена Buy"); else Print("Код заявки Buy ", Code);
Print("result.order = ",result.order); Print(HistoryOrderGetDouble(result.order, ORDER_PRICE_OPEN));
Никак не могу получить информацию по последнему выплненному ордеру (и сделке тоже).
2009.10.16 14:17:25 R001 (GBPJPY,H4) result.order = 20715 -- вот тикет ордера, который реально находится в файле.
А результат оператора Print(History...) вседа только 0. То же и по сделке (последней).
После OrderSend необходимо выдержать некоторый таймаут. Либо использовать функцию OnTrade
1. Открыт первый ордер Sell ST 100 TP 100
2. Ставим SellStop TP 10 ST 10
3. При срабатывании селлстопа тейки и стопы первого ордера меняются на те, которые были у второго
А если отложенных ордеров будет достаточное колличество с разными тейками и стопами, то при их срабатывании можно совсем запутаться.
Несколько мелких замечаний.
5....
Наверное число знаков должно округляться до 1 пипса?
6....
7....
Нельзя советовать того в чем не разбираешься... Усредненную позицию нельзя округлять - посчитай разницу например для 100 лотов...
Во всём мире принято округлять конечную цифру - сумму денег... 6 и 7 пункт не упрощает, а усложняет...
Плиз - аккуратней с советами - плохие идеи имеют свойство распространяться по всему миру со скоростью если не света то звука...
Так OnTrade() вроде как ещё не описана?
Действительно не описана. Прототип описан и он действует.
void OnTrade()
Попробуйте. А номер тикета через переменную передавайте.
К сожалению, индикатор не знает, за что его выгружают (кроме случая перекомпиляции, когда его явно дёргают). Индикаторы не привязаны к графикам. Мы сейчас думаем над тем, как правильно сообщить выгружаемому индикатору причину.
Поэтому попробуйте использовать глобальную временную переменную, как я советовал выше.
Попробовал, проблемма в том что при удалении индикатора он должен за собой убрать объекты, следовательно он должен знать его переключают или удаляют и соответственно отрабатывать.
а так как в OnDeinit(const int reason) в индикаторах переменная reason не меняет свого значения значит объекты всега удоляются. И надо опять все пересчитывать(смысл в глобальных переменных пропадает).
Буду ждать нормальную обработку OnDeinit(const int reason).
Все мои пожелания касаются редактора IDE
1. Когда я навожу курсором мыши в редакторе языка IDE, на поле слева, чтобы поставить бряк, то курсор мыши с правостороннего меняется на левосторонний. Режит глаза и бесит. :)
2. Можно поменять "визуально" бряки на такиедобавить сворачивать функции и методы тоже как на шоте.
3. При выделении текста, через меню можно было бы закомментировать\раскомментировать текст.
4. Бряки добавлять по двойному клику мыши.
С уважением, Дмитрий.
Было бы не плохо сделать модификацию ордера мышью до той цены, которая разрешена. а то двигаешь байлимит ближе к цене потом открывается окно с неактивной кнопкой "Modify"
Вот.
Это то, что я пытаюсь сказать уже не раз. Задачи подобного рода являются прикладными. Это - торговые алгоритмы, решение по которым должны принимать прикладные программисты.
Примеры:
--
Ситуация А. Ордер за пределами коридора StopLevel.
Перемещение ордера вниз.
Предположим, текущий Bid = 1. 5000
Установлен SellLimit на цене 1. 5020.
Пусть, StopLevel = 5п. Таким образом, ближайшая цена, на которую может быть поставлен ордер, = 1.5005
Трейдер потянул ордер вниз и отпустил мышу на цене 1.5001
Как должен отреагировать терминал?
Вариант 1. Отказать (это реализовано сейчас).
Вариант 2. Исполнить торговый приказ с ограничением, т.е. переместить ордер вниз, но не на цену 1.5001, а на 1.5005.
--
Ситуация В. Ордер в пределах коридора StopLevel.
Текущий Bid = 1. 5000
Установлен SellLimit на цене 1. 5003.
Пусть, StopLevel = 5п. Таким образом, ближайшая цена, на которую может быть поставлен ордер, = 1.5005
В1. Трейдер потянул ордер вверх и отпустил мышу на цене 1.5004
Как должен отреагировать терминал?
Вариант 1. Отказать (это реализовано сейчас).
Вариант 2. Исполнить торговый приказ с ограничением, т.е. переместить ордер вниз, но не на цену 1.5004, а на 1.5005.
В2. Трейдер потянул ордер вниз и отпустил мышу на цене 1.5001
Вариант 1. Отказать (это реализовано сейчас).
Вариант 2. Исполнить торговый приказ с ограничением, т.е. переместить ордер, но не вниз, а вверх(!) не на цену 1.5001, а на 1.5005.
--
Для всех вариантов найдутся свои сторонники и противники. Любая конкретная жёсткая реализация будет ущербной для ряда трейдеров (подобно тому, что происходит с локами) и ограничит возможности прикладников. Поэтому, на мой взгляд, разработчики должны обойтись минимумом сервиса в самом МТ 4, но при этом дать максимум возможностей прикладным программистам (рекомендуемые библиотеки, примеры готовых решений и пр). В противном случае неизбежно будут недовольные трейдеры и будут возможны концептуальные ошибки, т.к. над прикладными алгоритмами будут работать лишь несколько разработчиков вместо сотен прикладников (например, в данной реализации затруднительна модификация конкретной ордерной линии из нескольких, установленных на одной цене)
Такой подход (модульный принцип) в целом можно считать оправданным и прошедшим проверку временем. Например, разработчики Widows дают в комплекте ограниченный набор прикладных программ с ограниченными возможностями (например, блокнот Paint и простенький просмотрщик графики). А специализированные программы (Word и PhotoShop) разрабатываются прикладными программистами (в том числе, другими компаниями). В результате появляется и набирает обороты рынок ПО, ориентированный на Widows, что существенно укрепляет позиции MS. А происходит это потому, что прикладники добровольно сами выделяют собственную энергию в пользу развития свих собственных продуктов, но при этом неминуемо непроизвольно поддерживают концепцию Widows.