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

 
Vladislav Andruschenko:

が、表には次のような数値が表示されています。

フィル・オア・キル

シンボルフィリングフォック

1

このポリシーは、指定されたボリュームでのみ取引を実行できることを意味します。必要な量の金融商品が市場に存在しない場合、注文は執行されません。必要な容量は、現在市販されているいくつかのオファーを使って満たすことができます。

即時またはキャンセル

シンボルフィリングアイオク

2

この場合、トレーダーは、注文で示された数量の範囲内で、市場で入手可能な最大限の数量で取引を行うことに同意する。注文を完全に満たすことができない場合、注文可能な数量は満たされ、残りの数量はキャンセルされます。IOC注文の使用可否は、取引サーバーで決定されます。

戻る

識別子がない

このポリシーは、成行注文(買い・売り)、指値・逆指値注文、および成行または取引所取引のシンボルに対してのみ使用されます。部分的に注文が埋まった場合、残りの数量の成行注文または指値注文はキャンセルされずに、さらに処理されます。

しかし、データの取り違えがあるに違いない!

ヘルプを全部読んでないんですね。

フラグの組み合わせにより、各シンボルに対して複数のモードを設定することができます。フラグの組み合わせは SYMBOL_FILLING_FOK|SYMBOL_FILLING_IOC のように、論理 (| )で表現さ れるある特定のモードが機器に許可されているかどうかを確認するには、論理 AND (&) の結果をモードフラグと比較 する 必要が あります。

 

シンボルの場合、SYMBOL_FILLING_MODE プロパティはフラグの組み合わせを意味します - すなわち、そのシンボルを取引する際に許可される充填モードを記述 します。

ドキュメントに書かれているとおりのチェックをしてみましたか?

В режимах исполнения "По запросу" и "Немедленный" для рыночных ордеров всегда используется политика заполнения Все/Ничего, а для лимитных ордеров - режим "Вернуть". В данном случае, при от отсылке ордеров функциями OrderSend или OrderSendAsync тип заполнения для них можно не указывать.

市場別」及び「取引所別」の執行モードでは、「戻り売り」の充填方針は、すべての注文 タイプで常に許可されます。他の注文タイプの許容度は、SYMBOL_FILLING_FOK および SYMBOL_FILLING_IOC プロパティを使用して確認することができる。

//+------------------------------------------------------------------+
//| 指定された充填モードの許容性をチェックします。
//+------------------------------------------------------------------+
bool IsFillingTypeAllowed(文字列シンボル,int fill_type)
{
//--- フィリングモードを記述するプロパティの値を取得 する。
int filling=(int)SymbolInfoInteger(symbol,SYMBOL_FILLING_MODE);
//--- fill_type モードが有効な場合、true を返します
return((filling&fill_type)==fill_type);
}


 
Rashid Umarov:

シンボルの場合、SYMBOL_FILLING_MODE プロパティはフラグの組み合わせを意味します - すなわち、そのシンボルを取引する際に許可される充填モードを記述 します。

ドキュメントに書かれているとおりのチェックをしてみましたか?


次のような解決策が有効でした。

         switch((int)SymbolInfoInteger(Symbol(), SYMBOL_FILLING_MODE))
   {
   case SYMBOL_FILLING_FOK:
      request.type_filling=ORDER_FILLING_FOK;
      break;
   case SYMBOL_FILLING_IOC:
      request.type_filling=ORDER_FILLING_IOC;
      break;
   default:
      request.type_filling=ORDER_FILLING_RETURN;
   }
 
Vladislav Andruschenko:

このソリューションが役に立った

ヘルプをよく読むと、両方のモードが利用可能な場合は処理されないことがわかります -SymbolInfoInteger の値は(SYMBOL_FILLING_FOK | SYMBOL_FILLING_IOC) となります。
 

そして、このコードで「RoboForex-MetaTrader 5」サーバーで確認することができます。

//+------------------------------------------------------------------+
//|                                                 Info_FILLING.mq5 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property description "Варианты исполнения ордера по объему"
#include<Trade\Trade.mqh>
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
// Все/Ничего     SYMBOL_FILLING_FOK   1
// Все/Частично   SYMBOL_FILLING_IOC   2
// Вернуть        Идентификатор отсутствует
   Print("Все/Ничего: ",IsFillingTypeAllowed(Symbol(),SYMBOL_FILLING_FOK));
   Print("Все/Частично: ",IsFillingTypeAllowed(Symbol(),SYMBOL_FILLING_IOC));
   Print("Вернуть: ",IsFillingTypeAllowed(Symbol(),NULL));

   CTrade oTrade;
   switch((int)SymbolInfoInteger(Symbol(),SYMBOL_FILLING_MODE))
     {
      case SYMBOL_FILLING_FOK:
         Print("ORDER_FILLING_FOK");
         break;
      case SYMBOL_FILLING_IOC:
         Print("ORDER_FILLING_IOC");
         break;
      default:
         Print("ORDER_FILLING_RETURN");
     }
  }
//+------------------------------------------------------------------+ 
//| проверяет разрешенность указанного режима заполнения             | 
//+------------------------------------------------------------------+ 
bool IsFillingTypeAllowed(string symbol,int fill_type)
  {
//--- получим значение свойства, описывающего режим заполнения 
   int filling=(int)SymbolInfoInteger(symbol,SYMBOL_FILLING_MODE);
//--- вернем true, если режим fill_type разрешен 
   return((filling&fill_type)==fill_type);
  }
//+------------------------------------------------------------------+

そして、切り替えた結果。

2015.12.22 18:13:09.946 Info_FILLING (AUDCAD.m,D1)      Все/Ничего: true
2015.12.22 18:13:09.946 Info_FILLING (AUDCAD.m,D1)      Все/Частично: true
2015.12.22 18:13:09.946 Info_FILLING (AUDCAD.m,D1)      Вернуть: true
2015.12.22 18:13:09.946 Info_FILLING (AUDCAD.m,D1)      ORDER_FILLING_RETURN


スイッチのバリエーションが、真実を語っていないことがお分かりいただけると思います。しかし、ここではその全貌を知ることができるドキュメントからの例を紹介します。

 

の何が問題なのか?

MarketInfo(Symbol(),MODE_MARGININIT) と SymbolInfoDouble(Symbol(),SYMBOL_MARGIN_INITIAL) の2種類があります。

なぜゼロが返ってくるのか?

 
Vladimir Pastushak:

の何が問題なのか?

MarketInfo(Symbol(),MODE_MARGININIT) と SymbolInfoDouble(Symbol(),SYMBOL_MARGIN_INITIAL) の2種類があります。

なぜゼロを返すのか ?

半年前から融資額の計算に問題があり、ヘルプの情報とサイトの情報が一致しないヘルプの情報とサイトの情報が実際の情報と一致しない、開発者は、正しい記述をしてください

担保の計算

エラーMetaTrader 5 MQL5開設開始:2015.07.13 16:23,#1259415

以下は、MQL5のヘルプにある例です。

シンボルカルクモードFX

Forexモード - FXのための利益とマージン計算

マージン:ロット*契約サイズ/レバレッジ

フォワードクォートの計算式です。 リバースクォートはクロス、サードクォートはクロスで異なります。サイトも同じエラーになります。

だから、どの市場タイプをとっても、計算式はかなり怪しい...。

そして、MarketInfo(Symbol(),MODE_MARGININIT) と SymbolInfoDouble(Symbol(),SYMBOL_MARGIN_INITIAL) が0を返すことを今日知りました。

しかし、このリソースには奇妙な文章もある。https://metaquotes5.wordpress.com/2012/08/ 私の理解する限り、それはMetaQuotesのブログである。

What are Expert Magic Numbers?
  • 2012.08.11
  • skebanga
  • metaquotes5.wordpress.com
Expert magic numbers are ids given to a particular expert advisor. Care should be taken to ensure the ids are unique. This is because the magic number is used by the MetaTrader back end to know which expert advisor to send information to. For example, when a trade notification is...
 
周りは敵だらけです。給料日前の女以外、誰も俺たちを欲しがらない。
 
Алексей Тарабанов:
どこにでも敵はいるのです。給料日前の女以外、誰も俺たちを必要としていない。

ご挨拶 アレクセイ

もし、MT5のインジケータ iPulsarを書き換える ことができるのであれば、コードベースで書き換えてください。

ありがとうございました。


 

同僚の皆さん、こんにちは。

すみません、このスレを見る前に本スレでごちゃごちゃ言ってしまいました。

FORTSのMT5 Expert AdvisorでBAY_STOPまたはSELL_STOP注文を出すと、エラー10022:"Invalidorder expiry date in request "が表示されます。

有効期限はどうでもいいのですが、注文を設定するだけのパラメータが見つかりません。FXではそのような問題はありません。私のブローカーはOPENです。テスターでエラーが発生する。