MT5への願い - ページ 31

 

ご検討ください


MQL5にインジケーターやエキスパート、スクリプトから変更できる機能の追加を提案

窓際のマックスバー...

プログラム制御可能な制限を設けると便利な場合がある



 
開発者の皆様へ。私のリクエスト18097に 注目してください(このことは議論の余地があると理解していますが、それでも)


追記

また、可能であれば、通常モードでテストを行う場合、最適化 結果と最適化グラフを削除するようにしてください。

それとも、いつでも見られるというのは、そんな芸当なんでしょうか?

 
Interesting:


追記

また、可能であれば、通常モードでテストを行う場合、最適化結果と最適化グラフを削除するようにしてください。

それとも、いつでも見られるようにするための仕掛けなのでしょうか?

そのような提案には、異議を唱えたい。最適化後、結果を分析するために、通常モードで複数のパスを別々にチェックする必要があります(該当するパスをクリックすることで実現)。通常モードでの最初のテスト後に最適化の結果が消えて しまうと、その結果を使って作業する貴重な機会が失われてしまいます。

 
Yedelkin:

私はこの提案に異議を唱えたい。最適化した後、通常モードで多くのパスを個別にテストして結果を分析する必要があります(該当するパスをクリックすることで実現)。通常モードでの最初のテスト後に最適化の結果が消えてしまうと、その結果を使って作業する貴重な機会が失われてしまいます。

まあ、主張しない、というのがこのセリフなのですが......>それとも、いつでも見られるというのは、そんな芸当なのでしょうか?

 

1)実装されているものではなく、通常のイベントを追加する必要があります。

最初に頭に浮かんだのは

OnBar、OnBarClose、OnQuote、OnDomChanged...

OnPositionOpened,OnPositionClosed...

OnConnected,Ondisconnected...

リクエストステータスの変更など

2) 人間のようなドキュメントを作る、例えばここhttp://msdn.microsoft.com/en-us/library/system.data.aspx

3) 「APIを大衆に届ける」 -)

ps 開発者は、初心者向けのソフトを作っているか、自分がそうであるかのどちらかだと思う。

System.Data Namespace ()
System.Data Namespace ()
  • msdn.microsoft.com
The namespace provides access to classes that represent the ADO.NET architecture. ADO.NET lets you build components that efficiently manage data from multiple data sources. In a disconnected scenario such as the Internet, ADO.NET provides the tools to request, update, and reconcile data in multiple tier systems. The ADO.NET architecture is...
 
anubis:

1)実装されているものではなく、通常のイベントを追加する必要があります。

最初に頭に浮かんだのは

OnBar、OnBarClose、OnQuote、OnDomChanged...

OnPositionOpened,OnPositionClosed...

OnConnected,Ondisconnected...

リクエストステータスの変更など

2) 人間のようなドキュメントを作る、例えばここhttp://msdn.microsoft.com/en-us/library/system.data.aspx

3) 「APIを大衆に届ける」 -)

ps ps 開発者は初心者のためにソフトを作るか、自分が初心者のようなものであるかのどちらかだと思います。

USERイベントなんて のもあるんですね。自分でいくつでも実装できる。

OnConnectedとOnDisconnectedのイベントをタイマーでキャッチするのは以前からやっていたことです。必要であれば、OnBarやOnBarCloseなどのイベントも作成することができます。

そして、このようなブロックの助けを借りて、OnChartEventで それらを簡単にキャッチすることができます(ヘルプにすべて書いてあります、なぜ車輪を再発明するのですか?)

  if(id>CHARTEVENT_CUSTOM)
  //User event is received / Получено пользовательское событие
  {
  }

追記

そして、クラスレベルでは、どんな(まあ、ほとんど)イベントにも対応できる......。

 
Interesting:

USERイベントなんて のもあるんですね。自分でいくつでも実装できる。

OnConnectedとOnDisconnectedをタイマーでキャッチするのは以前からやっていたことです。必要であれば、OnBarやOnBarCloseなどのイベントも作成することができます。

その後、このブロックの助けを借りて、OnChartEventで それらをキャッチするだけです(ヘルプにすべて書いてあります、なぜ車輪を再発明するのですか?)

追記

そして、クラスレベルでは、どんな(まあ、ほとんど)イベントにも対応できる......。

どのように実装するのか興味深い(OnConnected?)

 

dentraf:

どのように実装するのか興味深い(OnConnected?)

はい、お願いします :)

Expert AdvisorでCMqlManagerConnectクラス(投稿に添付されたモジュール)を使って、これらのイベントを処理する例を紹介します。

1.モジュールを\MQL5Include フォルダ(サブディレクトリが望ましい)にコピーします。

I have it all here - MQL5IncludeUnits

2.Expert Advisorに、このファイルへのリンクを追加します。

////////////////////////////////////////////////////////////////////////////////
//              Object classes, used in working the trade system              //
////////////////////////////////////////////////////////////////////////////////
#include <\Units\Objects\UManagerConnect.mqh> //Class - CMqlManagerConnect

3.CMqlManagerConnect 型の変数を作成します。

////////////////////////////////////////////////////////////////////////////////
//             Global variables, used in working the trade system             //
////////////////////////////////////////////////////////////////////////////////
//****************************************************************************//
//               Objects created on the grounds of the classes                //
//****************************************************************************//
CMqlManagerConnect ManagerConnect; //Менеджер контролирующий состояние коннекта

4.タイマーでは、次のようになります。

void OnTimer()
{
//----------------------------------------------------------------------------//
//Work variables / Служебные переменные
//----------------------------------------------------------------------------//
//****************************************************************************//
//                  Контроль состояния соединения с сервером                  // 
//****************************************************************************//
ManagerConnect.OnEventTimer();
//----------------------------------------------------------------------------//
}

5OnChartEventに 以下のテキストを記述する必要があります。

void OnChartEvent(const int id,         // идентификатор события  
                  const long& lparam,   // параметр события типа long
                  const double& dparam, // параметр события типа double
                  const string& sparam  // параметр события типа string
                  )
{
//----------------------------------------------------------------------------//
//Work variables / Служебные переменные
//----------------------------------------------------------------------------//

//****************************************************************************//
//                          Processing user events                            //
//****************************************************************************//
  if(id>CHARTEVENT_CUSTOM)
  //User event is received / Получено пользовательское событие
  {
  //Выводим текстовое сообщение о событии в комментарий
  Comment("User Event ",sparam);

    if(id==CHARTEVENT_CUSTOM+1)
    //Соединеие с сервером востановлено
    {
    //тут обрабатываем все что нам нужно
    }

    if(id==CHARTEVENT_CUSTOM+2)
    //Соединеие с сервером потеряно
    {
    //тут обрабатываем все что нам нужно
    }

  }
//----------------------------------------------------------------------------//  
}

追記

もちろん、OnChartEventにイベントを渡さず、クラス内で直接処理することも可能です(ベースまたは子孫のいずれでも)。しかし、この方法であっても、OnChartEventへの参照を残すことをお勧めします。なぜなら、他のチャートにイベントを伝える必要があるかもしれないからです...:)

ファイル:
 
Interesting:

はい、お願いします :)

ここでは、CMqlManagerConnect クラスを使用して Expert Advisor でこれらのイベントがどのように処理されるかの例を示します(モジュールは投稿に添付されています)。

1.モジュールを\MQL5Include フォルダ(サブディレクトリが望ましい)にコピーします。

I have it all here - MQL5IncludeUnits

2.Expert Advisorに、このファイルへのリンクを追加します。

3.CMqlManagerConnect 型の変数を作成します。

4.タイマーでは、次のようになります。

5 OnChartEventに以下のテキストを記述する必要があります。

追記

もちろん、OnChartEventにイベントを渡さず、クラス内で直接処理することも可能です(ベースまたは子孫のいずれでも)。しかし、この方法であっても、OnChartEventへの参照を残すことをお勧めします。なぜなら、他のチャートにイベントを伝える必要があるかもしれないからです...:)

CMqlManagerConnect クラスを自分で書いたのですか? サーバーへの接続が切れたときのサーバー取得の解決策はあるのでしょうか?
 
dentraf:
CMqlManagerConnect クラスを自分で書いたのですか? サーバーへの接続を失ったときのサーバー列挙の解決策はありますか?
もちろん自分でも書きましたが(例えば)、この問題を解決する方法は違います。ブルートフォースによる解決策は(少なくとも現時点では)ありませんが、この問題にも対処する必要があるでしょう(この件に関しては、すでに開発者に問い合わせがありました)...。