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

 
artmedia70:
А вы не спрашивайте, а проверьте в тестере... :)
После компиляции эксперт работает так же, как и до изменений. Т.е. рисует одну линию.
 
globad:
эксперт рисует одну линию.
если в коде написано "рисовать линию 1 если она не нарисована; рисовать линию 2 если она не нарисована" - они не могут не рисоваться:)
 
eddy: artmedia70:
если в коде написано "рисовать линию 1 если она не нарисована; рисовать линию 2 если она не нарисована" - они не могут не рисоваться:)
Все ребята, разобрался! Работает!
 

Подскажите, почему в отчете о тестировании все проценты-0. Т.е. относительная просадка, максимальная просадка и т.д.?

 
artmedia70:

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

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

Минуты в часы сами превратите надеюсь ... :)





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

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

 if (SecondsAfterOpenLastPos(NULL, OP_SELL, MAGIC)>=(Period()*Interval)*60) {
        OpenSell();  
           } 
 
ребят помоги: нужно так что бы сделка открывалась, если после закрытия предыдущей прошло определенное кол-во времени....хелп
 
Vovo4ka:
ребят помоги: нужно так что бы сделка открывалась, если после закрытия предыдущей прошло определенное кол-во времени....хелп


for (int i=0; i<OrdersTotal(); i++)
{ if (OrderSelect(i, SELECT_BY_POS)==true)
{
TC = TimeCurrent();
OM = OrderMagicNumber();
if (TC-OM>86400 && (OrderType()==OP_SELL)){
CLOSEORDER("Sell");
}
if (TC-OM>86400 && (OrderType()==OP_BUY)){
CLOSEORDER("Buy");
}
}
}

В OrderMagicNumber() при открытие ордера пишется: Magic = TimeCurrent();

 
ILL:


for (int i=0; i<OrdersTotal(); i++)
{ if (OrderSelect(i, SELECT_BY_POS)==true)
{
TC = TimeCurrent();
OM = OrderMagicNumber();
if (TC-OM>86400 && (OrderType()==OP_SELL)){
CLOSEORDER("Sell");
}
if (TC-OM>86400 && (OrderType()==OP_BUY)){
CLOSEORDER("Buy");
}
}
}

В OrderMagicNumber() при открытие ордера пишется: Magic = TimeCurrent();


Забыл=) 86400 - это количество секунд, через которое закрывается позиция
 
ILL:

Подскажите, почему в отчете о тестировании все проценты-0. Т.е. относительная просадка, максимальная просадка и т.д.?


Все разобрался - депо было слишком большим)
 
Vovo4ka:


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

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

А подумать над кодом функции? Найдите четыре отличия :) :

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

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