Бета-тестирование MetaTrader 5 началось! - страница 41

 
vdv2001 писал(а) >>

Не мовсем выкрутился всеравно при смене таимфрейма происходит удаление объектов

void OnDeinit(const int reason)
{
switch(reason)
{
case REASON_CHARTCHANGE:
Print("Ничего не делаем");
break;
default:;
Print("Удаляем объекты");
DeleteMyObject();
}
}
т.е. переменная reason имееть какоето другое значение?

ВЫЯСНИЛ ВСЕГДА ВОЗВРАЩАЕТСЯ - ( 1 );

это в индикаторе в эксперте не проверял...

К сожалению, индикатор не знает, за что его выгружают (кроме случая перекомпиляции, когда его явно дёргают). Индикаторы не привязаны к графикам. Мы сейчас думаем над тем, как правильно сообщить выгружаемому индикатору причину.

Поэтому попробуйте использовать глобальную временную переменную, как я советовал выше.

 
Erm955 писал(а) >>

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

 
Так OnTrade() вроде как ещё не описана?
 

1. Открыт первый ордер Sell ST 100 TP 100

2. Ставим SellStop TP 10 ST 10

3. При срабатывании селлстопа тейки и стопы первого ордера меняются на те, которые были у второго

А если отложенных ордеров будет достаточное колличество с разными тейками и стопами, то при их срабатывании можно совсем запутаться. 

 
Mak >>:

Несколько мелких замечаний.


5....

Наверное число знаков должно округляться до 1 пипса?


6....


7....

Нельзя советовать того в чем не разбираешься... Усредненную позицию нельзя округлять - посчитай разницу например для 100 лотов... 

Во всём мире принято округлять конечную цифру - сумму денег...  6 и 7 пункт не упрощает, а усложняет...

Плиз - аккуратней с советами - плохие идеи имеют свойство распространяться по всему миру со скоростью если не света то звука...

 
Erm955 писал(а) >>
Так OnTrade() вроде как ещё не описана?

Действительно не описана. Прототип описан и он действует.

void OnTrade()

Попробуйте. А номер тикета через переменную передавайте.

 
stringo писал(а) >>

К сожалению, индикатор не знает, за что его выгружают (кроме случая перекомпиляции, когда его явно дёргают). Индикаторы не привязаны к графикам. Мы сейчас думаем над тем, как правильно сообщить выгружаемому индикатору причину.

Поэтому попробуйте использовать глобальную временную переменную, как я советовал выше.

Попробовал, проблемма в том что при удалении индикатора он должен за собой убрать объекты, следовательно он должен знать его переключают или удаляют и соответственно отрабатывать.

а так как в OnDeinit(const int reason) в индикаторах переменная reason не меняет свого значения значит объекты всега удоляются. И надо опять все пересчитывать(смысл в глобальных переменных пропадает).

Буду ждать нормальную обработку OnDeinit(const int reason).

 

Все мои пожелания касаются редактора IDE


1. Когда я навожу курсором мыши в редакторе языка IDE, на поле слева, чтобы поставить бряк, то курсор мыши с правостороннего меняется на левосторонний. Режит глаза и бесит. :)


2. Можно поменять "визуально" бряки на такиедобавить сворачивать функции и методы тоже как на шоте.



3. При выделении текста, через меню можно было бы закомментировать\раскомментировать текст.


4. Бряки добавлять по двойному клику мыши.


С уважением, Дмитрий.

 
 
ex5 писал(а) >>

Было бы не плохо сделать модификацию ордера мышью до той цены, которая разрешена. а то двигаешь байлимит ближе к цене потом открывается окно с неактивной кнопкой "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.