エラー、バグ、質問 - ページ 42

 
Kos:
MQL5のプログラムがロードできなくなるのであれば、このような構造をコンパイルする意味はあるのでしょうか?

投稿ありがとうございました。condit 演算 子の NULL 解析エラーは修正されました。
 

インジケーターのダイナミックアレイの 最大数は?

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

インジケーターのダイナミックアレイの 最大数は?

ハードウェアのリソースによって制限されます。

メモリの空き容量

 
dentraf:

インジケーターのダイナミックアレイの 最大数は?

インジケーターアレイは512個以下です。一般的には、十分なメモリがあれば、いくらでも配列が作成できます。
 

このスクリプトは、この機能をテストするために書きました。

OrderCalcMargin()

がエラー4002を返しますが、何がいけなかったのでしょうか?

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

     }
  }
 

それはあなたが現在の 価格のための要求の構造を使用しない場合は、すべてがこのケースではゼロを返し、#AAのような楽器を除いて計算されている不思議です。

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
 
最初のオプションがうまくいかない理由がわかりました、私は、関数
SymbolInfoTick(SymbolName(i,false),pr);
をループの本文に追加して、要求されたシンボルの価格を取得することができます。
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());

     }
  }
AA型の楽器のNULL値に関する疑問はまだ残っている
 
sergey1294:

このスクリプトは、この機能をチェックするために書きました。

エラー4002を返しますが、何がいけなかったのでしょうか?


sergey1294 です。
最初のバージョンでうまくいかなかった理由がわかりました。要求されたシンボルの引用符を取得する関数をループ本体に書くべきだったのです。

助けると決めただけなのに...。:)

追記

他の人はどうか知らないが、#AAには 市場が閉じているようなものだ...。

 
のコードは、次のようなタイプであると理解してよろしいでしょうか。
AccountInfoDouble(ACCOUNT_FREEMARGIN) - OrderCalcMargin();
は、MT4関数のアナログです
AccountFreeMarginCheck()
 
sergey1294:
また、質問があるのですが、このタイプのコードはMT4の機能のアナログということでよろしいでしょうか?

オープンポジション がない場合は、その発言はおそらく正しいのでしょうが、オープンポジションがある場合は、ちょっと様子が違いますね...。