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

 
tommy27:
Спасибо, я делал и через Close и как Вы советуете,:
но результат обновляется только при появлении нового бара а хотелось бы видеть и фиксировать изменения на каждом тике.

если советник не зацикленный, то результат будет меняться на каждом тике
 

Всем Спасибо, отдельно всё работает:

//+------------------------------------------------------------------+
//|                                                        Delta.mq4 |
//|                                                          tommy27 |
//|                                                  tommy27@mail.ru |
//+------------------------------------------------------------------+
#property copyright "tommy27"
#property link      "tommy27@mail.ru"

double 
       StartPrice1,
       Delta1,
       Price00;


//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   Price00 = 5000;
StartPrice1 =  iClose(0,0,0);
//StartPrice1 = Close[0];
Delta1 = MathAbs (Price00 - StartPrice1);
//if (Delta1>1000) Delta1=0;
Comment (Delta1);
Print ("Raznica= ",Delta1);
//----
   return(0);
  }
//+------------------------------------------------------------------+

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

 
PapaYozh:

если советник не зацикленный, то результат будет меняться на каждом тике
Спасибо.
 
В OrderSelect() есть две опции:
MODE_TRADES - ордер выбирается среди открытых и отложенных ордеров,
MODE_HISTORY - ордер выбирается среди закрытых и удаленных ордеров.

- Верно ли я понимаю что MODE_TRADES используется только с OrdersTotal(), а MODE_HISTORY - только с OrdersHistoryTotal()?
- Если это так то зачем они вообще нужны?
Спасибо!
 
chief2000:
В OrderSelect() есть две опции:
MODE_TRADES - ордер выбирается среди открытых и отложенных ордеров,
MODE_HISTORY - ордер выбирается среди закрытых и удаленных ордеров.

- Верно ли я понимаю что MODE_TRADES используется только с OrdersTotal(), а MODE_HISTORY - только с OrdersHistoryTotal()?
- Если это так то зачем они вообще нужны?
Спасибо!


Понимаете Вы верно.

А второй ваш вопрос не понятен. Если вы выбираете ордер по его позиции, то Вам необходимо знать общее количество ордеров

 
PapaYozh:


Понимаете Вы верно.

А второй ваш вопрос не понятен. Если вы выбираете ордер по его позиции, то Вам необходимо знать общее количество ордеров

Оба эти параметра (MODE_TRADES и MODE_HISTORY) используются только в случае с SELECT_BY_PO, но их можно было убрать совсем (использовать в МТ4 нужный по умолчанию - для OrdersTotal() и OrdersHistoryTotal() соответственно).
Это уже не принципиально, основным для меня был ответ на первый вопрос.
Спасибо!
 

alsu, открыть buy, если цена выросла более чем на 20 пунктов, за последние 10 минут; открыть sell, если за последние 10 минут, цена упала более чем на 20 пунктов.

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

P.S. Код открытия buy и sell в сове уже есть, так что их описывать не надо... меня больше интересует как правильно написать условия открытия, описанные выше...

 
oDin48:

alsu, открыть buy, если цена выросла более чем на 20 пунктов, за последние 10 минут; открыть sell, если за последние 10 минут, цена упала более чем на 20 пунктов.

Открыть точно в момент, когда произошло пересечение уровня или по истечении 10 минут?)))


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

extern int level = 10; //в пунктах

....
int start()
{
...

   RefreshRates();

   if(Bid>High[1]+level*Point)
   {
      //BUY
   }

   if(Bid<Low[1]-level*Point)
   {
      //SELL
   }
...
}
 

alsu, точно при пересечении, проверка времени и если попадает во временной диапазон совершить сделку.

Спасибо. Сейчас пойду пробовать.

 
oDin48:

alsu, точно при пересечении, проверка времени и если попадает во временной диапазон совершить сделку.

В таком варианте, по идее, надо помнить тиковую историю за последние 10 минут... код не сказать что тривиальный будет