効果的なアドバイザーの書き方 - ページ 6

 
Vladimir Baskakov #:
0になることは既に分かっているはずだ。そうでないなら、このスレッドを作成することもないだろう。

他に理由はないのでしょうか?

要するに、くだらないおしゃべりにうんざりしているのだ。EAの話題以外で対話を続けるのであれば、あなたの書き込みは無視します。

あなたの予測は、すでに取引ロボットの有効性と矛盾しているので、おもしろくありません。私のビデオでは、利益を得るために、トレンドラインを管理する方法を紹介しています。覚えられなければ、使いこなせない。まるで楽器を演奏しているような感覚です。マスターである私は、この楽器の良さを主張します。私は15年以上FXのプログラミングをやっているからわかるんです。道具を渡したのは私です。使いこなすことができるようになるかというと、そうではありません。

そしてもうひとつ、ビデオで使ったツールはレイとは呼ばず、トレンドラインと呼びます。レイはこのツールのPARAMETERであり、希望によりオフにすることができます。

それで終わりです。これ以上、根拠のない予想には触れたくありません。

 
Vitaly Murlenko #:

他に理由はないのでしょうか?

要するに、くだらないおしゃべりにうんざりしているのだ。EAの話題以外を話し続けるなら、あなたの書き込みは無視します。

あなたの予測は、すでに取引ロボットの有効性と矛盾しているので、おもしろくありません。私のビデオでは、利益を得るために、トレンドラインを管理する方法を紹介しています。覚えられなければ、使いこなせない。まるで楽器を演奏しているような感覚です。マスターである私は、この楽器の良さを主張します。私は15年以上FXのプログラミングをやっているからわかるんです。道具を渡したのは私です。使いこなすことができるようになるかというと、そうではありません。

そしてもうひとつ、ビデオで使ったツールはレイとは呼ばず、トレンドラインと呼びます。レイはこのツールのPARAMETERであり、希望によりオフにすることができます。

それで終わりです。これ以上、根拠のない予想には触れたくありません。

どこの国?
赤いローソク足と青いローソク足の本数を比較することは、トレンドの定義にはならない
 
Vladimir Baskakov #:
どこの国?
赤いローソク足と青いローソク足の本数を比較することは、トレンド検出にはならない

でも、実際の "ライブ "状態での中間結果をお見せしましょう。以下はスクリーンショットです。

お金は昨日の15時に入りました。ゼロだったのです(ここは私の言葉を信じてください)。

これがその状態です。

8

9

10

11

 
この状態は、アナリティクスに役立つのでしょうか?
 
Vitaly Murlenko #:
この状態は、解析に役立つのでしょうか?
これがステートです。
ところで、トレンドの継続が50/50で逆転する可能性が高いのに、なぜわざわざトレンドを探すのか
 
Vitaly Murlenko #:

Expert Advisor(ファイル Binarnic_1.0.mq4) とビデオで使用したスクリプト(ファイル Script_0.mq4) を投稿に添付しています。

誤解を避けるために、まずビデオをご覧ください。ヘッドホンで動画を見たのですが、音は問題ないようです。

YouTubeで使いたかったのですが、googleがそこのセキュリティで何かやらかしたのか、携帯では理解すらできませんでした。とりあえず、クラウド上のmyl-ruにアップロードしてみました。ただ、このサーバーのビューワーは明らかに品質に問題があるので、ダウンロードしてください。ファイル形式はmp4です。ファイルサイズは252メガバイトです。ダウンロードはこちら:https://cloud.mail.ru/public/Ewoq/ymNxHFJ2Z

皆さん、おはようございます!ご機嫌いかがでしょうか?

Vitaliyさん、あなたのExpert AdvisorのコードはMT4用だけですか、それともMT5用もあるのでしょうか?4については、私はMQL5のプログラミング言語を短期間独学で勉強したことがあるため、ほとんど何も追加することができません。残念!

ウラジミールさん、ありがとうございます。

 
MrBrooklin #:

皆さん、おはようございます!ご機嫌いかがでしょうか?

Vitaliy、あなたのExpert AdvisorのコードはMT4用だけですか、それともMT5用のバージョンもありますか?4については、私はMQL5のプログラミング言語を短期間独学で勉強したことがあるため、わかりません。残念!

ウラジミールさん、よろしくお願いします。

MQL4はMQL5と変わりません。唯一の違いは、データへのアクセスと取引機能です。これらすべてを共通の仮想インターフェイスを持つクラスで「包む」ことで、何の変更もなく両方のケースでコンパイル可能な移植性の高いコードができあがります。

 
Georgiy Merts #:

MQL4はMQL5と変わりません。唯一の違いは、データへのアクセスと取引機能です。これらすべてを共通の仮想インターフェイスを持つクラスで「包む」ことで、あちこちで変更なしにコンパイルできるポータブルなコードができあがります。

https://www.mql5.com/ru/docs/basis/preprosessor/conditional_compilation
 
Georgiy Merts #:

違いは、データアクセスと取引機能だけです。


それだけではありません。

 

その通りです。

条件付きコンパイルディレクティブを使うだけでこれらのディレクティブはすべて実際のクラス内部で動作します。取引アクションのための仮想ユニバーサルインターフェースを開発し、実装クラスでは条件付きコンパイルを用いてMQL4-MQL5の分岐を分離しています。そして、取引を行うオブジェクトを作成し、仮想インターフェイスを使ってアクセスするだけです。そして、一般的には、プラットフォーム間のさまざまな違いを忘れてしまっているのです。

例えば、ここに私のトレーディングプロセッサーの仮想インターフェースがあるとします。

// СTradeProcessorI - интерфейс торгового процессора

#include <MyLib\Common\MyObject.mqh>
#include <MyLib\Common\CurSymEnum.mq5>

class CTradePosComponentI;
class COrderInfoCore;

class CTradeProcessorI : public CMyObject
{
public:
   void CTradeProcessorI() {    SetMyObjectType(MOT_TRADE_PROCESSOR_I); };
   virtual void ~CTradeProcessorI() {};
   
   // Настроечный интерфейс
   virtual void SetSlippage(uint uiSlippage) = 0;
   
   // Торговый интерфейс
   // Все функции возвращают код возврата торгового сервера
   virtual int Buy(long & lTicket,ECurrencySymbol csSymbol,double dVolume,double dTP=0,double dSL=0,ulong ulMagic = 0,string strComment = NULL) = 0;               // Всегда по цене Ask, если успешно - возвращается lTicket
   virtual int Sell(long & lTicket,ECurrencySymbol csSymbol,double dVolume,double dTP=0,double dSL=0,ulong ulMagic = 0,string strComment = NULL) = 0;              // Всегда по цене Bid, если успешно - возвращается lTicket  

   virtual int ModifyTPSL(CTradePosComponentI* ptpcComponent,double dTP=0,double dSL=0) = 0;       
   virtual int ModifyTPSL(long lTPCTicket,double dTP=0,double dSL=0) = 0;       

   virtual int CloseTradeComponent(CTradePosComponentI* ptpcComponent,double dCloseVolume=EMPTY_VALUE) = 0;              // dCloseVolume - закрываемый объем. Если равен EMPTY_VALUE или равен или больше, чем объем торговой компоненты с указанным тикетом - закрывается вся торговая компонента.   
   virtual int CloseTradeComponent(long lTPCTicket,double dCloseVolume=EMPTY_VALUE) = 0;              // dCloseVolume - закрываемый объем. Если равен EMPTY_VALUE или равен или больше, чем объем торговой компоненты с указанным тикетом - закрывается вся торговая компонента.   
   
   virtual int PendingSet(long & lTicket,ECurrencySymbol csSymbol,ENUM_ORDER_TYPE otOrderType,double dSetPrice,double dVolume,double dTP=0,double dSL=0,ulong ulMagic = 0,string strComment = NULL) = 0; // если успешно - возвращается lTicket
   virtual int PendingDelete(long lTicket) = 0; 
   virtual int PendingDelete(COrderInfoCore* poiOrder) = 0; 
   
   virtual int PendingModify(long lTicket,double dSetPrice,double dTP=0,double dSL=0) = 0;       
   virtual int PendingModify(COrderInfoCore* poiOrder,double dSetPrice,double dTP=0,double dSL=0) = 0;       
   
   // Проверка кода возврата
   virtual bool TradeOperationWasSuccessful(int iTradeResCode) const = 0;
   
   // Если функция возвращает true, то при возникновении пользовательских ошибок (iTradeResCode > ERR_USER_ERROR_FIRST) советник прекратит работу
   // В случае false - работа будет продолжена
   virtual bool IsUserErrorsFalal() const = 0; 

};


すべての機能は仮想的であり、プラットフォームに完全に依存しない。MT4の個別注文またはMT5のシンボルのオープンポジションを表す「取引コンポーネント」というプラットフォームに依存しない概念を導入しています。そして、私たちが取り組んでいるのは、このようなトレーディングの要素なのです。

このインタフェースを実装した実際のクラスは次のようになる。

// СTradeProcessor - переносимый класс торгового процессора
// Именно этот класс необходимо использовать для торговли. 
// Класс реализует интерфейс CTradeProcessorI

#ifdef __MQL5__
#include <MyLib\Trade\MT5TradeProcessor.mq5>
#else // __MQL5__
#include <MyLib\Trade\MT4TradeProcessor.mq5>
#endif //__MQL5__

#ifdef __MQL5__
class CTradeProcessor : public CMT5TradeProcessor
#else // __MQL5__
class CTradeProcessor : public CMT4TradeProcessor
#endif //__MQL5__

{
public:
   void CTradeProcessor(uint uiSlippage = DEFAULT_TRADE_POINT_SLIPPAGE);
   void ~CTradeProcessor() {};
};


実際には、プラットフォーム依存のクラスであるCMT5TradeProcessorとCMT4TradeProcessorの内部で全ての実装が行われます。