文章 "DoEasy 函数库中的其他类(第六十六部分):MQL5.com 信号集合类"

 

新文章 DoEasy 函数库中的其他类(第六十六部分):MQL5.com 信号集合类已发布:

在本文中,我将针对 MQL5.com 信号服务创建信号集合类,拥有能够管理信号的函数。 此外,我将改进“市场深度”快照对象类,来显示 DOM 的总买卖量。

编译 EA 并在交易品种图表上启动它,同时初步设置在当前交易品种/时间帧上操作,并激活操控 MQL5.com 信号服务的交易信号的标志:


在 EA 设置窗口的通用选项卡中,选中“允许修改信号设置”:


否则,EA 将无法操控 MQL5.com 信号。

启动 EA 后,日志会显示有关创建信号集合成功的消息,及其简述:

Collection of MQL5.com Signals service signals created successfully
Collection of MQL5.com Signals service signals:
- Free signals: 195, Paid signals: 805

作者:Artyom Trishkin

 

为什么 "交易系统 "标签出现在文章部分? 这里没有 TC

整个 "交易系统 "版块都是您的文章,总之

 
Maxim Dmitrievsky:

这里没有 TC。

整个 "交易系统 "部分都是您的文章,总之

因为该库是专门为创建交易系统而创建的。

 
Artyom Trishkin:

因为该库是专门为创建交易系统而创建的。

这在逻辑上有些矛盾

 
Maxim Dmitrievsky:

有一定的逻辑矛盾

是啊,就像鸡和蛋的问题。
 
 
我非常抱歉,我又做了不该做的事,我很后悔。
我自己的无知
请原谅我用自己的行为填满了身边的人,我很抱歉。



 
你好,先生,我在 WhatsApp 上和你聊天了
 
Lovely Raja :
嗨,先生,我在 WhatsApp 上与您聊天

我不通过 WhatsApp 交流

 

Boa noite!

欢迎来到巴西。


由于我对 mql5 的了解非常有限,所以我希望您能帮助我解决在编译过程中遇到的问题......我还没有找到解决方法。

我对你们的出色工作表示赞赏和感谢,你们的代码对我帮助很大。

 
Francisco Carlos Sobral Ribeiro #:

Boa noite!

欢迎来到巴西。


Estou tendo impedimento na hora de compilar o código e como meu conhecimento de mql5 é muito básico, resta pedir sua ajuda para superar os problemas na compilação...não sei resolver.

我对你们的出色工作表示赞赏和感谢,你们的代码对我帮助很大。

在 Trading.mqh 中,您需要将一些方法移到受保护部分,以便派生类可以访问它们。现在它们在类的私有部分。这个错误是我不注意造成的,但旧的编译器漏掉了。更新终端后,这个错误就能被发现了。

在 Trading.mqh 文件的第 84 - 89 行,您应该进行以下更改


在 Trading.mqh 文件中,一些方法需要移到受保护部分,以便派生类可以访问它们。现在它们在类的私有部分。这个错误是我无意中犯的,但旧的编译器漏掉了。更新终端后,这个错误开始被检测到。

在 Trading.mqh 文件的第 84 - 89 行,您需要进行以下更改

//--- 按操作类型返回顺序方向
   ENUM_ORDER_TYPE      DirectionByActionType(const ENUM_ACTION_TYPE action)  const;
//--- 将交易对象设置为所需的声音
   void                 SetSoundByMode(const ENUM_MODE_SET_SOUND mode,const ENUM_ORDER_TYPE action,const string sound,CTradeObj *trade_obj);

protected:
//--- 设置交易请求价格
   template <typename PR,typename SL,typename TP,typename PL> 
   bool                 SetPrices(const ENUM_ORDER_TYPE action,const PR price,const SL sl,const TP tp,const PL limit,const string source_method,CSymbol *symbol_obj);

private:
//--- Returns the flag for checking permissibility by the distance of (1) StopLoss, (2) TakeProfit, (3) the order setting price from StopLevel price //--- Returns the flag for checking permissibility by the distance of (1) StopLoss, (2) TakeProfit, (3) the order setting price from StopLevel price
   bool                 CheckStopLossByStopLevel(const ENUM_ORDER_TYPE order_type,const double price,const double sl,const CSymbol *symbol_obj);
   bool                 CheckTakeProfitByStopLevel(const ENUM_ORDER_TYPE order_type,const double price,const double tp,const CSymbol *symbol_obj);
   bool                 CheckPriceByStopLevel(const ENUM_ORDER_TYPE order_type,const double price,const CSymbol *symbol_obj,const double limit=0);


并在第 155 - 181 行作出以下更改


并在第 155 - 181 行作类似修改
//--- 返回错误处理方法
   ENUM_ERROR_CODE_PROCESSING_METHOD   ResultProccessingMethod(const uint result_code);
//--- 纠错
   ENUM_ERROR_CODE_PROCESSING_METHOD   RequestErrorsCorrecting(MqlTradeRequest &request,const ENUM_ORDER_TYPE order_type,const uint spread_multiplier,CSymbol *symbol_obj,CTradeObj *trade_obj);

protected:
//--- (1) 开仓,(2) 设置挂单
   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:

之后,一切都会编译成功。

更正后的文件附在本帖后。




更正后的文件附在本帖后。

附加的文件:
Trading.mqh  448 kb