MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 863

 

イゴール・マカヌ:もちろん、オフトピックです。ここで、あなたのコードに関するちょっとしたアイデアを紹介します。配列を使用する場合は、間隔を無制限に設定することができます。

CWork *Work[];

int OnInit()
  {
   if(ArrayResize(Work,3) != 3)
      ExpertRemove();
   Work[0] = new CWorkTime(StartHour_0,StartMinute_0,StopHour_0,StopMinute_0);
   Work[1] = new CWorkTime(StartHour_1,StartMinute_1,StopHour_1,StopMinute_1);
   Work[2] = new CWorkTime(StartHour_2,StartMinute_2,StopHour_2,StopMinute_2);

   return(INIT_SUCCEEDED);
  }
void OnDeinit(const int reason)
  {
   for(int i=0; i<ArraySize(Work)); i++)
      if(Work[i] != NULL)
         delete Work[i];
   ZeroMemory(Work);
  }

void OnTick()
  {
   for(int i=0; i<ArraySize(Work)); i++)
      if(Work[i].Disable())
        {
         Comment("Не торговое время!!!");
         return;
        }
/* work */
  }
 
Konstantin Nikitin:

イゴール・マカヌ:もちろん、オフトピックです。ここで、あなたのコードに関するちょっとしたアイデアを紹介します。配列を使用する場合、インターバルの数は無制限に定義できる。

なぜオフトピックなのか?- トピックは技術的なもので、私は技術的な問題についての議論は常にサポートします。


もちろん、ex-classの配列を使うこともできます。 私のクラスを何度かチェックしてみましたが、すべて正常に動作しているようです。分単位の間隔を設定し、任意のTSで取引することができます ;)


私に貿易の時間を分析するためにこの方法を作成するためのアイデアは、より多くの文字列のようにdatetime、および私のコードの意味 - 新しい一日まで、datetimeとして貿易の開始と終了をカウントするために一日これらの間隔を再計算する意味がない、それは新しい一日を来た - datetimeで再びすべてを再計算すると、datetime間の比較、それは非常に迅速に、すなわち、端末(テスター)をロードしませんが発生する必要があります。


Seric29 です。

なぜこのコードは動作しないのでしょうか?

クラスはコロン :: を使って記述すべきなのかもしれません。 別のポインタを指すポインタを作るという発想です。

シンタックスエラーがあります、このように表示されるはずです。

#include <Object.mqh>
class CArray : public CObject
  {
public:
   double            m_Array[100];
  };

void OnStart()
  {
   CArray *arr=new CArray;
   arr.m_Array[22]=1.23456;
  }
 
novichok2018:

こんにちは。

Alexey Viktorov 氏から引用のヒントをいただき、ありがとうございます - すべてうまくいきました。今週の月曜日は、ドイツ人が貿易を行い、イギリス人は休みという状況です。ユーロのポジションを開く 条件として、ポンドの古い値を使用していたことが判明しました。したがって、要求:両方のシンボルがこの日に取引されていることをコードでチェックを設定する方法をアドバイス?

ありがとうございます。

すみません、今日はドキュメントを読むのが億劫で。メモリーチップはとっくに燃え尽きていて、残っているのは硬化 症とマラスムスだけ です。

 
Alexey Viktorov:

すみません、今日はドキュメントを読むのが億劫で。そして、メモリーチップはとっくにほとんど燃え尽きていて、残っているのは硬化だけだ

まあ、自分のバカさ加減も十分だけど、まだ怠けてない。しかし、どこで読めばいいのか?見つからなかったんです。パソコンで目がおかしくなった。

 
novichok2018:

まあ、自分のバカさ加減も十分だけど、まだ怠けてない。しかし、どこで読めばいいのか?見つからなかったんです。パソコンで目をぐちゃぐちゃにした。

ドキュメントから

以下の場合、AccountInfoInteger(ACCOUNT_TRADE_ALLOWED)はfalseを返すことがあります。

  • トレードサーバーに接続しない。TerminalInfoInteger(TERMINAL_CONNECTED))で確認することができます。
  • 取引口座が読み取り専用に切り替わりました(アーカイブに送信されました)。
  • このアカウントでの取引は、トレードサーバー側で禁止されています。
  • 取引口座への接続が投資家モードで行われました。

そして、正確にそうでない場合は、他の選択肢を探します。

 
Alexey Viktorov:

ドキュメントより

そして、ちょっと違うなと思ったら、他の選択肢を探してみてください。

残念ながら、そうではありません。取引は口座で禁止されているわけではありません。ユーロでの取引は行っていますが、ポンドでの取引は行っていません。したがって、特定のシンボルでの取引を確認する必要があります。もしかしたら、このようなことに遭遇したことのある人、あるいは解決方法を知っている人がいるかもしれません。掲示板やググってもまだ見つからない。

 
novichok2018:

残念ながら、そうではありません。取引は口座内で禁止されていません。ユーロでの取引は行っていますが、ポンドでの取引は行っていません。その結果、特定のシンボルの取引を確認する必要があります。もしかしたら、このようなことに遭遇したことのある人、あるいは解決方法を知っている人がいるかもしれません。掲示板やgoogleではまだ見つかっていません。

ドキュメントには、他の関数も紹介されています

IsTradeAllowed(symbol,TimeCurrent()
TerminalInfoInteger(TERMINAL_TRADE_ALLOWED)
 

午後

MT4では、TrendLineオブジェクトの設定で「説明」欄に指定したテキストが、トレンドの左側(左端)に表示されます。どなたか、右端にテキストを表示する方法をご存じではありませんか?

 
Taras Slobodyanik:

ドキュメントには、他の関数も紹介されています

試してみました。

bool uk = IsTradeAllowed("GPBUSD",TimeCurrent());
bool de = IsTradeAllowed("EURUSD",TimeCurrent());

      if(de && uk) Alert("uk == true");

27日(月)も、イギリスでは休日であったにもかかわらず、真を 書き込む。

 
novichok2018:

試してみました。

27日(月)、イギリスでは休日だったにもかかわらず、trueと書いて ある。

では、休日や取引禁止を特定する必要があるのでしょうか?
27日にトレードが許可された。

週末であれば、休日/週末を識別するためのニュースパーサーが必要です。

理由: