初学者的问题 MQL5 MT5 MetaTrader 5 - 页 615

 
你好。
我在MT-5的工具窗口中没有标签--日历、信号,你能告诉我如何添加它们吗?
 
sergey966121:
你好。
我在MT5的工具窗口中没有标签:日历、信号,你能告诉我如何添加它们吗?

交易服务器上的设置是负责 "日历 "选项卡的。如果没有标签,请向开立交易账户的商户要求加入该标签。

如果没有 "信号 "选项卡。

如果MetaTrader中没有 "信号 "选项卡

补充:是Windows操作系统吗?

 

你好!

我可以用PositionGet...() 获得一个仓位的TP和SL值,但我如何设置整个仓位的takeprofit?

我不能具体说明,谢谢你!

 
Alexander Kharlamov:

你好!

我可以用PositionGet...() 获得一个仓位的TP和SL值,但我如何设置整个仓位的takeprofit?

谢谢你!

像这样,使用标准库 和CTrade类。

#include <Trade\Trade.mqh>
Ctrade my_trade
...
my_trade.Buy(...
//или
my_trade.Sell(...
//или
my_trade.PositionModify(...
 
Karputov Vladimir:

就这样,使用标准库 和CTrade类。

谢谢你!
 
Alexander Kharlamov:
谢谢你!
不客气。使用标准库使 编程非常容易。
 
Alexander Kharlamov:
谢谢你!

下面是一个脚本的例子(PositionModify(SL).mq5)--它首先建立一个头寸,然后改变这个头寸的止损。

//+------------------------------------------------------------------+
//|                                           PositionModify(SL).mq5 |
//|                              Copyright © 2016, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
#include <Trade\Trade.mqh>
//--- variable
CTrade   my_trade;         // object CTrade
int      my_stop_loss=30;  // stop level
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   my_trade.Buy(0.01);
   Sleep(6000);

   double m_adjusted_point;         // point value adjusted for 3 or 5 points
//--- tuning for 3 or 5 digits
   int digits_adjust=1;
   if(Digits()==3 || Digits()==5)
      digits_adjust=10;
   m_adjusted_point=Point()*digits_adjust;

   double m_stop_loss=my_stop_loss*m_adjusted_point;

   MqlTick m_tick;
   SymbolInfoTick(Symbol(),m_tick);

   double sl=NormalizeDouble(m_tick.bid-m_stop_loss,Digits());
   my_trade.PositionModify(Symbol(),sl,0);
  }

使用限制:它只能在净额账户上正确工作。

附加的文件:
 

我设法为该位置设置了TP,谢谢你。

我想知道是否有可能使用MQL5来追踪事件--TP 触发的?还是有必要检查位置状态?

 
Alexander Kharlamov:

我设法为该位置设置了TP,谢谢你。

我想知道是否有可能使用MQL5来追踪事件--TP 触发的?还是有必要检查位置状态?

当然你会这样做,位置会通知你这个事件 - 它只是经纪公司服务器上的一个实体(数据库中的记录+其他东西)。
 

由于不切实际,我还没有处理这个问题,但OnTrade和OnTradeTransaction事件不会通过采取追踪平仓吗?

Trade

当交易服务器上的交易操作完成后,会产生交易事件 交易事件由OnTrade()函数处理,用于以下交易操作

  • 设置、修改或删除一个待定订单。
  • 在资金不足的情况下或在到期时取消一个待定的订单。
  • 触发一个待定订单
  • 开仓、加仓或平仓(或仓位的一部分)
  • 修改一个开放的位置(改变停止)。

贸易交易

由于对一个交易账户采取了某些行动,其状态发生了变化。这些行动包括

  • 使用OrderSendOrderSendAsync 函数由客户终端的任何MQL5应用程序发送交易请求,并进一步执行。
  • 通过终端图形界面发送交易请求并进一步执行。
  • 触发 服务器上 的挂单和止损 单。
  • 在交易服务器端执行操作。

作为这些行动的结果,为该账户进行了交易。

  • 交易请求的处理。
  • 修改未结订单。
  • 改变订单历史。
  • 改变交易的历史。
  • 变换位置。

例如,当一个市场买入订单被发送时,它被处理,为账户创建一个适当的买入订单,订单被执行,从未结订单列表中删除,添加到订单历史中,然后相应的交易被添加到历史中并创建一个新的头寸。 所有这些行动都是贸易交易。每一笔这样的交易到达终端的时候,就是TradeTransaction事件。该事件由OnTradeTransaction 函数处理。