クラウドソーシングによるGUI。オープンベータテストを実施。

Реter Konow  

私は、MQLプログラム用のGUIビルダーをコミュニティーに提供し、無料で使用できる ようにしています。

  • GUIビルダーは、開発の一元化とバージョン配布時の混乱を避けるために、クローズドな.ex5ファイルになっています。
  • GUIエンジンは、オープンファイル.mqhで添付されていますが、!- 私に相談なく、勝手にコードを変更 することは、エラーや機能喪失につながるので、お勧め しません。
  • バグや不具合について教えてください。

建設的な参加をお願いします。

追伸:このプロジェクトはクラウドソーシングなので、みんなで実施するということです。

//-----------------------------------------------------------------------------------------------------------------

CONSTRUCTION(構造)。

  • KIB.ex5 - GUIビルダー。
  • File GUI_DRIVE.mqh - ユーザーアプリケーションのGUIエンジン。ファイルによって接続されています。
  • インジケータ KIB-source.mqh - ユーザプロジェクトファイルからコンストラクタへのコード転送をマーキング。

は、インストールするための説明書です。

ステップ1 - 開梱

  • KIB.ex5 アドバイザーを Expert フォルダーに配置します。(サブフォルダーには入れないでください)。
  • GUI_DRIVE.mqhファイルをインクルードフォルダに配置します。(サブフォルダーには入れないでください)。
  • Indicators フォルダに KIB-source.mqh インジケータを配置します。(サブフォルダーには入れないでください)。

ステップ2 - ファイルをインストールします。

  • KIB.ex5 Expert Advisor をフリーチャートにインストールします。
  • MetaEditor で KIB-source.mqh を開き、コンパイルして .ex5 ファイルを取得します。
  • 作成されたファイル KIB-source.ex5 を Expert Advisor KIB.ex5 と同じチャートにインストールします。

ステップ3 - 仕事の準備

  • インクルードフォルダ内に新しいGUIプロジェクト用の "MyProjects "フォルダを作成します。
  • マークアップを書き込むためのファイルWindow_1.mqhを作成します。ファイルを開く
  • このファイルの接続は、KIB-source.mqhの一番下のsource配列初期化(#include <MyProjects FilterWindow_1.mqh> )で指定する。

ステップ4 - 始めること

  • 最もシンプルなコードを書きましょう。

//----------------------------------------------------------------------------------
NEW_WINDOW,  W_NAME, " Hello World! ",  W_ICON, "::Images\\16x16\\Folder.bmp",  W_TYPE, SETTINGS, ALWAYS_ON_TOP,
//----------------------------------------------------------------------------------
GROUP, "Кнопка",

__,BUTTON, "Hello World!",

END_GROUP,
//--------------------------
i, AT, _X2X, "MF", 10, _Y2Y, "MF", 10,
//----------------------------------------------------------------------------------
END_WINDOW,

  • ファイル KIB-source.mqh をコンパイルします。グラフ上にボタンの付いたウィンドウが表示されるはずです。

ステップ5 - ユーザーGUIをデザインする。

  • 追加ブランチでは、目的のGUIを作るためのチュートリアルやコード例を提供する予定です。

ステップ6 - カスタムGUIを保存します。

  • グラフィックをダブルクリックして、コンストラクタのコンテキストメニューを呼び出します。
  • 最後の項目「プロジェクトを保存してAPIファイルを印刷する」を選択します。
  • Filesフォルダには、"CORES.mqh "と "Internal_API.mqh "の2つのファイルが含まれています。
  • これらのファイルを手動で「Files」フォルダから「MyProjects」フォルダに移動します。
  • プロジェクトが保存されます。

ステップ 7 - ユーザー GUI を Expert Advisor に接続します。

//+------------------------------------------------------------------+
//|                                                   GUI Expert.mq5 |
//|                                                      Peter Konow |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Peter Konow"
//--------------------------------------------------------------------
#include<GUI_DRIVE.mqh>
#include<MyProject_1\CORES.mqh>
#include<MyProject_1\Internal_API.mqh> 
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   //--- create timer
   EventSetMillisecondTimer(25);
   //-------------------------
   D_OnInit();
   //-------------------------
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- destroy timer
   EventKillTimer();
   //-------------------------
   D_OnDeinit();
   //-------------------------
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
   //ВАШ КОД-----------------
   //ВАШ КОД-----------------
   //ВАШ КОД-----------------
   //ВАШ КОД-----------------
   //ВАШ КОД-----------------
   //УСТАНОВИТЬ ВЫЗОВ В САМОМ НИЗУ, ПОД ПОЛЬЗ.КОДОМ.------------------
   //---------------------------
   RMSG(1);
   //---------------------------
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
   //УСТАНОВИТЬ ВЫЗОВ НА САМОМ ВЕРХУ, НАД ПОЛЬЗ.КОДОМ.---------------
   //----------------------------------------------------------------
   D_OnChartEvent(id,lparam,dparam,sparam);
   //----------------------------------------------------------------
  }
//+------------------------------------------------------------------+


ステップ8 - コントロールからイベントを受信する。

  • イベントは "Internal_API.mqh "ファイル内の関数にやってきます。

//========================================================================================================= 
void On_Gui_Event(int Element, string value, double Magic = 0)
{
 string action = value, selected_option = value; //DON'T CHANGE THIS LINE
//------------------------------------
 switch(Element)
   {
//=====================================================================================================================
//WINDOW:   Checkboxes | element: CHECKBOX  | name: Checkbox 1  |  Location: Window's Main Frame
//=====================================================================================================================
case CHECKBOX3___Checkbox_1:
               //------------------------------------------------------------------------------------------------------
               //What to do when checkbox checked or unchecked?
               //------------------------------------------------------------------------------------------------------
               switch((int)action)
               {
                case checked:     break;
  
                case unchecked:     break;
               }
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;
  
...

  • その際、ユーザー機能に必要な反応を規定する。


HH. 統合されたリソースを含むコンパイル版のビルダーは、ブログで紹介しています :https://www.mql5.com/ru/blogs/post/733356

このバージョンはオープンソースコードのみです。なぜなら、リソースは別のフォルダにあり(サウンドとピクチャーのサブフォルダ)、膨大な量の説明とともにすべてをここに転送する意味がないからです。

Документация по MQL5: Операции с массивами / ArrayInitialize
Документация по MQL5: Операции с массивами / ArrayInitialize
  • www.mql5.com
Функция ArrayResize() позволяет задать для массива размер с некоторым запасом для его будущего увеличения без физического перераспределения памяти. Это сделано для улучшения быстродействия, так как операции по распределению памяти...
ファイル:
KIB-source.mq5  132 kb
GUI_DRIVE.mqh  2013 kb
KIB.zip  1470 kb
Vladimir Karputov  

クローズドコード→マーケットプレイス

コードを開く→フォーラム

Реter Konow  
Vladimir Karputov:

クローズドコード→マーケットプレイス

コードを開く→フォーラム

なるほど。コンストラクタのオープンソースコードを載せておきますね。でも、ブラッシュアップには2、3日必要です。待つことに同意してもらえますか?

Vladimir Karputov  
Реter Konow:

よかったです。コンストラクタのオープンソースコードを公開します。でも、2、3日かけてじっくりと調べたいですね。待つことに同意してもらえますか?

あなたのテーマはどこにも行きません。

Dmitriy Skub  
"ショウ "またか!!(笑)
Aleksei Beliakov  
Dmitriy Skub:
"えっ、また!?")
まだ梳かしてないんだ、待てよ。
Реter Konow  
Vladimir Karputov:

ちなみに、Projectを作成してみてください。


なるほど。念のため。コンストラクタやエンジンのコード自体は、2万行以上あります。このスレッドでは、コンストラクタのコードそのものを理解する方法ではなく、マークアップ言語でGUIを作成する方法を教えたかったのです。そこで、ユーザーの利便性を考えて、コンストラクタのコードを1つのファイルにレイアウトしてみたいと思います。

Vladimir Karputov  
Реter Konow:

わかりました。念のため。コンストラクタやエンジンのコード自体は、2万行以上あります。このスレッドでは、コンストラクタのコードそのものを理解する方法ではなく、マークアップ言語でGUIを作成する方法を教えたかったのです。そのため、ユーザーの利便性を考えて、コンストラクタのコードを1つのファイルにまとめて掲載したいと思います。

そうすると、すべてのMarket Sellerが「Test my best EA」みたいな独自のブランチを立ち上げることになりますね。

Реter Konow  
Vladimir Karputov:

いや、そうやってマーケットベンダーがこぞって「俺のベストEAを試せ」スレを立てるんだろうな。

(苦笑) わかりました。何でもいいんです。このまま掲載します。

Igor Makanu  
Реter Konow:

追伸:このプロジェクトはクラウドソーシングで、みんなで実装するということです。

クラウドソーシングはありますか、または予定されていますか?

あなたが求めているのはテスターであって、一緒になってプロダクションまで「コードを仕上げる」人たちではないと思います(たとえコードが無料であっても)。

理由: