[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 215

 
Qra:

Всем доброго времени суток!

Пишу своего первого бота, а заодно знакомлюсь с языком MQL. При тестировании возникла следующая проблема:

Ордер OP_BUYSTOP сразу после выставления срабатывает, хотя судя по графику цена не достигает планового значения (см. ниже)

ВремяТипОрдерОбъёмЦенаS / LT / PПрибыльБаланс
12011.09.19 02:10buy stop10.0176.93576.73577.135
22011.09.19 02:10buy10.0176.93576.73577.135

USDJPY,M5 (visual)

Date 2011.09.19

Time 02:15

Open 76.903

High 76.909

Low 76.890

Close 76.890

Volume 66

Тестирую все тики.

Быть может я не верно воспринимаю ордер OP_BUYSTOP? Покупать, если цена превысит определенное значение, правильно?

Кусок исходного кода, выставляющий ордер

int ticket=OrderSend(Symb, OP_BUYSTOP, Lot, Price, 0, SL, TP);

Заранее всем большое спасибо!

На свечном графике все цены Bid, а любой ордер на покупку исполняется по цене Ask.
 
PapaYozh:
На свечном графике все цены Bid, а любой ордер на покупку исполняется по цене Ask.

Спасибо!

 
Всем здрафитов!

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

Спасибо Roll за помощь. Подскажите пож. как нужно правильно отслеживать условие сохранности уровня на известном периоде?
//----------------------------------------------------------------------+ 
//  Удаление  OBJ_HLINE при пробитии его уровня   /Red-Up/Blue-Down|    |
//----------------------------------------------------------------------+   
void DelHLine( string nm="")  
   {
    int obj_total=ObjectsTotal();

       for(int i=1;i<obj_total;i++) 
      { 
        nm=ObjectName(i);
         if(nm==ObjectName(i)&&ObjectType(nm)==OBJ_HLINE)
         {
          color    cl     = ObjectGet(nm,OBJPROP_COLOR);
          double   pl     = ObjectGet(nm,OBJPROP_PRICE1);
          datetime timeSet= ObjectGet(nm,OBJPROP_TIME1);
          int      shift  = iBarShift(NULL,0,timeSet);
   
          if((cl==Red  && pl<High[iHighest(NULL,0,MODE_HIGH,shift,1)])||
             (cl==Blue && pl>Low [iLowest (NULL,0,MODE_LOW, shift,1)]) ) ObjectDelete(nm); 
         } 
      }
    return(0);  
  }
//+------------------------------------------------------------------+
 

Здравствуйте! Прошу помочь.

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

При запуске в excel есть только шапка таблицы, данных нет.

Помогите понять, почему delimiter не воспринимается excel'ем.

Файлы:
writefile.mq4  3 kb
 

Начинаю с программированием, так что возникает масса вопросов, заранее выражаю благодарность за внимание!

Написан скрипт - NewScript, который вополняет простую функцию - вывода OHLC цен по барам на графике...

Вовпрос, если BARS - это именно кол-во баров на текущем графике, то почему в журнале советников отображается именно кол-во баров на экране (около 200), а в логе журнала более 2000???

Спасибо!

Файлы:
 
Vinin:


Маленькая поправочка


double Hi (int pos=0) //создали Hi, зависящую от pos
{ 
  int i=pos; //присваиваем "i" значение от "pos", то есть i равно pos
  double H=0;
  while (i<=pos+10) //как она может быть меньше, если она равна?
  {
    if (H<iMACD (NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i))  //это мне вообще не понятно... то есть если значение "Н" будет меньше, то присваиваем...  
      H=iMACD (NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i); //то есть он определит мне наинизший, но не наивысший бар


    i++; //ну тут мы добавляем к "i" плюс 1
  }
  return(H); //возвращаем Hi в самое начало
}

извините, не могу понять функцию...

 
CLAIN:



Самый простой вариант

double Hi (int pos=0) 
{ 
  double H[10]; // Объявили массив
  
  for (i=pos+1;i<=pos+10;i++) // формируем массив
  {
    H[i]=iMACD (NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i);
  }
  int MaxId=ArrayMaximem(H); ищем индекс максимального элемента
  return(H[MaxId]); // возвращаем максимальный элемент
}
 

Здравствуйте!

Помогите написать код для остановки Советника на некоторое время?

Я написал код так.

int init() {
string OrderStop="OrderStop"+ Symbol();
OrderSig =GlobalVariableGet(OrderStop);
// Print (OrderSig);

return (0);
}

int deinit() {
return (0);
}

int start() {
string OrderStop="OrderStop"+ Symbol();
OrderSig = GlobalVariableGet(OrderStop);

if (OrderSig==1)return(0);

else {

тело советника(код)

}

return (0);

}

в прицепи этот код работает,но когда компилирую или пере запускаю Терминал,

советник начинает работать (открывает сделку) и снова не торгует.

Что может быть?

Или подскажите другой вариант.

 
alega:

Или подскажите другой вариант.

Используёте ф-ю:

  Sleep (3000);
 
Спасибо попробую.
Причина обращения: