Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1367

 
Artyom Trishkin:
 

Круто... не ожидал.... что то такое  из прошлого... , спасибо.

 
DanilaMactep:

По первой части(подсчет ордеров) рекомендую:

//+----------------------------------------------------------------------------+
//| Подсчет ордеров                                                            |
//+----------------------------------------------------------------------------+
//| -1 - Все типы ордеров                                                      |
//|  0 - ордера типа BUY                                                       |
//|  1 - ордера типа SELL                                                      |
//|  2 - ордера типа BUYLIMIT                                                  |
//|  3 - ордера типа SELLLIMIT                                                 |
//|  4 - ордера типа BUYSTOP                                                   |
//|  5 - ордера типа SELLSTOP                                                  |
//+----------------------------------------------------------------------------+
int CountOrders(string symb="", int or_ty=-1, int magiс=-1) 
  {
   int cnt=0;
   if(symb=="0") symb=_Symbol;
   for(int pos=OrdersTotal()-1;pos>=0;pos--)
     {
      if(OrderSelect(pos,SELECT_BY_POS)==true)
        {
         if((OrderSymbol()==symb || symb=="")&&(or_ty<0 || or_ty==OrderType()))
           {
            if(magiс<0 || OrderMagicNumber()==magiс) cnt++;
           }
        }
     }
   return(cnt);
  }

Далее

void OnTick()
   { // НАЧАЛО ОН ТИК
   int count_orders_market_buy   = CountOrders(_Symbol,0,magik_number); // КОЛИЧЕСТВО БАЙ ОРДЕРОВ
   int count_orders_market_sell  = CountOrders(_Symbol,1,magik_number); // КОЛИЧЕСТВО СЕЛ ОРДЕРОВ
   int count_orders_buy_limit    = CountOrders(_Symbol,2,magik_number); // КОЛИЧЕСТВО БАЙ ЛИМИТ
   int count_orders_sell_limit   = CountOrders(_Symbol,3,magik_number); // КОЛИЧЕСТВО СЕЛ ЛИМИТ
   int count_orders_stop_buy     = CountOrders(_Symbol,4,magik_number); // КОЛИЧЕСТВО БАЙ СТОП
   int count_orders_stop_sell    = CountOrders(_Symbol,5,magik_number); // КОЛИЧЕСТВО СЕЛ СТОП

А ошибка, скорее всего здесь(выделил желтым)

if(OrderSend(Symbol(),OP_BUY,lot,Ask,slippages,Ask-sl,Ask+tp,Coment ГДЕ МАГИК? )) Print("Buy Open");
 
Artyom Trishkin:
 

Это жесть. Все цветное смещено. Но цвета появились. И на предварительном просмотре тоже все хорошо....

Не критично... но не айс...

 
В описании уровней Фибоначчи в окне свойств можно изменить их значения на ценовые через %$. Как получить цену уровней программно, не могу найти. 
 
Galim_V:
В описании уровней Фибоначчи в окне свойств можно изменить их значения на ценовые через %$. Как получить цену уровней программно, не могу найти. 

OBJPROP_LEVELVALUE

 
MakarFX:

OBJPROP_LEVELVALUE

Спасибо, Макар! Но я не знаю, как этим воспользоваться. Мне нужно получить ценовые значения уровней стандартного фибо.

#include <stdlib.mqh>

void OnStart() 
  { 
 string name ="FIBO";
   string text;
  for(int i=0;i<32;i++)
  
    {
//    ObjectSetFiboDescription(name,i,???);
     text=ObjectGetFiboDescription(name,i);
     //---- проверим, возможно уровней у объекта меньше, чем 32
     if(GetLastError()!=ERR_NO_ERROR) break;
     Print(name,"номер уровня: ",i," описание: ",text);
    } 
 }      

Забаненая фунция позволяет заменить стандартные на ценовые. Но где их взять? Где-то же они есть. 

 
Galim_V:

Спасибо, Макар! Но я не знаю, как этим воспользоваться. Мне нужно получить ценовые значения уровней стандартного фибо.

Забаненая фунция позволяет заменить стандартные на ценовые. Но где их взять? Где-то же они есть. 

Между ценами фибки, это 100% и все остальные уровни считаются от этих значений. посчитать можно не только стандартные значения, но и любые примерно по такой формуле:

Цена_0 + (Цена_1 - Цена_0) * 0.27;

А забаненая функция позволяет вписать в описание уровня те самые «%S» для того, чтобы на уровнях было отображение цены.
 
Galim_V:

Спасибо, Макар! Но я не знаю, как этим воспользоваться. Мне нужно получить ценовые значения уровней стандартного фибо.

Забаненая фунция позволяет заменить стандартные на ценовые. Но где их взять? Где-то же они есть. 

void OnStart()
{
   //---  а сколько у нас Фибо-уровней ?
   int levels=ObjectGetInteger(0,"Fibo",OBJPROP_LEVELS);
   Alert("Fibo levels before = ",levels);
   //---выведем в Журнал=> номер уровня:значения описание_уровня
   for(int i=0; i<levels; i++) {
      Alert(i,":",ObjectGetDouble(0,"Fibo",OBJPROP_LEVELVALUE,i),
            "  ",ObjectGetString(0,"Fibo",OBJPROP_LEVELTEXT,i));
   }
}

Как то так

 
Alekseu Fedotov:

Как то так

А это проверено?)))))

 
Alexey Viktorov:

А это проверено?)))))

Цену не показывает(

2021.01.29 16:16:32.116 Instant direction GBPJPYb,M5: 0:-0.25
2021.01.29 16:16:32.116 Instant direction GBPJPYb,M5: 1:0.0
2021.01.29 16:16:32.116 Instant direction GBPJPYb,M5: 2:0.5
2021.01.29 16:16:32.116 Instant direction GBPJPYb,M5: 3:1.0
2021.01.29 16:16:32.116 Instant direction GBPJPYb,M5: 4:1.5
2021.01.29 16:16:32.116 Instant direction GBPJPYb,M5: 5:2.0
2021.01.29 16:16:32.116 Instant direction GBPJPYb,M5: 6:2.5
2021.01.29 16:16:32.116 Instant direction GBPJPYb,M5: 7:3.0
2021.01.29 16:16:32.116 Instant direction GBPJPYb,M5: 8:3.5
2021.01.29 16:16:32.116 Instant direction GBPJPYb,M5: 9:4.0
2021.01.29 16:16:32.116 Instant direction GBPJPYb,M5: 10:5.0
2021.01.29 16:16:32.116 Instant direction GBPJPYb,M5: 11:6.0
2021.01.29 16:16:37.952 Instant direction GBPJPYb,M5: Fibo levels before = 12
Причина обращения: