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

 
hoz:

Хм. А константу для case я так понимаю переменной нельзя использовать, исходя из документации. Написано что какой-то целевой константой, символьной константой или символьным выражением.

Получается тока если букву задать типа стринг есс-но т.е. 1 символ (если больше 1 символа ругается компилятор) или цифру.

 Больше ничего.
А написано что какие-то целевые константы, сивольные выражения и символьные константы. 

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


Спасибо
 

 Учусь работать с библиотеками. Пишу эксперт, есть вот такая функция:

//+-------------------------------------------------------------------------------------+
//| Получаем машку с заданными параметрами                                              |
//+-------------------------------------------------------------------------------------+
double GetMA(int typeOfMA)
{
   switch (typeOfMA)
   {
      case 1:      return (iMA(NULL, i_fastMATF, i_fastMAPeriod, i_fastMAShift, i_fastMAMethod, i_fastMAApplied, i_fastMAIndex));
      case 2:      return (iMA(NULL, i_slowMATF, i_slowMAPeriod, i_slowMAShift, i_slowMAMethod, i_slowMAApplied, i_slowMAIndex));
      case 3:      return (iMA(NULL, i_filtrMATF, i_filtrMAPeriod, i_filtrMAShift, i_filtrMAMethod, i_filtrMAApplied, i_filtrMAIndex));
   }
}

 Я её выносил в инклюд, всё работает как нужно. А если подключить библиотекой, то при компиляции эксперта возникает ошибка:

'GetMA' - function is not defined       E:\Insall'd soft's\Forex\MetaTraderForProgramming\experts\Scalper_M1.mq4 (127, 8)
'GetMA' - function is not defined       E:\Insall'd soft's\Forex\MetaTraderForProgramming\experts\Scalper_M1.mq4 (127, 19)
'GetMA' - function is not defined       E:\Insall'd soft's\Forex\MetaTraderForProgramming\experts\Scalper_M1.mq4 (129, 8)
'GetMA' - function is not defined       E:\Insall'd soft's\Forex\MetaTraderForProgramming\experts\Scalper_M1.mq4 (129, 19)
4 ошибок, 0 предупреждений.

 Почему данной функции не видно из библиотеки?

Библиотека имеет вот такое содержание и прекрасно компилируется:

//+-------------------------------------------------------------------------------------+
//|                                                                  Scalper_M1_lbr.mq4 |
//|                                                                                 hoz |
//|                                                                                     |
//+-------------------------------------------------------------------------------------+
#property copyright "hoz"
#property link      ""
#property library

int i_fastMATF,
    i_fastMAPeriod,
    i_fastMAShift,
    i_fastMAMethod,
    i_fastMAApplied,
    i_fastMAIndex,
    i_slowMATF,
    i_slowMAPeriod,
    i_slowMAShift,
    i_slowMAMethod,
    i_slowMAApplied,
    i_slowMAIndex,
    i_filtrMATF,
    i_filtrMAPeriod,
    i_filtrMAShift,
    i_filtrMAMethod,
    i_filtrMAApplied,
    i_filtrMAIndex;
//+-------------------------------------------------------------------------------------+
//| Получаем машку с заданными параметрами                                              |
//+-------------------------------------------------------------------------------------+
double GetMA(int typeOfMA)
{
   switch (typeOfMA)
   {
      case 1:      return (iMA(NULL, i_fastMATF, i_fastMAPeriod, i_fastMAShift, i_fastMAMethod, i_fastMAApplied, i_fastMAIndex));
      case 2:      return (iMA(NULL, i_slowMATF, i_slowMAPeriod, i_slowMAShift, i_slowMAMethod, i_slowMAApplied, i_slowMAIndex));
      case 3:      return (iMA(NULL, i_filtrMATF, i_filtrMAPeriod, i_filtrMAShift, i_filtrMAMethod, i_filtrMAApplied, i_filtrMAIndex));
   }
}
 
Всем привет. Очень нужны лекции по программированию. Подскажите, пожалуйста, где можно скачать без лишней мороки. А то нашла только эти: http://sdb.su/programmirovanie/page,17,782-mozzhechkov-a-a-upravlenie-robotami-i-robototexnicheskimi-sistemami.html А они мне не подходят, т.к. слишком сложные.
 
popovagalina:
Всем привет. Очень нужны лекции по программированию. Подскажите, пожалуйста, где можно скачать без лишней мороки. А то нашла только эти: http://sdb.su/programmirovanie/page,17,782-mozzhechkov-a-a-upravlenie-robotami-i-robototexnicheskimi-sistemami.html А они мне не подходят, т.к. слишком сложные.
А чем Вам учебник С. Ковалёва не годится? См. наверху и Документация, и ТА в подмогу! Удачи!
 

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

Подскажите оператор OrdersTotal() считает вообще все открытые ордера или те которые принадлежат к символу на который прикрепил эксперта?

Если все, то как можно считать только допустим EURUSD если открыты ордера еще на USDCHF и т.д.

Спасибо.

 
ed3sss:

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

Подскажите оператор OrdersTotal() считает вообще все открытые ордера или те которые принадлежат к символу на который прикрепил эксперта?

Если все, то как можно считать только допустим EURUSD если открыты ордера еще на USDCHF и т.д.

Спасибо.


Все считает.  Если хотите конкретно по какому то символу или ещё как то можно воспользоваться такой функцией:

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 28.11.2006                                                     |
//|  Описание : Возвращает количество ордеров.                                 |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любой ордер)                    |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int NumberOfOrders(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), ko=0, ot;

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
      if (ot>1 && ot<6) {
        if ((OrderSymbol()==sy || sy=="") && (op<0 || ot==op)) {
          if (mn<0 || OrderMagicNumber()==mn) ko++;
        }
      }
    }
  }
  return(ko);
}
 
Теперь у меня вопрос назрел: сигналы в сову идут от 2-х индикаторов, первый сигнал длится 1 бар и потом пропадает, а второй появляется либо на этом же баре либо через несколько. Как сделать так чтоб сова запомнила что 1-й сигнал произошол и ждала второго пока он не появится не важно через сколько баров.
Причина обращения: