記事"Expert Advisorの限界と検証"についてのディスカッション - ページ 2

 

ありがとう。

 
double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_LIMIT);

'SYMBOL_VOLUME_LIMIT' - 宣言されていない識別子...............

'SymbolInfoDouble' - どのオーバーロードも関数呼び出しに適用できない。

私だけ?

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 
gumgum:

'SYMBOL_VOLUME_LIMIT' - 宣言されていない識別子...............

'SymbolInfoDouble' - どのオーバーロードも関数呼び出しに適用できない。

私だけ?

新しいビルドがリリースされれば、すべてが正常になります。ビルドを待っています。
 
Rosh:

できるか?

lot_max=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MAX);
 

SeriesInfoInteger() 関数についてもう1つ質問があります。

トピック「AccountInfo...」を作成する際に、 情報の関連性」について学びました。情報関連"というトピックを作成する際に、"ソフトウェア環境にキャッシュされた "データを使用する関数と、常に "実際のデータに直接アクセスできる "関数があることを知りました。

SeriesInfoInteger() 関数はどちらに属するのでしょうか?

 

次のコードはCheckVolumeValue 関数で使われている:

int ratio=(int)MathRound(volume/volume_step);

if(MathAbs(ratio*volume_step-volume)>0.0000001)

{

description=StringFormat("Объем не является кратным минимальной градации SYMBOL_VOLUME_STEP=%.2f, ближайший корректный объем %.2f",

volume_step,ratio*volume_step);

return(false);

}

しかし、この方が正しい:

int ratio = (int)MathRound((volume-min_volume)/volume_step);

if (MathAbs(ratio*volume_step+min_volume-volume)>0.0000001)

{

description=StringFormat("Объем не является кратным минимальной градации SYMBOL_VOLUME_STEP=%.2f, ближайший корректный объем %.2f",

  volume_step,ratio*volume_step+min_volume);

return(false);

}

なぜなら、体積変化の最小ステップは、最小値からカウントされなければならないからである。

 

そして、おそらくコードスニペット

//--- вычислим значение маржи

bool check=OrderCalcMargin(type,Symbol(),lots,last_tick.ask,margin);

に置き換えるべきだろう:

//--- вычислим значение маржи

double price = (type == ORDER_TYPE_BUY || type == ORDER_TYPE_BUY_LIMIT || type == ORDER_TYPE_BUY_STOP || type == ORDER_TYPE_BUY_STOP_LIMIT) ? last_tick.ask : last_tick.bid;

bool check=OrderCalcMargin(type,Symbol(),lots,price,margin);

削除済み  
添付のソース コードファイルとHTMLコード内のソースコードインセットは、お客様の便宜のために完全にポルトガル語に翻訳されました。
MQL5.community - User Memo
MQL5.community - User Memo
  • 2010.02.25
  • MetaQuotes Software Corp.
  • www.mql5.com
You have just registered and most likely you have questions such as, "How do I insert a picture to my a message?" "How do I format my MQL5 source code?" "Where are my personal messages kept?" You may have many other questions. In this article, we have prepared some hands-on tips that will help you get accustomed in MQL5.community and take full advantage of its available features.
 
Rashid Umarov:

MQL5の変更により、1つのシンボルに許容される全体の最大ボリュームは以下のように求めることができる:

旧バリアントは使用しないでください! 旧バリアントは使用しないでください!

この記事は修正され、新しいCheck_Order_And_Volume_Limits.mq5 エキスパート・コードが添付されています。

管理者様

この関数を 使用しようとしましたが、すべてのケースで0を返します。

私のMT5のビルドは2280です。

 
double orders_volume_on_symbol=PendingsVolume(symbol);


そのような関数は ありません。

そして、保留中の注文を含まないように関数を修正すると、0が表示されました。


double NewOrderAllowedVolume(string symbol)
  {
   double allowed_volume=0;
//--- 注文の最大量の制限を取得する
   double symbol_max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);
//--- シンボルによる体積の制限を得る
   double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_LIMIT);

//--- シンボルのオープンポジションの数量を取得する
   double opened_volume=PositionVolume(symbol);
   if(opened_volume>=0)
     {
      //--- すでに使用可能なボリュームを使用している場合
      if(max_volume-opened_volume<=0)
         return(0);

      //--- オープン・ポジションの出来高がmax_volumeを超えないこと。
      //double orders_volume_on_symbol=PendingsVolume(symbol);
      //allowed_volume=max_volume-opened_volume-orders_volume_on_symbol;
      allowed_volume=max_volume-opened_volume;
      if(allowed_volume>symbol_max_volume) allowed_volume=symbol_max_volume;
     }
   return(allowed_volume);
  }

max_volumeが0でopen_volumeが0だからです;

未決済のポジションがないのに、なぜ最大出来高が0になるのですか?

ビルド 2715

Documentation on MQL5: Constants, Enumerations and Structures / Named Constants / Predefined Macro Substitutions
Documentation on MQL5: Constants, Enumerations and Structures / Named Constants / Predefined Macro Substitutions
  • www.mql5.com
Predefined Macro Substitutions - Named Constants - Constants, Enumerations and Structures - MQL5 Reference - Reference on algorithmic/automated trading language for MetaTrader 5