Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1367

 
Artyom Trishkin:

Legal... não esperava.... algo assim do passado... Obrigado.

 
DanilaMactep:

Na primeira parte (contagem de pedidos) eu recomendo:

//+----------------------------------------------------------------------------+
//| Подсчет ордеров                                                            |
//+----------------------------------------------------------------------------+
//| -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);
  }

Próximo

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); // КОЛИЧЕСТВО СЕЛ СТОП

E o erro provavelmente está aqui (destacado em amarelo)

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

É uma lata. Todas as cores são offset. Mas as cores surgiram. E na previsão, é tudo bom também....

Não crítico... mas não é uma vergonha...

 
Na descrição dos níveis Fibonacci na janela de propriedades, você pode alterar seus valores para níveis de preços via %$. Como obter o preço dos níveis de forma programática, não consigo encontrar.
 
Galim_V:
Na descrição dos níveis Fibonacci na janela de propriedades, você pode alterar seus valores para níveis de preços via %$. Como obter o preço dos níveis de forma programática, não consigo encontrar.

OBJPROP_LEVELVALUE

 
MakarFX:

OBJPROP_LEVELVALUE

Obrigado, Makar! Mas eu não sei como usá-lo. Preciso obter valores de preços de níveis de fibo padrão.

#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);
    } 
 }      

A função proibida me permite substituir os níveis padrão por níveis de preço. Mas onde posso obtê-los? Deve haver um em algum lugar.

 
Galim_V:

Obrigado, Makar! Mas eu não sei como usá-lo. Preciso obter valores de preços de níveis de fibo padrão.

A função proibida me permite substituir os padrões por outros de preço. Mas onde posso obtê-los? Em algum lugar eles estão.

Entre os preços de fibo, é 100% e todos os outros níveis são calculados a partir destes valores. Você pode calcular não apenas os valores padrão, mas quaisquer valores aproximadamente de acordo com esta fórmula:

Price_0 + (Price_1 - Price_0) * 0,27;

E a função proibida permite que você insira o mesmo "%S" na descrição do nível para que os níveis mostrem o preço.
 
Galim_V:

Obrigado, Makar! Mas eu não sei como usá-lo. Preciso obter valores de preços de níveis de fibo padrão.

A função proibida me permite substituir os padrões por outros de preço. Mas onde posso obtê-los? Em algum lugar eles existem.

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));
   }
}

É assim

 
Alekseu Fedotov:

Assim.

Isto é verificado? )))))

 
Alexey Viktorov:

Isto é verificado? )))))

O preço não aparece(

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
Razão: