記事「DoEasy - コントロール(第1部):最初のステップ」についてのディスカッション

 

新しい記事「DoEasy - コントロール(第1部):最初のステップ」はパブリッシュされました:

本稿では、MQL5を使用してWindows Formsスタイルのコントロールを作成するという広範なトピックを開始します。私が最初に興味を持ったのは、パネルクラスを作成することです。コントロールなしで物事を管理することはすでに困難になっています。したがって、可能なすべてのコントロールをWindows Formsスタイルで作成します。

EAをコンパイルし、チャート上で起動します。


フォームはマウスの動きに反応し、チャートに追加されたグラフィカルオブジェクトの上に常に配置されます。要素オブジェクトのグラデーションでの塗りつぶしは正しく描画され、パネルオブジェクトの色は1つだけです。ただし、要素もパネルもマウスに反応せず、すべてのグラフィカルオブジェクトの下で背景に配置されます。これが起こるのは、フォームオブジェクトのマウスイベントのみを処理したからです。CFormクラスのみを明示的に処理するため、パネルが本質的にフォームであるという事実は重要ではありません。これは後ですべて修正します。

作者: Artyom Trishkin

 

あなたのハードワークのすべてを祝福します...これはかなりのプロジェクト でした。

私はこれを始めたばかりで、TestDoEasyPart101.mq5をコンパイルしようとしています。以下の4つのエラーが発生します:


1) CTrading::OpenPosition<.... (プライベート・メンバー関数にアクセスできません)


他のエラーも基本的に同じなので、パスに問題があるのだと思いますが、絞り込めません。

インクルード用のDoEasyファイルをコピーしたので、階層は以下のようになっている:

MQL5Includeの下にDoEasyフォルダにあったすべてのファイルをコピーした。

TradingControl.mqhファイルの先頭に次のように記述しました。


私の問題かもしれません...私が言ったように、あなたはこの冒頭にあるものを構築するために少なくとも100の記事を行ったようです...私はこれをコンパイルするために取得する方法について何か提案はありますか?


ありがとうございました。

ディーン・フレドリクソン

 
Dean Fredrickson # :

君のハードワークを祝福するよ。

私はこれを始めたばかりで、TestDoEasyPart101.mq5をコンパイルしようとしています。次の4つのエラーが出ます:


1) CTrading::OpenPosition<.... (プライベート・メンバー関数にアクセスできません)


他のエラーも基本的に同じなので、パスの問題があるのでしょうが、絞り込めません。

DoEasyファイルをインクルードするためにコピーしたので、階層は以下のようになっています:

MQL5Includeの下に、DoEasyフォルダにあったすべてのファイルをコピーした。

TradingControl.mqhファイルの先頭に次のように記述しました。


私の問題かもしれません...私が言ったように、あなたはこの冒頭にあるものを構築するために少なくとも100の記事を行ったようです...これをコンパイルする方法について何か提案はありますか?


ありがとうございました。

ディーン・フレドリクソン

Trading.mqhファイルで以下の変更を加えて ください:

 //--- (1) Открывает позицию, (2) устанавливает отложенный ордер
 protected : 
   template < typename SL, typename TP> 
   bool                  OpenPosition( const ENUM_POSITION_TYPE type,
                                     const double volume,
                                     const string symbol,
                                     const ulong magic= ULONG_MAX ,
                                     const SL sl= 0 ,
                                     const TP tp= 0 ,
                                     const string comment= NULL ,
                                     const ulong deviation= ULONG_MAX ,
                                     const ENUM_ORDER_TYPE_FILLING type_filling= WRONG_VALUE );
   template < typename PR, typename PL, typename SL, typename TP>
   bool                  PlaceOrder( const ENUM_ORDER_TYPE order_type,
                                     const double volume,
                                     const string symbol,
                                     const PR price,
                                     const PL price_limit= 0 ,
                                     const SL sl= 0 ,
                                     const TP tp= 0 ,
                                     const ulong magic= ULONG_MAX ,
                                     const string comment= NULL ,
                                     const datetime expiration= 0 ,
                                     const ENUM_ORDER_TYPE_TIME type_time= WRONG_VALUE ,
                                     const ENUM_ORDER_TYPE_FILLING type_filling= WRONG_VALUE );
 private :                                     
 //--- Возвращает индекс объекта-запроса в списке по (1) идентификатору、
 //--- (2) тикету ордера, (3) тикету позиции в запросе 
   int                   GetIndexPendingRequestByID( const uchar id);
   int                   GetIndexPendingRequestByOrder( const ulong ticket);
   int                   GetIndexPendingRequestByPosition( const ulong ticket);

 public :
 //--- Возвращает себя 
   CTrading            *GetObject( void )    { return & this ;   }
 //--- Конструктор 
                        CTrading();

これにより、派生クラスからメソッドが見えるようになります。

このエラーは私の不注意で発生したものですが、古いコンパイラーは見逃していました。 ターミナルを更新した後、コンパイラーはこのエラーを確認しました。