は、実行ポリシーを返します。

 
long  SymbolInfoInteger(_Symbol,SYMBOL_FILLING_MODE);
戻り値

iok is 2
fok is 1
gtc is 0

これでよいのでしょうか?2つのポリシーを用意することはできないのでしょうか?

 
Ivan_Invanov:
戻り値

iok is 2
fok is 1
gtc is 0

これでよいのでしょうか?2つのポリシーを用意することはできないのでしょうか?

1つでも2つでもよい ...

チェック する。

//+------------------------------------------------------------------+
//| проверяет разрешенность указанного режима заполнения             |
//+------------------------------------------------------------------+
bool IsFillingTypeAllowed(string symbol,int fill_type)
  {
//--- получим значение свойства, описывающего режим заполнения
   int filling=(int)SymbolInfoInteger(symbol,SYMBOL_FILLING_MODE);
//--- вернем true, если режим fill_type разрешен
   return((filling&fill_type)==fill_type);
  }
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Для получения текущей рыночной информации служат функции SymbolInfoInteger(), SymbolInfoDouble() и SymbolInfoString(). В качестве второго параметра этих функций допустимо передавать один из идентификаторов из перечислений ENUM_SYMBOL_INFO_INTEGER, ENUM_SYMBOL_INFO_DOUBLE и ENUM_SYMBOL_INFO_STRING соответственно. Некоторые символы (как правило...
 

のようなビットチェックが必要です。

ENUM_ORDER_TYPE_FILLING OrderTypeFilling(const string symbol)
{
 int FillingFlags = (int)SymbolInfoInteger(symbol, SYMBOL_FILLING_MODE);
 
 if((FillingFlags & SYMBOL_FILLING_FOK) == SYMBOL_FILLING_FOK)
                                     return ORDER_FILLING_FOK;
 else 
 if((FillingFlags & SYMBOL_FILLING_IOC) == SYMBOL_FILLING_IOC)
                                     return ORDER_FILLING_IOC;
 else
                                     return ORDER_FILLING_RETURN;
}
 
Vladimir Karputov:

一人か二人かもしれない ...

検証を 行う。

ありがとうございます。また、公式アドバイザーの例ですが、なぜif文にbreakと書くことがあるのか、説明していただけますか?
if(x>0.0)
break;
if(x<0.0)
y++;

なぜ返品と同じにならないのか。Return は制御を呼び出し側のプログラムに戻し、次のオペレータに進みます。ブレークで次のオペレータに強制的に移行します。呼び出し側のプログラムは、次の演算子を無視することができますか?

 
Ivan_Invanov:
ありがとうございます。また、なぜbreakがif文に書かれることがあるのか、公式アドバイザーの例で説明してもらえますか?

なぜ返品と同じにならないのか。Returnは、呼び出したプログラムに制御を戻し、次の文に進みます。break は、プログラムを強制的に次の演算子へ移行させます。呼び出し側のプログラムは、次の演算子を無視することができますか?

このドキュメントへのリンクを教えてください。

if(x>0.0)
break;
if(x<0.0)
y++;

 
これはMoving Average v1.00 2009-2017 .It is a example in the mt5 terminal.これはMoving Average v1.00のものです。64行目
 
Ivan_Invanov:
これはMoving Average v1.00 2009-2017 .It's an example in mt5 terminalからです。64行目

1.文脈からコードを取り出そうとしないでください。

2.エンドブレークオペレーターの ヘルプをよく読んでください。

3.タスク1とタスク2が完了してから、質問を続けることができます。

Документация по MQL5: Основы языка / Операторы / Оператор завершения break
Документация по MQL5: Основы языка / Операторы / Оператор завершения break
  • www.mql5.com
Основы языка / Операторы / Оператор завершения break - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Vladimir Karputov:

1.文脈からコードを取り出そうとしないでください。

2.エンドブレークオペレーターの ヘルプをよく読んでください。

3.タスク1とタスク2が完了してから、質問を続けることができます。

ありがとうございます。掲示板を乱雑にしないために、スレッドを削除します。あ、ここってスレッド削除禁止なんだ。
 
Vladimir Karputov:

一人か二人かもしれない ...

テスト中 です。

よくわからないのですが、1つでも2つでもいいということですよね。関数内には変数が1つだけあります。例を挙げて教えてください。
 
Ivan_Invanov:
よくわからないんだけど、1人かもしれないし2人かもしれないってことでしょ?関数内には変数が1つだけあります。例を挙げて教えてください。

iok is 2
fok is 1
gtc is 0

iocとfokの場合、何を返すか

 
Ivan_Invanov:
よくわからないのですが、1つでも2つでもいいということですよね。関数内には変数が1つだけあります。例を挙げて教えてください。

CTradeトレードクラスでの例最初に'SYMBOL_FILLING_FOK' をチェックし、次に'SYMBOL_FILLING_IOC' をチェックする。

//+------------------------------------------------------------------+
//| Set order filling type according to symbol filling mode          |
//+------------------------------------------------------------------+
bool CTrade::SetTypeFillingBySymbol(const string symbol)
  {
//--- get possible filling policy types by symbol
   uint filling=(uint)SymbolInfoInteger(symbol,SYMBOL_FILLING_MODE);
   if((filling&SYMBOL_FILLING_FOK)==SYMBOL_FILLING_FOK)
     {
      m_type_filling=ORDER_FILLING_FOK;
      return(true);
     }
   if((filling&SYMBOL_FILLING_IOC)==SYMBOL_FILLING_IOC)
     {
      m_type_filling=ORDER_FILLING_IOC;
      return(true);
     }
//---
   return(false);
  }


チェックは「ANDビット演算」を用いて行う。

ビット単位のAND演算

2値表現xとyのビット単位のAND演算。この式の値は,x と y がともに 0 でないすべてのビットに 1 (TRUE) を含み,それ以外のすべてのビットに 0 (FALSE) を含む。

b = ((x & y) != 0);

   char a='a',b='b';
//--- операция И
   char c=a&b;
   Print("a = ",a,"  b = ",b);
   Print("a & b = ",c);
// Результат будет такой:
// a = 97   b = 98
// a & b = 96


ビット演算の 詳細はこちら

Документация по MQL5: Основы языка / Операции и выражения / Побитовые операции
Документация по MQL5: Основы языка / Операции и выражения / Побитовые операции
  • www.mql5.com
Дополнение до единицы значения переменной. Значение выражения содержит 1 во всех разрядах, в которых значение переменной содержит 0, и 0 во всех разрядах, в которых значения переменной содержит 1. Сдвиг вправо Двоичное представление x сдвигается вправо на y разрядов. Если сдвигаемое значение имеет беззнаковый тип, то осуществляется логический...
理由: