多币种顾问。最好是开发商的意见。 - 页 3

 
Reshetov:
LeoV:
YuraZ 写道(a):说实话,这不是真的好......假设这些对子的嘀嗒声还没有到来,你又会错过它的。

如果你展示一段生成输入的代码,你可以更快地发现逻辑错误。

但在MQL中应该有一个普遍接受的解决方案,对吗?如何 "同步 "打开不同符号的柱子?那么,显然,我们应该等待所有使用的符号打开一个新栏。但如何正确地做到这一点呢?

不需要同步性和其他自行车的发明。一切都已经在很久以前被发明了。新形成的条形图的存在只对该工具进行检查,专家顾问是在第一个tick的到来时安装的。而start()事件也只在新刻度线到来时在该符号上触发。我给了你一段代码,执行这个检查,以便在重新报价的情况下,下一个头寸不会在下一个条形图上打开,在失败后,它会尝试在同一个条形图上打开。对我来说,在单一货币和多货币模式下都能正常工作。在重新报价的情况下,交易是在同一个柱子上打开的,但只是有一些延迟,因此并不总是在该柱子的开盘价,而是有一些偏移。也就是说,与测试者会有差异,但不是在酒吧,而是在开盘价。


尤里,一个新的小时的开始将发生,即使嘀嗒声没有来!

即使蜱虫没有来,我们也会开始新的一小时!


可以通过任何工具的新条形图中的一个刻度来计算一个新条形


LeoV正在为所有使用的货币对同步等待新的勾股。

 
YuraZ:
Thecore:

YuraZ写道(a)。

坦率地说,这并不完全漂亮......。如果蜱虫没有来找这些对,你将再次错过它们

如果嘀嗒声没有来,你就不能马上下单,除非你使用脚本。

而且只有当蜱虫来到经纪公司,并且他们不把它们传送到你的终端(在白天)。

这就是为什么我在实现多币种专家顾问时,要用Miles(或Moore)做一个状态机。

它监测了所需配对的顺序开放状态。当然,这并不总是可能的

自然,不可能总是在正确的价格开仓,但这种方法保证了订单会完全开仓。

很简单!可以下一个订单:-)如果打钩没有来

考虑一下吧!如果你不这样做,我会给你一个提示。

通常情况下,对于多币种的EA来说,如果不能100%保证订单的到达,就会出现这样的情况

那么顾问工作的逻辑就会被破坏。

顺便说一下,别忘了你的EA是在它所盘旋的货币对的点位上工作的。

因此,即使在另一个货币对上有一个刻度,而在连接了你的EA的货币对上没有一个刻度。

那么同步将被破坏。

不要忘记与经纪公司失去联系和重新报价 等不愉快的事情(如果你处理的是真实账户)。

顺便说一下,在微观实数上,我经常遇到这样的情况:在终端重新加载之前,一个订单从未被传递。

即使是在手动模式下。他们在等待什么,等待...

这就是为什么我早就放弃了基于对单的系统。

这太麻烦了。

 
thecore:
YuraZ:
核心

YuraZ写道(a)。

坦率地说,这并不完全漂亮......。 如果蜱虫没有来找这些对,你将再次错过它们

如果嘀嗒声没有来,你就不能马上下单,除非你使用脚本。

而且只有当蜱虫来到经纪公司,并且他们不把它们传送到你的终端(在白天)。

这就是为什么我在实现多币种专家顾问时,要用Miles(或Moore)做一个状态机。

它监测了所需配对的顺序开放状态。 当然,这并不总是可能的

自然,我并不总是能够在必要的价格上开仓,但这种方法保证了订单总是能够被打开。

很简单!可以下一个订单:-)如果没有打勾,就可以下一个订单。

考虑一下吧!如果你不这样做,我会给你一个提示。

通常情况下,对于多币种的EA来说,如果不能100%保证订单 的到达,就会出现这样的情况

那么顾问工作的逻辑就会被破坏。

顺便说一下,别忘了你的EA是在它所盘旋的货币对的点位上工作的。

因此,即使在另一个货币对上有一个刻度,而在连接了你的EA的货币对上没有一个刻度。

那么同步将被破坏。

不要忘记与经纪公司失去联系和重新报价等不愉快的事情(如果你处理的是真实账户)。

顺便说一下,在微观实数上,我经常遇到这样的情况:在终端重新加载之前,一个订单 从未被传递。

即使是在手动模式下。他们在等待什么,等待...

这就是为什么我早就放弃了基于对单的系统。

痛苦的麻烦。

你可能是想写TIC...但你只是写了秩序。


你明白,一个EA可以在欧元兑美元上输入,并使用美元兑瑞郎。

只要写

LevelOpenBUY =MarketInfo("USDCHF",MODE_ASK);

...= OrderSend ("USDCHF",Lot, LevelOpenBUY, ...



能起作用的代码片断

OpenLevel = MarketInfo( sSymbol, MODE_BID )。
如果 ( TDARELOCK == 0 )
ticket=OrderSend( sSymbol,OP_SELL,Lots,OpenLevel,3,0,0,sComment,mMagic,0,Red)。


----

而美元兑瑞郎的TIC可能不足以为任何货币对获得一个勾。


我希望MQL5不需要接收刻度线,程序就能工作。

他们承诺要做事件,这意味着任何一段代码都可以被传递到一个事件上。

----



关于终端冻结的第二个问题--这个问题可以通过重新启动来解决--这对开发者来说更有可能。

我也见过这个

这也是一种治疗方法,在论坛上有一个例子。

Ну вот и все - отлично работает процедруа программного реконнекта :)
НЕ ЗАБУДЬТЕ ВКЛЮЧИТЬ ГАЛОЧКУ "Разрешить импорт ДЛЛ" в настройках МТ4.
//В начале советника подключаем необходимые ДЛЛ-ки и модули
#include <winuser32.mqh>
#import "user32.dll"
int GetParent(int hWnd);
#import
 
//Копируем процедуру в наш советник или библиотеку и вызываем ее там, где вам нравиться
//Лично я вызываю перед рассчетом данных - но можно перед установкой ордеров. Правда тогда
//возможно нужно будет делать задержку в пару секунд
//У меня все работает
int Reconnect()
{
int result;
int hwnd = WindowHandle(Symbol(), Period()); // получаем хендл окна графика
hwnd = GetParent(hwnd); // получаем хендл родительского окна
hwnd = GetParent(hwnd); // ...
hwnd = GetParent(hwnd); //добираемся до главного окна
result = SendMessageA(hwnd, WM_COMMAND, 37400, 0);
Print("SendMessageA = " + result); //посылаем сообщене
return;
}

---

因此,如果你发送一个订单,但它没有打开,你可以发送这段代码来解决

 

YuraZ писал (а):

通常情况下,对于多币种的EA,如果不能保证100%的订单进入,通常是这样。

你可能是想写TIC...你一定是指TIC,但你写的是订单。

我指的是以100%的速度下单。

 
thecore:

YuraZ写道(a)。

通常情况下,对于多币种的EA来说,如果不能保证100%的订单进场,通常是这样。

你可能是想写TIC...你一定是指TIC

我指的是下一个100%的订单。


但你要明白,这不仅是在一个多货币系统中

在普通的专家顾问中,你无法得到100%的保证...从来不是100%的保证

因为有一些因素

互联网

您的供应商

你的DC供应商

你的硬件

直流设备

等。

---

这就是停止的原因......或使用不同供应商的备用电脑(如果问题出在你这边)。

---


但如果是程序逻辑上的错误!!那就是另一回事了,它被处理了。

---


逻辑不应该因为进入时间不是在15:00而是在15:05或15:02而崩溃。

这正是我们在该主题的作者身上看到的情况!他试图在15:00:00:00进入。

( 数字是任意的)


他不做点子,所以在15:00或15:01-15:07进入,对他来说应该不会有太大的麻烦。


这就是我要说的:你不能对所有必要的符号都严格约束在一个小节的开头--在任何一个小节获得开头就足够了

 
YuraZ:
核心
YuraZ:
核心

YuraZ写道(a)。

坦率地说,这并不完全漂亮......。 如果蜱虫没有来找这些对,你将再次错过它们

如果嘀嗒声没有来,你就不能立即下单,除非你使用脚本。

而且只有当蜱虫来到经纪公司,并且他们不把它们传送到你的终端(在白天)。

这就是为什么我在实现多币种专家顾问时,要用Miles(或Moore)做一个状态机。

它监测了所需配对的顺序开放状态。 当然,这并不总是可能的

自然,我并不总是能够在必要的价格上开仓,但这种方法保证了订单总是能够被打开。

很简单!可以下一个订单:-)如果没有打勾,就可以下一个订单。

考虑一下吧!如果你不这样做,我会给你一个提示。

通常情况下,对于多币种的EA来说,如果不能100%保证订单 的到达,就会出现这样的情况

那么顾问工作的逻辑就会被破坏。

顺便说一下,别忘了你的EA是在它所盘旋的货币对的点位上工作的。

因此,即使在另一个货币对上有一个刻度,而在连接了你的EA的货币对上没有一个刻度。

那么同步将被破坏。

不要忘记与经纪公司失去联系和重新报价等不愉快的事情(如果你处理的是真实账户)。

顺便说一下,在微观实数上,我经常遇到这样的情况:在终端重新加载之前,一个订单 从未被传递。

即使是在手动模式下。他们在等待什么,等待...

这就是为什么我早就放弃了基于对单的系统。

这太麻烦了。

你可能是想写TIC...但你只是写了秩序。

如果你的专家顾问是站在欧元兑美元上,你明白它可能会以美元兑瑞郎进入。

只需写下

LevelOpenBUY =MarketInfo("USDCHF",MODE_ASK);

...= OrderSend ("USDCHF",Lot, LevelOpenBUY, ...

能起作用的代码片断

OpenLevel = MarketInfo( sSymbol, MODE_BID ); if ( TDARELOCK == 0 ) ticket=OrderSend ( sSymbol,OP_SELL,Lots,OpenLevel,3,0,0,0,sComment,mMagic,0,Red) 。

----

USDCHF的TIC可能不足以获得任何Pair的勾选。

我希望在MQL5中,你不需要接收刻度线,程序就能工作。

他们承诺制造事件,这意味着任何一段代码都可以在事件的基础上编写。

----

关于终端冻结的第二个问题--这个问题可以通过重启来解决--这个问题更有可能被提交给开发人员。

我也看到了这一点--

这也是经过处理的,在论坛上有一个例子。

Ну вот и все - отлично работает процедруа программного реконнекта :)
НЕ ЗАБУДЬТЕ ВКЛЮЧИТЬ ГАЛОЧКУ "Разрешить импорт ДЛЛ" в настройках МТ
4.
//В начале советника подключаем необходимые ДЛЛ-ки и модули
#include <winuser32.mqh>
#import "user32.dll"
int GetParent(int hWnd);
#import

//Копируем процедуру в наш советник или библиотеку и вызываем ее там, где вам нравиться
//Лично я вызываю перед рассчетом данных - но можно перед установкой ордеров. Правда тогда
//возможно нужно будет делать задержку в пару секунд
//У меня все работает
int Reconnect()
{
int result;
int hwnd = WindowHandle(Symbol(), Period()); // получаем хендл окна графика
hwnd = GetParent(hwnd); // получаем хендл родительского окна
hwnd = GetParent(hwnd); // ...
hwnd = GetParent(hwnd); //добираемся до главного окна
result = SendMessageA(hwnd, WM_COMMAND, 37400, 0);
Print("SendMessageA = " + result); //посылаем сообщене
return;
}

---

因此,如果你发送一个订单,但它没有打开,你当然可以发送一个类似的代码来解决

重启终端是很好的,但此刻你应该如何处理其他挂在其他窗口上的专家顾问系统?

他们的操作逻辑自然不同,对频繁的重载反应不大,因为变量的值会丢失。

我们已经积累了这么久。

即使专家顾问是以欧元兑美元为基础的,你也意识到它可能以美元兑瑞郎的方式进入。

只需写下

LevelOpenBUY =MarketInfo("USDCHF",MODE_ASK);

...= OrderSend ("USDCHF",Lot, LevelOpenBUY, ...

我当然知道。 在一个多货币EA中,这正是其他货币对的控制方式。

但是,如果在主要货币对上,前一个小时的最后一个刻度出现,例如,在7.50,而该小时的第一个刻度出现。

8点10分,而在二级符号上,每小时的第一个刻度是8点。

那么就很难期望在主要货币对上徘徊的EA会在次要货币对上下单。

在8点,最好是在8点10分。

当EA像脚本一样操作时的情况,即不给系统休息的机会,只是一味地甩动和甩动。

尽管有虱子,我也不考虑它。最好是写一个脚本。

 
thecore:
YuraZ:
核心
YuraZ:
核心

YuraZ写道(a)。

坦率地说,这并不完全漂亮......。 如果蜱虫没有来找这些对,你将再次错过它们

如果嘀嗒声没有来,你就不能马上下单,除非你使用脚本。

而且只有当蜱虫来到经纪公司,并且他们不把它们传送到你的终端(在白天)。

这就是为什么我在实现多币种专家顾问时,要用Miles(或Moore)做一个状态机。

它监测了所需配对的顺序开放状态。 当然,这并不总是可能的

自然,我并不总是能够在必要的价格上开仓,但这种方法保证了订单总是能够被打开。

很简单!可以下一个订单:-)如果没有打勾,就可以下一个订单。

考虑一下吧!如果你不这样做,我会给你一个提示。

通常情况下,对于多币种的EA来说,如果不能100%保证订单 的到达,就会出现这样的情况

那么顾问工作的逻辑就会被破坏。

顺便说一下,别忘了你的EA是在它所盘旋的货币对的点位上工作的。

因此,即使在另一个货币对上有一个刻度,而在连接了你的EA的货币对上没有一个刻度。

则同步将被破坏。

不要忘记与经纪公司失去联系和重新报价等不愉快的事情(如果你处理的是真实账户)。

顺便说一下,在微观实数上,我经常遇到这样的情况:在终端重新加载之前,一个订单 从未被传递。

即使是在手动模式下。他们在等待什么,等待...

这就是为什么我长期拒绝基于配对订单的系统。

这太麻烦了。

你可能是想写TIC...但你只是写了秩序。

如果你的专家顾问是站在欧元兑美元上,你明白它可能会以美元兑瑞郎进入。

只需写下

LevelOpenBUY =MarketInfo("USDCHF",MODE_ASK);

...= OrderSend ("USDCHF",Lot, LevelOpenBUY, ...

能起作用的代码片断

OpenLevel = MarketInfo( sSymbol, MODE_BID ); if ( TDARELOCK == 0 ) ticket=OrderSend ( sSymbol,OP_SELL,Lots,OpenLevel,3,0,0,0,sComment,mMagic,0,Red) 。

----

USDCHF的TIC可能不足以获得任何Pair的勾选。

我希望在MQL5中,你不需要接收刻度线,程序就能工作。

他们承诺制造事件,这意味着任何一段代码都可以在事件的基础上编写。

----

关于终端冻结的第二个问题--这个问题可以通过重启来解决--这个问题更有可能被提交给开发人员。

我也看到了这一点--

这也是经过处理的,在论坛上有一个例子。

Ну вот и все - отлично работает процедруа программного реконнекта :)
НЕ ЗАБУДЬТЕ ВКЛЮЧИТЬ ГАЛОЧКУ "Разрешить импорт ДЛЛ" в настройках МТ4.
//В начале советника подключаем необходимые ДЛЛ-ки и модули
#include <winuser32.mqh>
#import "user32.dll"
int GetParent(int hWnd);
#import
 
//Копируем процедуру в наш советник или библиотеку и вызываем ее там, где вам нравиться
//Лично я вызываю перед рассчетом данных - но можно перед установкой ордеров. Правда тогда
//возможно нужно будет делать задержку в пару секунд
//У меня все работает
int Reconnect()
{
int result;
int hwnd = WindowHandle(Symbol(), Period()); // получаем хендл окна графика
hwnd = GetParent(hwnd); // получаем хендл родительского окна
hwnd = GetParent(hwnd); // ...
hwnd = GetParent(hwnd); //добираемся до главного окна
result = SendMessageA(hwnd, WM_COMMAND, 37400, 0);
Print("SendMessageA = " + result); //посылаем сообщене
return;
}

---

因此,如果你发送一个订单,但它没有打开,你当然可以发送一个类似的代码来解决

重启终端是很好的,但此刻你应该如何处理其他挂在其他窗口上的专家顾问系统?

他们的操作逻辑自然不同,对频繁的重载反应不大,因为变量的值会丢失。

我们已经积累了这么久。

即使专家顾问是以欧元兑美元为基础的,你也意识到它可能以美元兑瑞郎的方式进入。

只需写下

LevelOpenBUY =MarketInfo("USDCHF",MODE_ASK);

...= OrderSend ("USDCHF",Lot, LevelOpenBUY, ...

我当然知道。 在一个多货币EA中,这正是其他货币对的控制方式。

但是,如果在主要货币对上,前一个小时的最后一个刻度出现,例如,在7.50,而该小时的第一个刻度出现。

8点10分,而在二级符号上,每小时的第一个刻度是8点。

那么就很难期望在主要货币对上徘徊的EA会在次要货币对上下单。

在8点,最好是在8点10分。

当EA像脚本一样操作时的情况,即不给系统休息的机会,只是一味地甩动和甩动。

尽管有虱子,我也不考虑它。最好是写一个脚本。



1,你认为Reconnect调用了Init()函数?并重新启动了EA?


你错了...


此外,明智的做法是保存计算好的和有价值的变量


如果我没有复杂的代码,我就把它存储在全球变量中。

如果代码很复杂,我就把它写到磁盘上,并在重新启动时读取它 - 如果重新启动是错误的,我就恢复它。

顺便说一下,很容易确定它是否是错误的。




---

2 如果某些货币对有一个新的时钟,而其他货币对没有刻度,那么不管什么时候有一个刻度,都会有一个新的时钟。

一个新的酒吧--或者更准确地说,一个新的小时可以被认为已经到来。


因此,有可能通过CLOSE来计算晚期交易,认为它们也被覆盖了。


那里的刻度线将在稍后出现,并且酒吧将被移位!!但真正的一小时已经过去了。

---


在没有刻度的货币对上下单是可以的--你知道怎么做吗?

我不是说它会在8点展出 - (传统数字)。


在任何货币对的新条线上,只要有新的TICK出现,就可以设置。


---


>o如果主货币对上一小时的最后一个刻度出现,例如,在7.50,而该小时的第一个刻度出现

>8点10分,在一个次级对上,每小时的第一个刻度在8点出现。

>很难指望一个徘徊在主要货币对上的EA会在次要货币对上下单。

>在8.00,或最多在8.10。


在多币种模式下工作,你不需要计算主要货币对的时间或不计算主要货币对的时间。

你只需要在任何货币对的新条形图的开始处捕捉一个刻度 - 并通过close来计算指标,而不是通过条形图的关闭来计算。

和进-出。


因为进场将在任何受控货币对的新条形图上进行,因为这将是一个新小时的信号!(在这种情况下是一个新的小时)





 
YuraZ:

如果你在多币种工作,你不需要为主栏或不主栏计时。

有必要抓住一个新的柱状体开始的刻度线,并通过CLOSE而不是柱状体关闭来计算指标。

和进-出


因为进场将准确地在任何受控货币对的新条形图上进行,因为这将是一个新的小时的信号!(在这种情况下是一个新的小时)

更多类似内容.......

 
LeoV:
YuraZ:

你不必为主要货币对或不主要货币对计时。

你需要捕捉任何货币对的新条形图的刻度线--并通过close而不是bar closing来计算指标。

和进-出


因为进场将准确地在任何受控货币对的新条形图上进行,因为这将是一个新的小时的信号!(在这种情况下是一个新的小时)

更多类似内容.......

按照这个逻辑重做专家顾问,出现问题的概率就会降低很多倍。

如果你在所有处于市场审查窗口的货币对上增加抓取新的一小时,特别是在日元上,那么实际上你不应该有失败。


1 只要不在所有对子上同步捕捉到新的栏位就可以了!!!。

2 在任何一个被控制的货币对上抓到新条,在当前收盘时开始重新计算所有需要的货币对 ...

(顺便说一下,你可能需要重做你的一些指标。)


决定进入 - 退出 - 或继续持有

 
YuraZ:

按照这个逻辑重做专家顾问,出现问题的概率将时常降低。

如果你在市场概览窗口中的所有货币对上增加新的一小时的捕获量,特别是在日元上,那么实际上你不应该有失败。

1只是没有抓住一个新的酒吧在所有对的同步!!!。

2 在任何一个被控制的货币对上抓到一个新的柱子,在当前的close上开始重新计算所有需要的货币对...

(顺便说一下,你的一些指标可能需要重新计算)

并作出进入-退出-或继续持有的决定。

谢谢你,Veri Macha)))))))))))))