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

 
vasabu2012:

Ребята я не знаю Кима-может все таки ответит знающий и в этой ветки

буду очень благодарен! 

Вот он Kim Igor V. А тут полезные функции от KimIV
 

Вопрос к профи:необходимо вытащить данные по последнему закрытому 
ордеру,вести подсчет номеров ордеров нет возможности-так как
работают несколько советников и все в разнобой ставят и закрывают
ордера на одном счете .Каждый советник имеет свой магик.
Вопрос именно о данных с последнего закрытого ордера в терминале?

 

КТО ЗНАЕТ ОТВЕТ-ОТВЕТЬТЕ ПОЖАЛУЙСТА!!! 

 

 

 
vasabu2012:
Вопрос к профи:необходимо вытащить данные по последнему закрытому 
ордеру,вести подсчет номеров ордеров нет возможности-так как
работают несколько советников и все в разнобой ставят и закрывают
ордера на одном счете .Каждый советник имеет свой магик.
Вопрос именно о данных с последнего закрытого ордера в терминале?

я конечно не копенгаген, но раз ищешь последний, так и найди его по времени...
 
КОНКРЕТНО-КАКИМ ОБРАЗОМ?
 
как сделать, чтоб советник работал не только на демо?
Файлы:
sovetnik.ex4  31 kb
 
sergio7:
как сделать, чтоб советник работал не только на демо?
Тот, что вы тут выложили - НИКАК
 
sergio7:
как сделать, чтоб советник работал не только на демо?

Это же не исходник! Должен быть mq4, а не ех4!
 
paladin80:
Тот, что вы тут выложили - НИКАК


Этот же злоумышленник в другой ветке:

sergio7 04.04.2013 21:04
помогите заставить советник работать не только на демо.
Прикрепленные файлы: 
   tpyokfcx.ex4 (30.27 KB)
 

 Решил я осилить библиотеки, которые написал TarasBy. Начал с этой https://www.mql5.com/ru/code/10659

Вопросы возникли некоторые. Буду последователен. Вот например:

//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Автор : TarasBY, taras_bulba@tut.by                                              |
//+-----------------------------------------------------------------------------------+
//|        Получаем торговую информацию по символу                                    |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
void fGet_MarketInfo (string fs_Symbol, int fi_Ticket = 0)
{
//----
         if (fs_Symbol != bs_Symbol || fi_Ticket < 0)
         {
                  if (fi_Ticket > 0)
                  {
                     bs_Symbol = OrderSymbol();
                  }
                  else
                  {
                     bs_Symbol = fs_Symbol;
                  }
                  if (bs_Symbol == Symbol())
                  {
                      bi_SymDigits = Digits;
                      bd_SymPoint = Point;
                  }
                  else
                  {
                      bi_SymDigits = MarketInfo (fs_Symbol, MODE_DIGITS);
                      bd_SymPoint = MarketInfo (fs_Symbol, MODE_POINT);
                  }
        if (bd_SymPoint == 0.0)
        {
           bd_SymPoint = fGet_Point (fs_Symbol);
        }
                  bd_ProfitMIN = NDP (ProfitMIN_Pips);
         }
         if (fi_Ticket > 0)
         {
            fGet_OrderDetails (fi_Ticket);
         }
    //---- Получаем текущие цены по инструменту
    RefreshRates();
    bda_Price[0] = NDD (fGet_TradePrice (0, bb_RealTrade, bs_Symbol));
    bda_Price[1] = NDD (fGet_TradePrice (1, bb_RealTrade, bs_Symbol));
    bd_Spread = NDD (bda_Price[1] - bda_Price[0]);
//----
}

 В параметре самой функции видим:

fi_Ticket = 0

 Обычно подобные функции вызываются уже после выборки ордеров, а значит тикет у них будет. Зачем тогда дефолтовое значение присваивать нулём?

 

 Дальше идёт ещё интереснее:

if (fs_Symbol != bs_Symbol || fi_Ticket < 0)
{
   if (fi_Ticket > 0)
   {
      bs_Symbol = OrderSymbol();
   }
   else
   {
     bs_Symbol = fs_Symbol;
                  }
                  if (bs_Symbol == Symbol())
                  {
                      bi_SymDigits = Digits;
                      bd_SymPoint = Point;
                  }

 Сразу сравнивается переменная fs_Symbol c bs_Symbol

bs_Symbol выше не была инициалзированная, там, где сама функция fGet_MarketInfo() вызывается. И вообще зачем этот bs_Symbol ?

 так же в условии:

if (fs_Symbol != bs_Symbol || fi_Ticket < 0)

 условие, если fi_Ticket < 0, то дальше...

if (fi_Ticket > 0)
{
   bs_Symbol = OrderSymbol();
}

 а это уже противоречит условию. В начале же чтоб отработал код нужно чтоб собладалось условие fi_Ticket < 0, а потом внутри этого условия тикет > 0. Где логика?

Причина обращения: