错误、漏洞、问题 - 页 111

 
sergeev:

一切都很匹配。

2010.08.28 20:57:09 Servis (EURUSD,H1) L1=6653490000 L2=6653490000 L3=6653490000 M1=6653490000
2010.08.28 20:57:09 Servis (EURUSD,H1) A=665349 B=665349 C=665349
2010.08.28 20:57:09 Servis (EURUSD,H1) --- OnInit() --- 1 --- !


而我的M1并不匹配。

PQ      0       Servis (EURUSD,H8)      22:06:24        --- OnInit() --- 1 --- !!!  Старт  подготовки начальных параметров  !!!
LE      0       Servis (EURUSD,H8)      22:06:24         A=100652  B=100652  C=100652
CP      0       Servis (EURUSD,H8)      22:06:24         L1=1006520000   L2=1006520000   L3=1006520000   M1=4294966006
 
sergey1294:

根据你需要第一个数字的原因,你可以尝试这样做

是的,这样更容易,你甚至不必在结尾处加上额外的反转逗号
return(StringToTime((string)str.year+"."+(string)str.mon+".01 00:00"));
 
SHOOTER777:

我再一次向好奇的人们发出呼吁!

代码见附件。

如果我理解编程,应该是L1 = L2 = L3 = M1。 那你呢?

起初,编译器抱怨没有 "#import "lbS7N_Servis.ex5"。

在删除这一行后,它放弃了。

2010.08.28 22:19:51 Servis[1] (EURUSD,H1) L1=1016990000 L2=1016990000 L3=6617010000 M1=1016990000
2010.08.28 22:19:51 Servis[1] (EURUSD,H1) A=101699 B=101699 C=661701
2010.08.28 22:19:51 Servis[1] (EURUSD,H1) --- OnInit() --- 1 --- !

当我把代码中的帐号 换成我自己的帐号时,我得到了。

2010.08.28 22:26:46 Servis[1] (EURUSD,H1) L1=1016990000 L2=1016990000 L3=1016990000 M1=1016990000

2010.08.28 22:26:46 Servis[1] (EURUSD,H1) A=101699 B=101699 C=101699

2010.08.28 22:26:46 Servis[1] (EURUSD,H1) --- OnInit() --- 1 --- !

MQ服务器,构建316。

 
sergey1294:

和我的M1不匹配

独特的情况...:(
 
为什么SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_LIMIT), 返回0?
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 
sergeev:
一个独特的情况...:(

而且有多达三种独特的情况。这些是被检测出来的。又有多少人未被发现?

在这种状况下,MetaQuotes在一个月后开始了2010年的锦标赛

哦,MetaTrader 5充满了惊喜...

 
Kos:
为什么SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_LIMIT), 返回0?

此外,返回成功指示的版本(在帮助中指定为2.根据函数的成功,返回真或假。如果成功,该属性的值将被放置在目标变量中,通过最后一个参数的引用传递。) 报告呼叫的成功。

void OnStart()
{
  double SymbolVolumeLimit1 = SymbolInfoDouble(Symbol(), SYMBOL_VOLUME_LIMIT);
  double SymbolVolumeLimit2 = DBL_MAX;

  Print("Symbol() = ", Symbol(), ", bool SymbolInfoDouble() = ", SymbolInfoDouble(Symbol(), SYMBOL_VOLUME_LIMIT, SymbolVolumeLimit2));
  Print("SymbolVolumeLimit1 = ", SymbolVolumeLimit1, ", SymbolVolumeLimit2 = ", SymbolVolumeLimit2);
}

/* Вывод в лог (хронология - сверху вниз):
JN      0       1 (EURUSD,M15)  02:41:18        Symbol() = EURUSD, bool SymbolInfoDouble() = true
JJ      0       1 (EURUSD,M15)  02:41:18        SymbolVolumeLimit1 = 0, SymbolVolumeLimit2 = 0
*/

SymbolInfoDouble()的第二个版本返回true,即成功执行。你也可以在SymbolVolumeLimit2变量中看到它,它最初被初始化为DBL_MAX,但在调用SymbolInfoDouble()后收到了0。

而在MetaQuotes看来,在这种情况下,Expert Advisors应该以这种函数返回的值为基础,而不是使用硬编码值?

 

谁使用过OrderCheck功能。

这是个构造。

           MqlTradeRequest request;
           request.action=TRADE_ACTION_DEAL;
           request.symbol=_Symbol;
           request.volume=volume_exe;
           request.price=SymbolInfoDouble(_Symbol, SYMBOL_ASK);
           request.sl=0;
           request.tp=0;
           request.deviation=SymbolInfoInteger(_Symbol, SYMBOL_SPREAD)*2;
           request.type=ORDER_TYPE_BUY;
           request.type_filling=ORDER_FILLING_CANCEL;
           MqlTradeResult result;
           OrderCheck(request, result);
           if(OrderSend(request, result)==false)

编译时,我得到一个错误:'结果'--参数转换不允许。

如果你删除OrderCheck,一切都能正常编译,并在测试器中打开位置

 

下面是它的内容...

Alert(" прибыль=",ПросчетПрибылизаПериод(D'2010.08.01 00:00:00'));


double ПросчетПрибылизаПериод(datetime датаначалапросчетаприбыли)
  {
   int i;
   double прибыльзапериод;
   ulong тикет;
   HistorySelect(датаначалапросчетаприбыли,TimeCurrent());
   //HistorySelect(D'2010.08.20 00:00:00',D'2010.08.20 23:59:00');
   for(i=1;i<=HistoryDealsTotal();i=i+1)
     {
      тикет=HistoryDealGetTicket(i);
      if(HistoryDealGetInteger(тикет,DEAL_TYPE)==DEAL_ENTRY_IN || HistoryDealGetInteger(тикет,DEAL_TYPE)==DEAL_ENTRY_STATE)
         continue;
      прибыльзапериод=прибыльзапериод+HistoryDealGetDouble(тикет,DEAL_PROFIT)+HistoryDealGetDouble(тикет,DEAL_COMMISSION)+HistoryDealGetDouble(тикет,DEAL_SWAP);
     }
   return(прибыльзапериод);
  }

它应该计算从指定日期开始的交易利润。它给出了一个与实际情况完全不同的结果。例如,我得到了611,而不是大约2000的结果。我已经开始每天检查(评论行)。有(!!)天的结果是一样的,但通常不是应该的......(我找不到任何规律)。 而且调试器产生的整个交易量 的周期是完全一样的。虽然我只能追踪到这个数量的交易,因为除了int变量之外,其他的变量都没有显示值(表达式不能被评估)。

这段代码是否正确,我是否正确使用了调试器...?

 
SHOOTER777:

谢谢你。届时我将与开发商联系。

你好!请在服务台详细描述你的情况,在这里你要指定构建号、操作系统、比特率并附上代码。
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала - Документация по MQL5