Errori, bug, domande - pagina 42

 
Kos:
Che senso ha compilare una tale costruzione se porterà all'impossibilità di caricare il programma MQL5?

Grazie per il post. L'errore di analisi del NULL per l'operatore condit è stato corretto.
 

Qual è il numero massimo di array dinamici in un indicatore?

Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
  • www.mql5.com
Основы языка / Типы данных / Объект динамического массива - Документация по MQL5
 
dentraf:

Qual è il numero massimo di array dinamici in un indicatore?

Le limitazioni sono dettate dalle vostre risorse hardware.

Quanta memoria è disponibile.

 
dentraf:

Qual è il numero massimo di array dinamici in un indicatore?

Non ci sono più di 512 matrici di indicatori. In generale tutti gli array - tanti quanti sono quelli che hanno abbastanza memoria
 

ha scritto questo script per controllare la funzione

OrderCalcMargin()

restituisce l'errore 4002, cosa ho fatto di sbagliato?

void OnStart()
  {
   int total=SymbolsTotal(false);
   double marginbay;
   double marginsell;
   MqlTick pr;
   for(int i=0;i<=total;i++)
     {
      if(OrderCalcMargin(ORDER_TYPE_BUY,SymbolName(i,false),1.0,pr.ask,marginbay))
         Print("Маржа для покупки "+SymbolName(i,false)+" = ",DoubleToString(marginbay));
      else Print("Ошибка  № - ",GetLastError());

      if(OrderCalcMargin(ORDER_TYPE_SELL,SymbolName(i,false),1.0,pr.bid,marginsell))
         Print("Маржа для продажи "+SymbolName(i,false)+" = ",DoubleToString(marginsell));
      else Print("Ошибка  № - ",GetLastError());

     }
  }
 

è strano se non si utilizza la struttura della richiesta per i prezzi correnti, conta tutto tranne che per gli strumenti come #AA in questo caso restituisce zero, mi chiedo perché? come poi calcolare il margine per tali strumenti

void OnStart()
  {
   int total=SymbolsTotal(false);
   double marginbay;
   double marginsell;
   //MqlTick pr;
   for(int i=0;i<=total;i++)
     {
      if(OrderCalcMargin(ORDER_TYPE_BUY,SymbolName(i,false),1.0,SymbolInfoDouble(SymbolName(i,false),SYMBOL_ASK),marginbay))
         Print("Маржа для покупки "+SymbolName(i,false)+" = ",DoubleToString(marginbay));
      else Print("Ошибка  № - ",GetLastError());

      if(OrderCalcMargin(ORDER_TYPE_SELL,SymbolName(i,false),1.0,SymbolInfoDouble(SymbolName(i,false),SYMBOL_BID),marginsell))
         Print("Маржа для продажи "+SymbolName(i,false)+" = ",DoubleToString(marginsell));
      else Print("Ошибка  № - ",GetLastError());

     }
  }
Документация по MQL5: Получение рыночной информации / SymbolInfoTick
Документация по MQL5: Получение рыночной информации / SymbolInfoTick
  • www.mql5.com
Получение рыночной информации / SymbolInfoTick - Документация по MQL5
 
Ho capito perché la prima opzione non funzionava, avrei dovuto scrivere la funzione
SymbolInfoTick(SymbolName(i,false),pr);
nel corpo del ciclo per ottenere la quotazione del simbolo richiesto.
void OnStart()
  {
   int total=SymbolsTotal(false);
   double marginbay;
   double marginsell;
   MqlTick pr;
   for(int i=0;i<=total;i++)
     {
      SymbolInfoTick(SymbolName(i,false),pr);
      if(OrderCalcMargin(ORDER_TYPE_BUY,SymbolName(i,false),1.0,pr.ask,marginbay))
         Print("Маржа для покупки "+SymbolName(i,false)+" = ",DoubleToString(marginbay));
      else Print("Ошибка  № - ",GetLastError());

      if(OrderCalcMargin(ORDER_TYPE_SELL,SymbolName(i,false),1.0,pr.bid,marginsell))
         Print("Маржа для продажи "+SymbolName(i,false)+" = ",DoubleToString(marginsell));
      else Print("Ошибка  № - ",GetLastError());

     }
  }
La questione dei valori nulli degli strumenti di tipo #AA è ancora rilevante
 
sergey1294:

ha scritto questo script per controllare la funzione

Restituisce l'errore 4002, cosa ho fatto di sbagliato?


sergey1294:
Ho capito perché la prima versione non funzionava, avrei dovuto scrivere la funzione nel corpo del ciclo per ottenere le citazioni per il simbolo richiesto.

Decidi semplicemente di aiutare... :)

PS

Non so gli altri, ma il mercato è piuttosto chiuso per #AA...

 
Ho capito bene che un codice del tipo
AccountInfoDouble(ACCOUNT_FREEMARGIN) - OrderCalcMargin();
è un analogo della funzione MT4
AccountFreeMarginCheck()
 
sergey1294:
Ho anche una domanda, se ho capito bene, che questo tipo di codice è un analogo della funzione di MT4

Se non ci sono posizioni aperte l'affermazione sarà probabilmente corretta, se ci sono posizioni aperte il quadro è un po' diverso...