错误、漏洞、问题 - 页 148

 
EQU:

再说一遍--密码......密码......。代码是好的......但它也是--战术、周期......;)

图表没有收到创建新条形图的信息吗?我不相信......)))。

把它做成一个事件有问题吗? 它至少是一个预定义的变量吗?

一般来说,处理事件要比填写堆积如山的代码要容易。此外--有错误(无错误的程序永远不会!!!)))))

我绝对同意你的观点,新酒吧是一个事件,它可以(也应该)被编程。有一个分支,https://www.mql5.com/ru/forum/1031,在你的闲暇时间阅读,但我已经挣扎了多年...

Z.I.我想看完这个,你会发现,新的酒吧可能永远不会出现......一个洞......。

Обсуждение статьи "Алгоритм генерации тиков в тестере стратегий терминала MetaTrader 5"
Обсуждение статьи "Алгоритм генерации тиков в тестере стратегий терминала MetaTrader 5"
  • www.mql5.com
Обсуждение статьи "Алгоритм генерации тиков в тестере стратегий терминала MetaTrader 5".
 
EQU:

再次,代码......代码......。代码是好的......但战术也是好的,循环......。;)

图表没有收到创建新条形图 的信息吗?我不相信......)))。

把它变成一个事件有问题吗? 或者至少是一个预定义的变量?

一般来说,处理事件要比填写堆积如山的代码要容易。此外--有错误(无错误的程序永远不会!!!)))))

一般来说,你如何看待这个问题?20个时间段x "市场观察 "中的符号数量,并为每个符号生成OnNewBar事件? 你必须处理每个事件,以确定它指的是哪个符号和时间段?现在你可以选择:编写你自己的函数NewBar,并在其中定义你想要接收的新条形图:一个符号的所有周期,当前周期的所有符号或一些特殊情况。这使一个简单的函数。这比有许多检查的通用OnNewBar函数好。
 

在测试时,会产生一个错误

CTrade::PositionClose::OrderCheck: 无效止损请求
在我的专家顾问中,有以下几行

变量描述(程序中)

CTrade m_trade。

..................

关闭位置

m_trade.PositionClose(_Symbol, eSlippage);

为什么它显示错误?CTrade::PositionClose::OrderCheck: 无效止损请求

错误的SL和/或TP
交易_retcode_invalid_stops

止损与平仓有什么关系? 或者我错过了什么?

Документация по MQL5: Основы языка / Переменные
Документация по MQL5: Основы языка / Переменные
  • www.mql5.com
Основы языка / Переменные - Документация по MQL5
[删除]  
Prival:

我绝对同意你的观点,新酒吧是一个事件,它可以(而且应该)被编程。在https://www.mql5.com/ru/forum/1031,有一个主题,你可以在闲暇时阅读,但我已经争取了多年...

Z.U.我想看完后你就会明白,新的酒吧可能永远不会出现......一个洞......

我冒着风险看了一下这个链接...我想这真的值得一读......在你闲暇时......;)

这就是希望有这样一个活动的原因......没有酒吧,就没有活动。

[删除]  
Valmars:
实际上,你是如何想象的呢?20个时间段x "市场观察 "中的符号数量,每个符号都会产生OnNewBar事件? 你必须处理每个事件,以确定它指的是哪个符号和时间段?现在你可以选择:编写你自己的函数NewBar,并在其中定义你想要接收的新条形图: 一个符号的所有周期,当前周期的所有符号或一些特殊情况。这导致了一个具体而不复杂的功能。它比有许多检查的通用OnNewBar函数要好。

20个时间段......这不是一个长参数的极限......在一分钟内填补整个变量是正确的,不难......。

为什么,OnTick看的是"'市场观察'中的x个字符,并为每个字符生成一个事件..."?????。

而且,相信我,比特检查是一个相当快的事情......。

而且,即使有一个事件

- 没有人要让我处理它--没有必要...

- 即使你有一个事件,也没有什么能阻止你添加或替代 "写你自己的NewBar函数并定义是否要获得新条"--如果有必要的话...

 
Interesting:

即使是现在,如果你知道怎么做,也很容易做到。开发人员承诺将重写OnTrade(),并在那里添加必要的参数。

没有人阻止这种情况在本地处理,在OnTick()或OnTime()中--在交易操作 的地方;或者在OnTrade()中,如果你需要捕捉用户行为或不直接由代码控制的交易操作。

轻度是一个相对的概念,对一个人来说是以克为单位,对另一个人来说是以吨为单位。在我的专家顾问中,我不得不这样做(如果我的代码可以被称为这样的话),因为现在我的语言中没有PROSTO的变体,而它们很可能存在,我认为。而且我对代码变长一百行并使其看起来更复杂并不是特别高兴。

这里是一般的问题。

嘀嗒一声,指标显示需要关闭,我就关闭。

当下一个刻度线到来时,指标显示必须关闭,我不知道该怎么做--头寸已经定位,当然不可能发现此刻正在发生的事情,但我不知道。

我不明白为什么这种复杂性在这里仍然存在?我不明白为什么我们要在onTrade()事件中写一大堆代码来了解发生了什么?

我支持简单,当它不存在时,我就会感到悲伤。

 
Vladix:

轻度是一个相对的概念,对一个人来说是以克为单位,对另一个人来说是以吨为单位。我不得不用EA来做(如果我的代码可以被称为这样的话),因为现在语言中没有PROSTO的变体,而它们很可能存在,我认为。而且我对代码变长一百行并使其看起来更复杂并不是特别高兴。

这里是一般的问题。

嘀嗒一声,指标显示需要关闭,我就关闭。

当下一个刻度线到来时,指标显示应该关闭,我不知道该怎么做--头寸已经挂了,当然我可以找出此刻发生了什么,但我不知道。

我不明白为什么这种复杂性在这里仍然存在?我不明白为什么在onTrade()事件中建议我们写一大堆代码来了解发生了什么?

我支持简单,当它不存在时,我就会感到悲伤。

我这样做了,代码不到一百行......:)该解决方案是可靠的,并可立即用于多货币。

//+----------------------------------------------------------------------------+
// Функция контроля открытия ордера на текущем баре               MQL5         |
//-----------------------------------------------------------------------------+
bool ЕстьОрдернаТекущемБаре(ENUM_ORDER_TYPE тип)
  {
   ulong тикет;
   HistorySelect(SeriesInfoInteger(СИМВОЛ,Period(),SERIES_LASTBAR_DATE),TimeCurrent());
   for(int i=0;i<HistoryDealsTotal();i=i+1)
     {
      тикет=HistoryDealGetTicket(i);
      if(HistoryDealGetString(тикет,DEAL_SYMBOL)!=СИМВОЛ || HistoryDealGetInteger(тикет,DEAL_ENTRY)==DEAL_ENTRY_STATE)// || HistoryDealGetInteger(тикет,DEAL_MAGIC)!=MAGIC
         continue;
      if(HistoryDealGetInteger(тикет,DEAL_TYPE)==тип || HistoryDealGetInteger(тикет,DEAL_TYPE)==DEAL_ENTRY_INOUT)
         return(true);
     }
   return(false);
  }
你可以指定任何想要的时期,而不是EA徘徊的时期。即每期下的订单不超过一次

而在任何交易请求 之后,我们应该做一个延迟,在30秒内禁止交易请求(例如)。否则,该订单可能不会出现在下一个tick的历史中。
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса - Документация по MQL5
[删除]  
Valmars:
一般来说,你是如何想象的?一般来说,想法是有20个时间段x "市场观察 "中的符号数量,并为每个符号生成OnNewBar事件? 而你必须处理每个符号和时间段,以确定它指的是哪一个?现在你可以选择:编写你自己的函数NewBar,并在其中定义你想要接收的新条形图:一个符号的所有周期,当前周期的所有符号或一些特殊情况。这导致了一个具体而不复杂的功能。这比一个有很多检查的通用OnNewBar函数要好。

就一个标准的解决方案而言,它应该是这样的

1.该事件应与开放的图表、其周期和符号绑定。该事件必须发生在一个新条形图出现的时候(孔被忽略)。

事件必须在一个单独的终端线程(或线程)中处理

PS

如此下去。当然,这只是一个粗略的近似值,没有考虑到许多具体情况......。

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - Документация по MQL5
[删除]  

Vladix:

其实问题本身是这样的。

一个嘀嗒声传来,指标显示它需要关闭,我就进行关闭。

当下一个刻度线到来时,指标显示必须关闭,我不知道该怎么做--头寸已经挂了,人们当然可以知道此刻发生了什么,但却不知在哪里。

我不明白为什么这种复杂性在这里仍然存在?我不明白为什么在onTrade()事件中建议我们写一大堆代码来了解发生了什么?

我支持简单,当你没有它的时候,它就会变得很悲伤

也许,开发人员会在OnTrade()中添加参数,至少他们在考虑这个问题。据我所知,甚至有一些关于它的声明。
 
Dmitriy2:

这样做,代码比一百行还少......:)解决方案是可靠的,并立即用于多货币

我们可以指定任何想要的期限,而不是EA休眠的期限。这意味着每期下单的频率将不超过一次。

在任何交易请求 之后,我们应该做一个延迟,使交易请求在30秒内失效(例如)。否则,该订单可能不会出现在下一个tick的历史中。

放一个延迟--是的,我接受,这需要多少行代码?而如果我们谈论的是多货币,就有必要对每一种货币的延迟进行说明,不是吗?

我写了解决这个问题的代码。只是我不喜欢它,就像,对不起,我不喜欢你的。而且这与偏见无关,关键是没有其他选择,简单而优雅。