На нашем веб-сайте выложен обновленный билд 198 от 19 октября - страница 3

 
Отладчик бы сделали, меньше было бы таких тупых ляпов.

Да..... отладчик - это то, чего так не хватает... Хотя бы самый премитивный... Порой смотришь на отладчик в Visual Studio - и глаз не нарадуется...

Da... Otlad4ik, dage i prostenykiy sovsem, bil bi prosto super. Hotiab dlia otlovli prostih osibok. Ne planiruetsia li, tovaris4i razrabot4iki? :)

P.S. A segodnia budet Build 199? :D
 
Как-то просил добавить звуковой сигнал по окончанию тестирования, на подобие того, что был в МТ3. Пожалуйста, добавьте этот сигнал с возможностью включения/выключения на закладке "События".
 
Всю жизнь тестировал "все тики". Сегодня попробовал по ценам открытия. Тупо пытался полчаса найти ошибку в программе из четырех строк. В результате упростил до 2-х строк. Стало гораздо понятней, но не понятно всё ж почему так.
Имеем простой код:

OrderSend(Symbol(),OP_BUY,1,Ask,1,0,0);
OrderClose(OrderTicket(),OrderLots(),Bid,1);

Если проверить, на момент открытия и закрытия бара (в визуал) Bid = Open[0], Ask = Open[0]+Spread. Но как это всё работает? Появляется бар, срабатывает OrderSend, появляется поза на уровне Open[0]+Spread. Но закрытия тут же не происходит. Сначала бар увеличивается до положенной цены Close[0], потом появляется следующий бар и тут, по цене Open[0], поза закрывается. Я понимаю, модель называется "по ценам открытия". Но нельзя ли в этой модели рарешить всё-таки такую возможность - открытие/закрытие по одной цене?
 

Имеем простой код:

    OrderSend(Symbol(),OP_BUY,1,Ask,1,0,0);
    OrderClose(OrderTicket(),OrderLots(),Bid,1);


А где же получение номера тикета и OrderSelect? Без этого тикет не будет закрываться...
 
Нашёл только что баг с визуальным тестером:
Линия Ask отображается в нём, но её значение равно текущему значению Ask, а не тому, которое должно быть в тестере...
 

Имеем простой код:
    OrderSend(Symbol(),OP_BUY,1,Ask,1,0,0);
    OrderClose(OrderTicket(),OrderLots(),Bid,1);


А где же получение номера тикета и OrderSelect? Без этого тикет не будет закрываться...

Опустил за ненадобностью. Так сказать, чтоб от сути лишнее не отвлекало.
Вот полный =) текст
int start()
{
  if(OrdersTotal()!=0)
  {
    OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
    OrderClose(OrderTicket(),OrderLots(),Bid,1);
  }

  if(OrdersTotal()==0)
  {
    OrderSend(Symbol(),OP_BUY,1,Ask,1,0,0);
  }

  return(0);
}
 
avm, твой эксперт как работает:
1) если есть открытые ордера, то он их закрывает
2) затем, если нет открытых ордеров - открывает
или, если иначе сказать,
открыает ордер, а потом на следующий тик закрывает его.
Но в твоём случае следующий тик происходит на следующее открытие бара. Значит и закроется ордер на следующем баре.
А чтобы этого не было, сделай так:
int start()
{
  if(OrdersTotal()==0)
  {
    OrderSend(Symbol(),OP_BUY,1,Ask,1,0,0);
  }

  if(OrdersTotal()!=0)
  {
    OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
    OrderClose(OrderTicket(),OrderLots(),Bid,1);
  }
  return(0);
}


Только зачем это тебе надо открывать и закрывать на одном тике? Или я не правильно понял, что тебе надо?

 
Norfolc, большое спасибо. Действительно, так работает, как надо. Мозги замкнуло. Действительно, в модели по "ценам открытия" порядок следования должен соответствовать. А я в лоб из модели "все тики" (там -то по барабану) в модель "по ценам открытия" полез. Ещё раз большое спасибо за помощь.
 
Norfolc, большое спасибо. Действительно, так работает, как надо. Мозги замкнуло. Действительно, в модели по "ценам открытия" порядок следования должен соответствовать. А я в лоб из модели "все тики" (там -то по барабану) в модель "по ценам открытия" полез. Ещё раз большое спасибо за помощь.

В моделе по тикам как раз тоже не по-барабану.;) Тик - это изменение цены, и если делать так, как ты предложил, то ордера будут закрываться с профитом(убытком), отлчным от спреда.;)
 
В моделе по тикам как раз тоже не по-барабану.;) Тик - это изменение цены, и если делать так, как ты предложил, то ордера будут закрываться с профитом(убытком), отлчным от спреда.;)

По-моему, это невозможно. Если открывается, например, длинная позиция. То открывается она по аску, а закрывается по биду. И тут не важно, сразу она закрывается, на следующем тике, или чере час.