[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 216

 
artsnz >>:

Так бывает? Чтоб ДЦ предлогал закрыть ордер по более выгодной цене???? Впервые слышу что ДЦ так ращедрился.

Робот и не тупил, он по определению тупить не может, он действовал строго своей программе.

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

1. Да, такое было - это видно из лога журнала.

2. Слово "тупил" я употребил в переносном смысле, имелось ввиду, что в коде что-то не так.

3. Вот код закрытия позы:

for (cop=0;cop<t_o;cop++)
 {
  OrderSelect(cop, SELECT_BY_POS, MODE_TRADES);//Выбор ордера по позиции среди открытых
  if(OrderMagicNumber()==MN) 
  {
   ot=OrderTicket();
   if(!OrderClose(OrderTicket(),OrderLots(),price,3,Color))
    Print("Ошибка при закрытии ордера! ED:",ErrorDescription(GetLastError()));
   
  }
 }

Но поза закрывается не всегда, при этом это не ошибка, это считается нормальным, от сервера приходит сообщение типа:

2009.09.08 00:44:42 '64766': requote 1.51893 / 1.51933 for order #11573500 sell 1.80 EURCHF closing at 1.51914

Как известно оно означает, что цена изменилась в короткий промежуток времени, пока запрос на закрытие шел на сервер.

И сервер предлагает новую цену закрытия. Дается время на ответ - 3 секунды. И тут проблема - сервер получает отказ закрывать ордер по новой цене!

Как это происходит не понятно... Помогите разобраться пожалуйста.

 

Ребята, объясните пожалуйста значение восклицательного знака(!ExistPosition).

if(cnt > 0 && !ExistPosition(OP_BUY) && Ask <= price - PipsForOpenMore * Point)

 
001 >>:

Ребята, объясните пожалуйста значение восклицательного знака(!ExistPosition).

if(cnt > 0 && !ExistPosition(OP_BUY) && Ask <= price - PipsForOpenMore * Point)

дословный перевод этой строки будет таким:

если cnt БОЛЬШЕ 0 И функция ExistPosition(OP_BUY) вернет FALSE (Лож) И Ask МЕНЬШЕ ИЛИ РАВНО price - PipsForOpenMore * Point, то....

Знечение "!" - отрицание. Если бы его не стояло, то в данном условии (if) предполагалось бы, что функция ExistPosition(OP_BUY) должна вернуть TRUE (правду).

 
Здравствуйте, подскажите пожалуйста, как отловить и обработать в советнике событие закрытия сделки по стоплоссу или тейкпрофиту. Спасибо.
 
cdover >>:
Здравствуйте, подскажите пожалуйста, как отловить и обработать в советнике событие закрытия сделки по стоплоссу или тейкпрофиту. Спасибо.

Ты хочешь чтоб что-то выполнилось перед закрытием по стопу/профиту?

 
MrSoros писал(а) >>

Ты хочешь чтоб что-то выполнилось перед закрытием по стопу/профиту?

нет, сразу после закрытия.

 

OrdersTotal() - вернет 0 сразу, как только ордер был закрыт.

Соответственно если OrdersTotal() возвращает 0, то делаете обработку...

Это случай, когда открыт только один ордер.

Если ты подробней опишешь свою ситуацию, что хочешь сделать после закрытия ордера, то смогу ответить получше :)

 
Alex5757000 >>:
Коллеги, у меня вопрос по усреднениям. чисто математический. предположем мы усреднились 3 раза: позы с одинаковым объемом 1 лот. по цене 1.8 и 1.6 и 1.4. Фактическая цена открытия здесь будет равна 1.6 . С этим ясно. Но я не пойму, как мне расчитать фактическую цену открытия, если мы открывались разными лотами. напр. с коэфф.усреднения равным N. // 0.1 лот и 0.2 и 0.4 - тут N==2 по ценам 1.8 и 1.6 и 1.4 . Какой будет фактическая цена открытия?

Я не понимаю логики.

Можете ли Вы объяснить точнее, с примера?

 
MrSoros писал(а) >>

3. Вот код закрытия позы:

Увеличь значение слиппажа до 50, у тебя ж 5 знаков, поэтому 0.3 пипса не катит.

 
cdover писал(а) >>
Здравствуйте, подскажите пожалуйста, как отловить и обработать в советнике событие закрытия сделки по стоплоссу или тейкпрофиту. Спасибо.

Смотришь последний ордер в истории, определяешь тип ордера.

Например для длинной позиции:

Если ордер закрылся по цене равной или меньшей стоплосса, то был стоплосс.

Если по цене равной или большей тейкпрофита - тейкпрофит.

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