Поправьте меня

 
Поправьте меня
Никак не могу наладить отношения с demo-сервером :-( То он не хочет переносить SellStop или BuyStop ордер, если я переношу его вместе со StopLoss'ом, а новое значение StopLoss'а не удовлетворяет требованиям текущей, а не вновь задаваемой цены ордера. Об этом я уже писал. Обещали разобраться, но пока всё по прежнему. Сейчас другое:

Я был уверен, что StopLoss для этих ордеров (SS и BS) начинает работать только после срабатывания самого ордера, а тут стал замечать, что demo-сервер иногда (но не всегда) удаляет такие ордера, если текущая цена просто прошла уровень SL и, не дойдя до цены SS или BS ордера, вернулась обратно. Ордер исчезает безвозвратно, только в "Истории счета" остается запись, что он отработал с нулевой прибылью...

Это так и должно быть или я что-то не правильно понимаю?
 
ответы
Посмотрите комментации к этим удаленным ордерам (включите просмотр комментариев из меню по правой кнопке мыши). Ваши отложенные ордеры были удалены из-за недостатка средств в момент активации.

SL и TP начинают отрабатываться только у открытых позиций и никогда не проверяются у отложенных ордеров.
 
Да, Вы правы, НО...
Действительно ордера были удалены из-за недостатка средств. Оказалось, что при присоединении советника поле "Лоты:" всегда стоит 1.00 вне зависимости от того, какое число прописано в шапке советника (у меня там Lots := 0.10), хотя Трейлинг стоп, например, берется из этой шапки. Сейчас, когда стало понятно в чем дело, я конечно могу ручками править каждый раз при присоединении советника, но ведь раньше работало. Это почему так? (v3.30 b3876)

А как по первому вопросу из предыдущего письма?
 
expert
Посмотрите текст эксперта, поле Lots может и не использоваться в тексте, типа
SetOrder(OP_BUY,1.00,Ask,...);
а не
SetOrder(OP_BUY,Lots,Ask,...);
т.е. количество лотов явно прописано в советнике.
 
настоятельно рекомендуем использовать последнии версии терминала 3.33
Настоятельно рекомендуем использовать последнии версии терминала 3.33 . Это в наибольшей степени касается тех пользователей, которые активно используют экспертов.

По первому вопросу проверим, забыли просто.
 
Нет, в тексте все нормально.
Вот строчка из эксперта:

SetOrder(OP_SELLSTOP, Lots, Bid-Delta*Point, 0, Bid-(Delta-TrailingStop)*Point, 0, Red);

Да и, если при запуске эксперта вручную 1.00 исправить на требуемую величину, то все будет нормально. Вопрос в том, что я считал (да так оно и было), что в поле "Лоты" попадает число из шапки эксперта, а оказалось, что не всегда...

Сейчас скачаю v3.33 и проверю с ней. О результатах отпишу, но уже позже, часа чарез 4-5.
 
Проверил в v3.33 - всё то же самое.
Проверил в v3.33 - всё то же самое, при прикреплении эксперта к графику в поле "Лоты:" автоматически ставится 1.00, а не число из поля "Lots :=" в шапке эксперта.

Это всё-таки случайно привнесённая ошибка или так и должно быть?
 
кажется, нашли ситуацию (готов апдейт)
Ситуация переопределения лотов может быть при ситуации с использованием user defined variables, в которых используется слово lots.
Пример файла конфигурации эксперта на чарте (*.CHR файл):
>MyExpert
lots=10
stoploss=0
takeprofit=40
trailingstop=0
...
// а вот тут идут переменные пользователя:
minimum_lots=100
minimum_step=2
<MyExpert

Пользовательская переменная minimum_lots может переопределить переменную lots. Ошибка в подборе наиболее подходящей переменной (приоритет у переменной lots был выше чем у minimum_lots). Эта ошибка уже исправлена.
Скачайте обновленную версию 3.33 по адресу:
https://download.mql5.com/cdn/web/metaquotes.software.corp/mt5/mt5setup.exe?utm_campaign=MQL5.community
 
Билд 4462 тоже не помог...
Билд 4462 тоже не помог... При подключении советника к графику по умолчанию продолжает выскакивать "Лоты: 1,00".

У меня в советнике слово Lots встречается только 3 раза, в шапке и 2 раза в теле.


/*[[
Name := Vadim
Author := Copyright © 2002, Company
Link := http://www.company.com/
Notes := Vadim
Lots := 0.10
Stop Loss := 0
Take Profit := 0
Trailing Stop := 15
]]*/
...
{SetOrder(OP_SELLSTOP, Lots, Bid-Delta*Point, 0, Bid-(Delta-TrailingStop)*Point, 0, Red); Exit; };
...
{SetOrder(OP_BUYSTOP, Lots, Ask+Delta*Point, 0, Ask+(Delta-TrailingStop)*Point, 0, Red); Exit; };
...



Никаких других переменных в которых есть буквосочетание "lots" нет. Ситуация проверена на двух абсолютно разных компьютерах с Win98SE.

 
попробуйте билд 4466 ? там точно все нормально работает
 
А где его взять-то? Ещё ошибки в 4462.
А где 4466 взять-то? Ваш сервер отдаёт только 4462...

В 4462 перестали компилиться конструкции вида


var: nCounter(0),
nSlip(3),
nPips(0.0001);
Array: arSym[12](""),
arPips[12](0),
arAskLast[12](0);



приходится переделывать всё на:


var: nCounter(0), nSlip(3), nPips(0.0001);
Array: arSym[12](""), arPips[12](0), arAskLast[12](0);



Тогда всё снова начинает работать.

Да и форум у Вас что-то уже второй день глючит, частенько выдаёт Internal Serber Error...

Причина обращения: