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

 
svds75:
いいえ、手動で設定し、プログラムで確認する必要があります。
それから、可視フラグを 読んで、定数と論理的な&をする必要があります。
 

こんな感じ。

   long cf=ObjectGetInteger(0,"name",OBJPROP_TIMEFRAMES);
   Alert(((cf&OBJ_PERIOD_H1)==OBJ_PERIOD_H1) || cf==0);
H1 のvisibility フラグが 設定されている場合は true になります。
 
Integer:
そして、visibilityフラグを 読み込んで、定数との論理和を行う必要があります。

ということであれば。

ObjectGetInteger(0,"line",OBJPROP_TIMEFRAMES,OBJ_PERIOD_W1&OBJ_PERIOD_MN1,res);

または

ObjectGetInteger(0,"line",OBJPROP_TIMEFRAMES,OBJ_PERIOD_W1&&OBJ_PERIOD_MN1,res);
同じことです。
 
svds75:

ということであれば。

または

同じことです。
いいえ。enumerationでgetをする必要はない。取得し、必要な時間枠のフラグが設定されているかどうかを確認するだけです。上記は一例です。
 
svds75:

ということであれば。

または

同じことです。

resはどのマッピングでも常に1より大きいので、resで何が返されるかを見てください、したがってbool(res)はres=0のときだけ0またはfalseを返します。

型変換や比較をぞんざいに使っている

OBJ_NO_PERIODS

0

オブジェクトはどの時間軸でも表示されない

OBJ_PERIOD_M1

0x00000001

オブジェクトは1分足チャートにプロットされます

OBJ_PERIOD_M2

0x00000002

オブジェクトは2分足チャートにプロットされます

OBJ_PERIOD_M3

0x00000004

オブジェクトは3分足チャートにプロットされます

OBJ_PERIOD_M4

0x00000008

オブジェクトは4分足チャートにプロットされます

OBJ_PERIOD_M5

0x00000010

オブジェクトは5分足チャートにプロット

OBJ_PERIOD_M6

0x00000020

オブジェクトは6分足チャートにプロットされます

OBJ_PERIOD_M10

0x00000040

オブジェクトは10分足チャートにプロット

OBJ_PERIOD_M12

0x00000080

オブジェクトは12分足チャートにプロット

OBJ_PERIOD_M15

0x00000100

オブジェクトは15分足チャートにプロット

OBJ_PERIOD_M20

0x00000200

オブジェクトは20分足チャートにプロット

OBJ_PERIOD_M30

0x00000400

オブジェクトは30分足チャートにプロット

OBJ_PERIOD_H1

0x00000800

オブジェクトは1時間足チャートにプロット

OBJ_PERIOD_H2

0x00001000

オブジェクトは2時間足チャートにプロット

OBJ_PERIOD_H3

0x00002000

オブジェクトは3時間足チャートにプロット

OBJ_PERIOD_H4

0x00004000

オブジェクトは4時間足チャートにプロット

OBJ_PERIOD_H6

0x00008000

6時間足チャートにオブジェクトをプロット

OBJ_PERIOD_H8

0x00010000

オブジェクトは8時間足チャートにプロットされます

OBJ_PERIOD_H12

0x00020000

オブジェクトは12時間足チャートにプロットされます

OBJ_PERIOD_D1

0x00040000

オブジェクトは日足チャートにプロットされる

OBJ_PERIOD_W1

0x00080000

オブジェクトは週足チャートにプロットされる

OBJ_PERIOD_MN1

0x00100000

オブジェクトは月足チャートにプロットされます

obj_all_periods

0x001fffff

オブジェクトはすべてのタイムフレームに プロットされます。

 
Integer:

これでよしとする。

H1 のvisibility フラグが 設定されている場合は true になります。
うまくいってますね、ありがとうございます。
 
meat:

前回の記事の続きですが、科学的な手法でバグの原因となっている問題箇所を見つけることが出来ました。

そんな機能を持ったライブラリーがあるんです。

以下はメインファイルです。

その結果、Expert Advisor が動作せず、ログに「EX5 の読み込みに失敗しました」と表示されます。

投稿ありがとうございます、修正しました。
 

こんにちは。OnInit関数でEAをロックしたのですが、EAをオフにしてタイムフレームを変更するとターミナルがハングアップする(ブレーキ後タイムフレームは変更しない)のはそのせいでしょう。そこで質問なのですが、ハングアップが原因なのでしょうか?その場合、アルゴリズムをOnTickに移動させれば修正されるのでしょうか?もし、そうでなければ、何が役に立つのでしょうか?

追記:ループにはSleepという関数があり、端末に負荷がかからないようにしています。入力フィールドは、ループ内で読み込まれる。

 
king20:

こんにちは。OnInit関数でEAをロックしたのですが、EAをオフにしてタイムフレームを変更するとターミナルがハングアップするようです(ブレーキ後タイムフレームが変更されない)。そこで質問なのですが、ハングアップが原因なのでしょうか?その場合、アルゴリズムをOnTickに移動させれば修正されるのでしょうか?もし、そうでなければ、何が役に立つのでしょうか?

追記:ループにはSleepという関数があり、端末に負荷がかからないようにしています。入力フィールドは、ループ内で読み込まれる。

ハードディスクをフォーマットする。
 
king20:

こんにちは。OnInit関数でEAをロックしたのですが、EAをオフにしてタイムフレームを変更するとターミナルがハングアップする(ブレーキ後タイムフレームは変更しない)のはそのせいでしょう。そこで質問なのですが、ハングアップが原因なのでしょうか?その場合、アルゴリズムをOnTickに移動させれば修正されるのでしょうか?もし、そうでなければ、何が役に立つのでしょうか?

追記:ループにはSleepという関数があり、端末に負荷がかからないようにしています。入力フィールドは、ループ内で読み込まれる。

OnInit - 初期化のみに使用されます。すべての計算は、OnTick、OnTimerなど、さらに行わなければならない。

入力フィールドの変化を知る必要がある場合、そのための標準ライブラリがあります: https://www.mql5.com/ru/docs/standardlibrary/controls/cedit

Документация по MQL5: Стандартная библиотека / Классы для создания панелей и диалогов / CEdit
Документация по MQL5: Стандартная библиотека / Классы для создания панелей и диалогов / CEdit
  • www.mql5.com
Стандартная библиотека / Классы для создания панелей и диалогов / CEdit - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5