[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 248

 
Bicus:

Это что? Перебор всех ордеров истории, не так ли? Понятно, что в теле цикла можно как-то ограничиться по датам и пр.

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

В реальной истории все происходит так же. Перебираются все ордера истории счета.

История не правится. Она одна для данного счета и может только дописываться новыми событиями.

 
artmedia70:

Похоже, надоело уже... Элементарно же, Ватсон:

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int start()
{
if (ObjectFind("MyPriceLine")<0) ObjectCreate("MyPriceLine", OBJ_HLINE, 0, 0, Ask+20*Point) ;
ObjectSet("MyPriceLine", OBJPROP_PRICE1, Ask+20*Point);
return(0);
}

//+------------------------------------------------------------------+
Спасибо за долгожданный ответ! Не могу понять, как это мне поможет в решении моей проблемы? Как мне сделать так, что бы линии рисовались одновременно выше и ниже Аск и из одного эксперта?
 
globad:
Спасибо за долгожданный ответ! Не могу понять, как это мне поможет в решении моей проблемы? Как мне сделать так, что бы линии рисовались одновременно выше и ниже Аск и из одного эксперта?
Дайте линиям разные имена.
 
Vovo4ka:

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

в чем ошибка то?
 
sergeev:
в чем ошибка то?

так не работает вот в чем.......не открыает позиции....хотя по истории смотрю должен открывать, а не открывает позиции...просто молчит и ошибок нет
 
ребят как сделать так что бы сделка открывалась скажем не чаще чем одна в час??
 
artmedia70:
Дайте линиям разные имена.

Как-то так...??

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int start()
{
if (ObjectFind("MyPriceLine1")<0) ObjectCreate("MyPriceLine1", OBJ_HLINE, 0, 0, Ask+20*Point) ;
ObjectSet("MyPriceLine1", OBJPROP_PRICE1, Ask+20*Point);
if (ObjectFind("MyPriceLine2")>0) ObjectCreate("MyPriceLine2", OBJ_HLINE, 0, 0, Ask-20*Point) ;
ObjectSet("MyPriceLine2", OBJPROP_PRICE1, Ask-20*Point);
return(0);
}
//+------------------------------------------------------------------+
 
Vovo4ka:
ребят как сделать так что бы сделка открывалась скажем не чаще чем одна в час??

Например, так:

//+----------------------------------------------------------------------------+
datetime SecondsAfterOpenLastPos(string sy, int op, int mn) 
{
   datetime t;
   int      i, k=OrdersTotal();

   if (sy=="0") sy=Symbol();
   for (i=0; i<k; i++) {
      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
         if (OrderSymbol()!=sy)        continue;
         if (OrderType()!=op)          continue; 
         if (OrderMagicNumber()!=mn)   continue; 
         if (t<OrderOpenTime()) t=OrderOpenTime();
         }
      }
  return(TimeCurrent()-t);
}
//+----------------------------------------------------------------------------+

Вызывать так:

if (SecondsAfterOpenLastPos(NULL, OP_SELL, Magic)>=(Period()*3)*60) {
   // --- код, если прошло три минуты и более с момента открытия ... 
   // ... последней позиции Sell с магиком Magic на текущем символе ---
   }
Минуты в часы сами превратите надеюсь ... :)
 
globad:

Как-то так...??

А вы не спрашивайте, а проверьте в тестере... :)
 
globad:

Как-то так...??

if (ObjectFind("MyPriceLine1")<0) ObjectCreate("MyPriceLine1", OBJ_HLINE, 0,0, Ask+20*Point);
                                     ObjectSet("MyPriceLine1", OBJPROP_PRICE1, Ask+20*Point);
if (ObjectFind("MyPriceLine2")>0) ObjectCreate("MyPriceLine2", OBJ_HLINE, 0,0, Ask-20*Point);
                                     ObjectSet("MyPriceLine2", OBJPROP_PRICE1, Ask-20*Point); 
про ObjectFind то прочитал бы сначала в документации) ObjectFind возвращает -1 если линия ещё не создана, т.е. во втором if надо так же писать ObjectFind("MyPriceLine2")<0
Причина обращения: