MetaTrader 4 Build 186 - страница 3

 
Конечно, как руки дойдут. Еще кое-что сделал, надо "стабилизировать" :)
а можно я 5 копеек вставлю? =)
чтоб не было заморочек с init, сделай в теле ф-ции WriteEquity() что-то типа
if ( first ) { ExtHandle=FileOpen("Equity.csv",FILE_WRITE | FILE_CSV,";"); first = false; }


а в инструкции напиши, что в деинит надо вставить строку закрытия файла ;)

 
Без разницы.
 
Билд 186. В тестере такая конструкция прекрасно работает =)
  StopLevel=Close[1];
  if(Ask<StopLevel && OrdersTotal()==0)
  {
    OrderSend(Symbol(),OP_BUYSTOP,Lots,StopLevel,3,StopLevel,0);
    return(0);
  }

  if(Bid>StopLevel && OrdersTotal()==0)
  {
    OrderSend(Symbol(),OP_SELLSTOP,Lots,StopLevel,3,StopLevel,0);
    return(0);
  }


StopLevel - уровень установкм ордера и стоплоса. Результат - имеем целую кучу поз закрытых по б/у.

 
int IndicatorCounted( )
Функция возвращает количество баров, не измененных после последнего вызова индикатора. Большинство подсчитанных баров не нуждается в пересчете. Функция используется для оптимизации вычислений.


#property indicator_chart_window
int lb;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int counted_bars=IndicatorCounted();
//---- 
   if( lb!=Bars )
   {
      Print("Bars=",Bars," counted_bars=",counted_bars);
      lb=Bars;
   }
   
//----
   return(0);
  }
//+------------------------------------------------------------------+



2005.11.15 15:56:43	counted_bars_test USDCHF,M1: Bars=52655 counted_bars=52653
2005.11.15 15:55:51	counted_bars_test USDCHF,M1: Bars=52654 counted_bars=52652
2005.11.15 15:54:45	counted_bars_test USDCHF,M1: Bars=52653 counted_bars=52651
2005.11.15 15:53:53	counted_bars_test USDCHF,M1: Bars=52652 counted_bars=52650
2005.11.15 15:53:09	counted_bars_test USDCHF,M1: Bars=52651 counted_bars=52649



при появлении нового бара количество неизмененных баров (после последнего вызова индикатора) почему-то уменьшается на 1 в результате приход 1 тика нового бара (изменный бар после него может быть только 1) , а оказывается 2 . Или дескрипшн нужно поправить или функцию

 
при появлении нового бара количество неизмененных баров (после последнего вызова индикатора) почему-то уменьшается на 1 в результате приход 1 тика нового бара (изменный бар после него может быть только 1) , а оказывается 2 . Или дескрипшн нужно поправить или функцию

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

присутствует в текущей редакции
Функция возвращает количество баров, не измененных после последнего вызова индикатора.

естесственно что на один тик может поменяться только 1 бар, и не имея опыта в написании кода индикаторов, обязательно будешь считать, что функция возвратит предыдущее количество баров (они ведь не менялись), а реально она возвращает на 1 меньше я же с этим столкнулся когда писал о непредусмотренном сдвиге в массиве, я и не подозревал что она вернется к уже посчитанному бару и снова его пересчитает.
 
А скажите мне такую вещь - если я подряд отправляю 2 ордера один за другим советник учитывает таймауты и ждет или нет? Будут проблемы со вторым ордером или нет?
 
А скажите мне такую вещь - если я подряд отправляю 2 ордера один за другим советник учитывает таймауты и ждет или нет? Будут проблемы со вторым ордером или нет?

Нет.
Да, скорее всего будут - ошибка 146.
 
А скажите мне такую вещь - если я подряд отправляю 2 ордера один за другим советник учитывает таймауты и ждет или нет? Будут проблемы со вторым ордером или нет?

Нет.
Да, скорее всего будут - ошибка 146.


Хотя ошибка наиболее вероятна при попытке одновременной торговли из двух экспертов.
На счет отсылки двух ордеров сразу из одного советника не знаю, не уверен.
 
На счет торговли из двух экспертов работает IsTradeAllowed() проверка, я так понимаю она и таймауты учитывает?
Причина обращения: