从头开始自学MQL5语言 - 页 74

 
VVT:

等等,你在那里的交易有时间限制......拖网的时间不属于这些限制吗? 虽然不是,但停错了,很奇怪

您的专家顾问被设置为只在莫斯科时间09:00:00至09:01:00运行,以建立一个头寸。仓位打开没有问题。该专家顾问被安装在PSB-Forex交易平台的模拟账户中。

我决定把专家顾问放在我在MetaQuote MT5终端的模拟账户上。一切都按部就班地进行,但10016的交易服务器返回代码 仍然存在。非常有趣!我将努力分析这个问题。

你真诚的,弗拉基米尔。

 
MrBrooklin:

瓦莱里,冻结水平是多少?也许需要在代码中以某种方式加以规定?

问候,弗拉基米尔。

冻结距离,更正确地说,是与市场订单/位置的距离,在这个距离内不允许执行订单。在这个区域不能放置止损点。 使用你估计的止损点作为参数,你将在输出中得到所需的止损点。该代码是针对4K的。5中的逻辑是一样的。MarketInfo参数似乎也是如此。

int New_Stop(int Parametr)                      // Проверка стоп-прик.
  {
   int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);// Миним. дистанция
   if (Parametr < Min_Dist)                     // Если меньше допуст.
     {
      Parametr=Min_Dist;                        // Установим допуст.
      Alert("Увеличена дистанция стоп-приказа.");
     }
   return(Parametr);                            // Возврат значения
  }
//-------------------------------------------------------------- 12 -- 

为5

symbol_trade_freeze_level

交易业务的冻结距离(单位:点)

䵮䵮



Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Для получения текущей рыночной информации служат функции SymbolInfoInteger(), SymbolInfoDouble() и SymbolInfoString(). В качестве второго параметра этих функций допустимо передавать один из идентификаторов из перечислений ENUM_SYMBOL_INFO_INTEGER, ENUM_SYMBOL_INFO_DOUBLE и ENUM_SYMBOL_INFO_STRING соответственно. Некоторые символы (как правило...
 
Valeriy Yastremskiy:

冻结距离 是正确的,是指不允许执行订单的市场订单/位置的距离。不能在这个区域放置止损点。 使用你估计的止损点作为参数,你将在输出中得到所需的止损点。该代码是针对4K的。5中的逻辑是一样的。MarketInfo的参数似乎是一样的。

谢谢你,瓦列里!我将继续改进专家顾问的代码。

问候弗拉基米尔。

 
MrBrooklin:

谢谢你,Valery!我将继续理解和改进专家顾问的代码。

真诚的,弗拉基米尔。

请给我发送停止计算和头寸修改的 功能。代码很长,没有多少时间)))))

 
Valeriy Yastremskiy:

请在此上传止损计算和仓位修改 功能。代码很长,没有多少时间)))))

Valery,没有计算停止的功能,因为它在输入参数中是这样设置的。

input ushort SL=200; //Стоп-лосс

并在买入位置的代码中规定了以下一行。

request.sl=NormalizeDouble(price-SL*point,digits);

谢谢你,Valery,但我想自己处理修改止损的问题。我已经有足够的信息来改进我自己的专家顾问。

问候,弗拉基米尔。

 
MrBrooklin:

Valery,没有计算停止的功能,因为它在输入参数中是这样设置的。

并在购买位置的代码中规定了以下一行。

谢谢你,Valery,但我想自己处理修改止损的问题。我已经有足够的信息来改进我自己的专家顾问。

真诚的,弗拉基米尔。

request.sl=NormalizeDouble(price-SL*point,digits);
Alert("request.sl= ",request.sl);

还有就是价格,SL和点位 要确定)

 
Valeriy Yastremskiy:

也是为了确定价格,SL和点)

谢谢你,Valery!

真诚的,弗拉基米尔。

 
Valeriy Yastremskiy:

冻结距离 是正确的,是指不允许执行订单的市场订单/位置的距离。不能在这个区域放置止损点。 使用你估计的止损点作为参数,你将在输出中得到所需的止损点。该代码是针对4K的。5中的逻辑是一样的。MarketInfo参数似乎也是如此。

为5

symbol_trade_freeze_level

交易业务的冻结距离(单位:点)

䵮䵮



谢谢你,瓦莱里的澄清。

问候,弗拉基米尔。

 

大家今天好,心情好

我继续学习MQL5编程语言。今天是我可以把带跟踪止损的专家顾问的代码放到公众面前的时候了。由于专家顾问的代码相当繁琐,我不得不尽可能地削减注释,并将其作为一个名为Trailing_Stop (v.1).mq5 的文件发布。我将在稍后公布专家顾问的版本,并对每行代码进行详细的评论,其形式对于编程学校的一年级学生来说容易理解。

在发布代码之前,我们在策略测试器中检查了专家顾问。没有发现任何问题。专家顾问中使用的是净值化的头寸核算系统。这种核算体系意味着在账户的一个时间点上,同一符号(证券)只能有一个未结头寸。

在这个时间点上,专家顾问已经实现了以下能力。

  1. 检查交易账户,你打算在上面安装它。如果专家顾问将被安装在一个模拟账户上,那么在信息框中会出现继续工作的许可。如果 试图将专家顾问安装到真实账户,信息窗口将显示警告,说它不能继续工作,然后它将从交易终端的工作窗口自动删除
  2. 每个交易日,在莫斯科时间上午9点整,自动在第一个刻度的方向上建立一个头寸。例如,如果在莫斯科时间上午9点,第一个刻度线是向上的,那么买入头寸将被打开;如果第一个刻度线是向下的,那么卖出头寸将被打开。
  3. 设置地段大小。
  4. 设置止损大小。
  5. 指定相对于开盘价的水平,在此水平上,止损被移至盈亏平衡点。
  6. 设置止损的尾随步骤。

这个版本的专家顾问部分实现了瓦西里-索科洛夫早先建议的提示。所有增加的内容和详细的意见将被纳入最终版本的EA。

警告!!!

这个专家顾问是根据模拟账户的自学计划开发的,它只用于培训目的!它不是用来在真实账户上进行交易和盈利的!

问候,弗拉基米尔。

附加的文件:
 

亲爱的参与者和本主题的读者

我彻夜不眠,试图弄清楚为什么以前发布的带有专家顾问代码的文件有缺陷,而不能用更正后的版本替换。到了早上,我终于想明白了!

坦率地说,我没有想到,如果论坛参与者中有人已经下载了有缺陷的Trailing_Stop.mq5文件,就不可能直接拿去用同名的修正文件来替换该文件。事 实证明,你也应该改变EA的名称,以便发布更正后的变体。

由于这一事实,我表示歉意,并建议下载位于前一条信息中的名为Trailing_Stop(v.1).mq5 的专家顾问的更正版本。

问候,弗拉基米尔。