"ダミー "からの質問 - ページ 117

 
meneo:

どうしてでしょう?(デバッグモードでの変数kの計算と全変数の値を参照)

lparamはlong型(整数),wdpixはint型(整数)で,lparam/wdpixはprivate long型(整数)です.lparam < wdpixなので、lparam/wdpix==0となります。

MQL5リファレンス / 言語の基礎 / データ型 / 型変換を参照してください。

 
meneo:

チャート上の隣り合ったバーの隙間をどのように説明するのですか?

もし表示された場合は、サービスデスクに連絡して、エラーについてお知らせください。
 
皆さん、ありがとうございました。)
 
どのエキスパートが起動しているかは、別のウィンドウで確認できますか?
 
meneo:
どのExpert Advisorが別ウィンドウで動作しているか分かりますか?
それは(私が見逃していなければ)不可能だと思われる。 しかし、自分のものと「他者」を「区別」することは可能である。プロジェクト 内に複数のプログラムがある場合、カスタムメッセージによって礼儀の交換のプロトコルを指定することができます。挨拶をする、帽子を取る、ポケットを出す、などです。
 

enumeration by enumerationも可能ですか?

このように?

for (int i =PERIOD_M1;i<=PERIOD_D;i++)

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков - Документация по MQL5
 
meneo:

enumeration by enumerationも可能ですか?

このように?

for (int i =PERIOD_M1;i<=PERIOD_D;i++)

これではうまくいきません。

これについては......やってみないとわからない。

for (ENUM_TIMEFRAMES i = PERIOD_M1;i<=PERIOD_D;i++) {}

理論的には」チャンスがあるのですが、なぜかうまくいかないような気がします。:)

 

まあ、やってみたんですけどね。

void OnStart()
  {
//---
   for (ENUM_TIMEFRAMES i = PERIOD_M1;i<=PERIOD_D;i++) { Print(EnumToString(i));}
  }
//+------------------------------------------------------------------+

コンパイルする気にもならない。

'ForEnum.mq5' ForEnum.mq5 1 1
'i' - 想定外のトークン ForEnum.mq5 15 25
'i' - 宣言されていない識別子 ForEnum.mq5 15 25
'PERIOD_D' - 宣言されていない識別子 ForEnum.mq5 15 42
'i' - EnumToString のパラメータは、ForEnum の列挙でなければなりません。mq5 15 77
4 エラー(s), 0 警告(s) 5 1

でも、違法性はないようです。

 
MetaDriver:

試してみました。

プログラマーはコンパイルする気もない。

しかも、何の違法性もないようです。


enum を扱うには、少なくとも次のような関数を追加する必要があります。

enum::GetName およびenum::GetValue

そして、各言語 構成要素

その後、MQLによって列挙が自動化されます

 

もちろん、これは有効です。

#property script_show_inputs

input  ENUM_TIMEFRAMES P = PERIOD_D1;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   for (int i = PERIOD_M1;i<=P;i++)  // { Print(EnumToString(ENUM_TIMEFRAMES(i)));}
    {
      string S=EnumToString(ENUM_TIMEFRAMES(i));
      if (StringGetCharacter(S,0)=='P')   

        {{{{ Print(S);  }}}}

    }

  }

そして素晴らしいことに、Pが予期せぬトークン であるとか、宣言されていない識別子 であるとかいうことはないのです。

それどころか、常連客として、あらゆる利便性を提供してくれます。



不思議だ...... ;)