错误、漏洞、问题 - 页 2124

 
相关的

关于交易、自动交易系统和交易策略测试的论坛

虫子,虫子,问题

fxsaber, 2018.02.07 15:48

总结一下这个问题。CAccountInfo、COrderInfo、CSymbolInfo、CPositionInfo和CTerminalInfo的意义何在?

看了他们的源代码。使用它们有什么好处呢?


CDealInfo和CHistoryOrderInfo--这些也被写成了逻辑错误。使用它们的目的是什么?


嗯,我们有CTrade。它的一切都很清楚,它在哪里可以发挥作用,等等。但信息类的情况如何?

关于交易、自动交易系统和策略测试的论坛

错误、漏洞、问题

fxsaber, 2018.02.07 15:53

信息类中几乎所有的方法都应该是静态的。没有的原因是什么呢?
 
这是一个很酷的把戏!
2018.02.08 10:59:53.209 Network '8491779': no connection to MetaQuotes-Demo
2018.02.08 10:59:53.329 Network '8491779': authorization on MetaQuotes-Demo failed (Invalid account)
2018.02.08 10:59:53.904 Network current demo account '8491779' was deleted on trade server, new demo will be allocated
2018.02.08 10:59:53.904 Network demo account '8782677' was allocated on MetaQuotes-Demo


只有我有一个净值账户,并创建了Hedge。你能以相同的设置重新创建账户吗?

 
与本主题无关的评论已被移至"非主题"。
 
fxsaber:
这是一个很酷的把戏!


只有我有一个净值账户,并创建了Hedge。你能以相同的设置重新创建账户吗?

他们不会在这里看到你的信息 - 你必须写信给服务台。不知道是否可以恢复

 
Rashid Umarov:

你的信息不会在这里看到 - 你必须写信给服务台。我不知道它是否能被恢复

我在SR中有一个数量惊人的申请。又创造了一个,但这不是关键。

 

错误4109不会随着时间的推移而消失

专家测试代码

//Test1.mq5
void OnInit() { if ( f() != ERR_SUCCESS ) EventSetTimer( 10 ); }
void OnTimer()
{
        int   last_error = f();
        if (  last_error == ERR_SUCCESS ) EventKillTimer();
static int count = 1;
        Print( "Повтор (", count++, ")… результат: ", last_error );
}
int f( long value=-1 ) { return ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0,value) ? ERR_SUCCESS : GetLastError(); }

当启动终端时,在某些情况下返回以下结果(*):错误4109根本没有消失

2018.02.09 00:25:24.200 Test1 (ETHUSD,W1) 重复(1)...结果:0
2018.02.09 00:25:24.204 Test1 (EURUSD,D1) 重复(1)...结果:0
2018.02.09 00:25:24.204 Test1 (BTCUSD,M15) 重复(1)...结果:4109
2018.02.09 00:25:24.204 Test1 (BTCUSD,H1) 重复(1)...结果:4109
2018.02.09 00:25:24.205 Test1 (ZECUSD,D1) 重复(1)...结果:0
2018.02.09 00:25:24.205 Test1 (BTCUSD,M15) 重复(1)...结果:0
2018.02.09 00:25:24.343 Test1 (BTCUSD,D1) 重复(1)...结果:4109
2018.02.09 00:25:24.439 Test1 (BTCUSD,W1) 重复(1)...结果:4109
2018.02.09 00:25:34.195 Test1 (BTCUSD,H1) 重复(2)...结果:4109
2018.02.09 00:25:34.195 Test1 (BTCUSD,M15) 重复(2)...结果:4109
2018.02.09 00:25:34.348 Test1 (BTCUSD,D1) 重复(2)...结果:4109
2018.02.09 00:25:34.444 Test1 (BTCUSD,W1) 重复(2)...结果:4109
2018.02.09 00:25:44.203 Test1 (BTCUSD,M15) 重复(3)...结果: 4109
2018.02.09 00:25:44.204 Test1 (BTCUSD,H1) 重复(3)...结果: 4109
2018.02.09 00:25:44.367 Test1 (BTCUSD,D1) 重复(3)...结果: 4109
2018.02.09 00:25:44.452 Test1 (BTCUSD,W1) 重复(3)...结果: 4109
2018.02.09 00:25:54.214 Test1 (BTCUSD,M15) 重复(4)...结果:4109
2018.02.09 00:25:54.214 Test1 (BTCUSD,H1) 重复(4)...结果:4109
2018.02.09 00:25:54.381 Test1 (BTCUSD,D1) 重复(4)...结果:4109
2018.02.09 00:25:54.467 Test1 (BTCUSD,W1) 重复(4)...结果:4109
2018.02.09 00:26:04.221 Test1 (BTCUSD,M15) 重复(5)...结果:4109
2018.02.09 00:26:04.221 Test1 (BTCUSD,H1) 重复(5)...结果:4109
2018.02.09 00:26:04.395 Test1 (BTCUSD,D1) 重复(5)...结果:4109
2018.02.09 00:26:04.459 Test1 (BTCUSD,W1) 重复(5)...结果:4109
2018.02.09 00:26:14.247 Test1 (BTCUSD,M15) 重复(6)...结果:4109
2018.02.09 00:26:14.247 Test1 (BTCUSD,H1) 重复(6)...结果:4109
2018.02.09 00:26:14.402 Test1 (BTCUSD,D1) 重复(6)...结果: 4109
2018.02.09 00:26:14.464 Test1 (BTCUSD,W1) 重复(6)...结果: 4109
2018.02.09 00:26:24.265 Test1 (BTCUSD,M15) 重复(7)...结果:4109
2018.02.09 00:26:24.267 Test1 (BTCUSD,H1) 重复(7)...结果:4109
2018.02.09 00:26:24.399 Test1 (BTCUSD,D1) 重复(7)...结果:4109
2018.02.09 00:26:24.468 Test1 (BTCUSD,W1) 重复(7)......结果:4109等至无穷大

但在许多情况下,结果是相当好的(**):错误在第2次迭代时消失了。

2018.02.09 00:29:45.470 Test1 (BTCUSD,D1) 重复(1)...结果:0
2018.02.09 00:30:14.215 Test1 (BTCUSD,M15) 重复(1)...结果:4109
2018.02.09 00:30:14.215 Test1 (BTCUSD,D1) 重复(1)...结果:0
2018.02.09 00:30:24.209 Test1 (BTCUSD,M15) 重复(2)...结果:0

但它只在一个简单的测试例子中消失了,在真正的专家顾问中,即使你用EventSetTimer(100)做了延迟,这个错误也不会有任何改变。如果你选择有问题的图表的相应标签并点击它,错误可能会消失(为什么会有影响???),例如,选择BTCUSD,W1并点击它,在下一次迭代时会有成功结果。

Test1 (BTCUSD,W1) 重复(8)...结果。0

测试资料看起来是这样的。


窗口中的最大条数为100000。

为了得到一个结果(*),通常只需在一个配置文件中添加几个带有专家顾问的新图表,并重新启动终端即可。

Запуск платформы - Для продвинутых пользователей - MetaTrader 5
Запуск платформы - Для продвинутых пользователей - MetaTrader 5
  • www.metatrader5.com
По завершении установки в меню "Пуск" создается группа программ торговой платформы, а на рабочем столе дополнительно помещается ярлык программы. Используйте их для запуска. Нельзя запускать одновременно две копии платформы из одной директории. Чтобы одновременно запустить несколько копий, установите соответствующее количество программ в разные...
 

大家好!

有没有人想过:如何在EA内部获得一个外部变量的列表? 以便不在数组中重复列举它们?即当你在图表上安装时,EA会读取自身并查看其外部设置。

只通过模板?

 

建设1755 MT5

当使用ROBOTO字体和9号字体时--一半的文字没有被画出来。


8号的时候--完全没有问题。


Arial比较少,但字体很可怕。

 

使用第三方万国邮联时的重复交易

会议问题。当以前的终端没有关闭而新的终端被打开时,旧的终端工作,新的终端也工作。:-)

@fxsaber 你在什么地方写过如何追踪这个问题,找不到了

 
Vladislav Andruschenko:

大家好!

有没有人想过:如何在EA内部获得一个外部变量的列表?以便不在数组中重新枚举它们?即当你设置一个图表时,EA会读取自己并查看其外部设置。

只通过模板?

是的,使用模板。

#include <fxsaber\Expert.mqh> // https://www.mql5.com/ru/code/19003

input string Input1 = "Hello World!";
input int Input2 = 123;

string GetExpertData( const ulong Chart = 0 ) 
{ 
  string Str = NULL; 

  MqlParam Parameters[]; 
  string Names[]; 

  if (EXPERT::Parameters(Chart, Parameters, Names)) 
  { 
    Str += "\n" + ChartSymbol(Chart) + " " + EnumToString(ChartPeriod(Chart)) + " " + Parameters[0].string_value + "\n"; 

    const int Amount = ArraySize(Names); 

    for (int i = 0; i < Amount; i++) 
      Str += (string)i + ": "+ Names[i] + " = " + Parameters[i + 1].string_value + "\n"; 
  } 

  return(Str); 
}

void OnInit()
{
  Print(GetExpertData());
}


其结果是

0: Input1 = Hello World!
1: Input2 = 123


或如下

#include <fxsaber\Expert.mqh> // https://www.mql5.com/ru/code/19003

input string Input1 = "Hello World!";
input int Input2 = 123;

void OnInit()
{
  MqlParam Parameters[];
  string Names[];   
  
  if (EXPERT::Parameters(0, Parameters, Names))
    ArrayPrint(Parameters);
}


结果

    [type] [integer_value] [double_value]      [string_value]
[0]    ...               0        0.00000 "Experts\Test2.ex5"
[1]    ...               0        0.00000 "Hello World!"     
[2]    ...             123      123.00000 "123"              
原因: