错误、漏洞、问题 - 页 122

 
sergey1294:
我等不及让OrderCalcMargin()函数对CFD、期货、指数等正常工作。谁能分享一下正确计算这些工具的保证金 的公式?

在帮助中不是有一个吗?这似乎是...
 
Interesting:

而且我可能已经把整个事情提出来了,我想不出任何其他的原因......

我将尝试更详细地描述这种情况。

有一个简单的类"CMqlTimer", 这个类的任务是跟踪不同时间间隔的变化时刻:小时、天、周、月、年。

一切都以非常简单的原始方式实现,例如,如果分钟数等于0,那么 "新的小时 "已经到来;如果一周的天数与存储在变量中的天数不一致,那么一天的交替(服务器时间为 "00:00:00")已经到来。如此下去。

在CMqlTimer::OnTimer()中,当定时器被触发时,以1秒的间隔进行分析。如果时间间隔发生变化,必须执行该函数。例如,如果它是一个 "新 "的一天,函数CMqlTimer::OnRolloverDay()应该被执行。


如果我们删除其余的代码,只写OnRolloverDay(),结果将是如下。

所有的用户事件 都被跟踪,并传递给主类进行处理

它看起来像这样

所以,在测试模式下,事件不能到达OnChartEvent,也就是说,专家顾问不能处理在测试模式下使用 EventChartCustom 发送的事件。 通过显示日志中的所有事件进行了检查。

PS

最有趣的是,所有的事件都能在演示中得到,但在测试器中,它却拒绝工作。

直到319日全部工作,在测试器中,事件被成功处理。真正的最后一个版本,它的工作原理我不能说...

alexvd:
谢谢你。我们必须考虑一下。
请问,在这个方向上,事情进展如何?我真的需要测试器中的事件能够正常工作......。
 
Interesting:
这不是在帮助中吗?这似乎是...

我肯定有,我不明白的是公式中的以下变量,用红色突出显示

识别器

描述

公式

符号_计算_模式_外汇

外汇模式 - 外汇的利润和保证金计算

保证金: 批量*合同大小/杠杆率

利润:(收盘价-开盘价)*合约大小*手数

符号_计算_模式_期货

期货模式 - 计算期货的保证金和利润

保证金:Lots *InitialMargin*Percentage/100

利润:(收盘价-开盘价)*TickPrice/TickSize*Lots

symbol_calc_mode_cfd

CFD模式--计算CFD的保证金和利润

保证金:Lots *ContractSize*MarketPrice*Percentage/100

利润:(收盘价-开盘价)*合约大小*手数

symbol_calc_mode_cfdindex

CFD指数模式--计算CFD指数的保证金和利润

保证金:(手数*合约大小*市场价格)*价格/手数大小

利润:(收盘价-开盘价)*合约大小*手数

symbol_calc_mode_cfdleverage

CFD 杠杆模式 -使用杠杆交易时 计算CFD 的保证金和利润

保证金:(手数*合约大小*市场价格*百分比)/杠杆率

利润:(收盘价-开盘价)*合约大小*手数

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 
Interesting:
请问,在这个方向上,事情进展如何?我真的需要测试器中的事件能够正常工作......

在您的要求下,申请已经形成--它不会丢失!

 
alexvd:

在你的要求下,申请已经形成--它不会丢失!

谢谢你,我们将等待...
 

错误--它曾经工作,但现在不工作了。

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
  // вот так работает
     Print(TimeCurrent()+2*PeriodSeconds(PERIOD_D1));
  // а вот так нет (а раньше работало)  
     datetime    time_end=0;
     time_end=TimeCurrent()+2*PeriodSeconds(PERIOD_D1);
     Print(time_end);
  }
 
Prival:

错误--它曾经工作,但现在不工作了。

这对我来说很有效。

结果是这样的。

2010.09.08 20:15:12 Draft1_1 (EURUSD,M15) 2010.09.10 19:15:04
2010.09.08 20:15:12 Draft1_1 (EURUSD,M15) 2010.09.10 19:15:04

 
Prival:

错误--它曾经工作,但现在不工作了。

两者都对我有用。建立324个
 


2010.09.08 21:09:13 00 (Eurusd,M1) 2010.09.08 12:32:25
2010.09.08 21:09:13 00 (Eurusd,M1) 2010.09.10 19:09:13

我不知道,这行不通。数字不同。建立324。Win7 64位。

 

Prival:

2010.09.08 21:09:13 00 (EURUSD,M1) 2010.09.08 12:32:25
2010.09.08 21:09:13 00 (EURUSD,M1) 2010.09.10 19:09:13

我有这个。

2010.09.08 21:18:04 PrivalTest (EURUSD,H1) 2010.09.10 19:18:15
2010.09.08 21:18:04 PrivalTest (EURUSD,H1) 2010.09.10 19:18:15

会议记录。

2010.09.08 21:30:15 PrivalTest (EURUSD,M1) 2010.09.10 19:30:24
2010.09.08 21:30:15 PrivalTest (EURUSD,M1) 2010.09.10 19:30:24

Win XP。