Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1367

 
Artyom Trishkin:

Fico... non si aspettava.... qualcosa del genere dal passato... , grazie.

 
DanilaMactep:

Per la prima parte (conteggio degli ordini) lo consiglio:

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

Prossimo

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 l'errore è probabilmente qui (evidenziato in giallo)

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

E' insignificante. Tutti i colori sono compensati. Ma i colori sono emersi. E anche sull'anteprima, è tutto buono....

Non critico... ma non è un pisciatoio...

 
Nella descrizione dei livelli di Fibonacci nella finestra delle proprietà, potete cambiare i loro valori in livelli di prezzo tramite %$. Come ottenere il prezzo dei livelli programmaticamente, non riesco a trovare.
 
Galim_V:
Nella descrizione dei livelli di Fibonacci nella finestra delle proprietà, potete cambiare i loro valori in livelli di prezzo tramite %$. Come ottenere il prezzo dei livelli programmaticamente, non riesco a trovare.

OBJPROP_LEVELVALUE

 
MakarFX:

OBJPROP_LEVELVALUE

Grazie, Makar! Ma non so come usarlo. Ho bisogno di ottenere i valori di prezzo dei livelli fibo standard.

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

La funzione Banned mi permette di sostituire lo standard con i livelli di prezzo. Ma dove li prendo? Deve essercene uno da qualche parte.

 
Galim_V:

Grazie, Makar! Ma non so come usarlo. Ho bisogno di ottenere i valori di prezzo dei livelli fibo standard.

La funzione Banned mi permette di sostituire quelli standard con quelli di prezzo. Ma dove li prendo? Da qualche parte ci sono.

Tra i prezzi di fibo, è 100% e tutti gli altri livelli sono calcolati da questi valori. È possibile calcolare non solo valori standard, ma qualsiasi valore approssimativamente secondo questa formula:

Prezzo_0 + (Prezzo_1 - Prezzo_0) * 0,27;

E la funzione banned ti permette di inserire lo stesso "%S" nella descrizione del livello affinché i livelli mostrino il prezzo.
 
Galim_V:

Grazie, Makar! Ma non so come usarlo. Ho bisogno di ottenere i valori di prezzo dei livelli fibo standard.

La funzione Banned mi permette di sostituire quelli standard con quelli di prezzo. Ma dove li prendo? Da qualche parte esistono.

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

È così

 
Alekseu Fedotov:

Come questo.

È controllato? )))))

 
Alexey Viktorov:

È verificato? )))))

Il prezzo non si vede (

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