新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1205

 

为什么编译器在这一行发出了警告?

datetime time_setup=OrderGetInteger(ORDER_TIME_SETUP);
possible loss of data due to type conversion    
 
你能给我一个提示吗?当我减去一个数字时,我得到3-5。我怎样才能使它看起来像0.00003?谢谢你。
 
awsomdino:

为什么编译器在这一行发出了警告?

因为XxxxGetInteger返回long(带符号的整数),而datetime是一个无符号的整数,是一个独立的类型。我们应该规定

datetime timeProperty = (datetime)XxxGetInteger(...)

 
prom18:
告诉我。当我做减法时,我得到一个数字3-5。我怎样才能使它看起来像0.00003?谢谢你。

你从哪里得到它?

 

你好!

OnCalculate函数 周期性地返回0

prev_calculated = 0

我认为这是因为图表被填充了来自第三方资源的报价。 不过,看起来图表并没有被改写。

我怎样才能在这些条件下覆盖新数据而不重写旧数据?

我只是创建了一个带有一些计算的指标,我并不是要加载报价。

void filter(const int rates_total,const int prev_calculated)
  {
 
   int start=prev_calculated;
//--- если значения индикатора уже были рассчитаны на предыдущем тике, то работаем на последнем баре
   if(prev_calculated>0)
      start--;
//---
   for(int p=2; p<Pmax; p++) // отбор по периодам
      for(int b=start>rates_total-Pmax?start:rates_total-Pmax; b<rates_total; b++)
        {
 
祝大家时间愉快。问题:在MT4中,当在测试器中使用交叉盘(没有英镑的货币对)时,如果进行测试的账户是美元账户,测试器如何计算平仓 的结果?对于以美元为单位的头寸总额的重新计算,测试者是采用当前时刻还是测试区间时刻的交叉盘基础货币 对美元的汇率?我强烈怀疑,在目前的情况下是这样。如果是这样的话,是不是可以让它在间隔期的时候计算?
Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
Mihail Matkovskij:

在MQL4中只有这种方式。

结果。


非常感谢您的帮助。

 
Mihail Matkovskij:

你从哪里得到它?

就在这里。

double price1=1.23450;
double price2=1.23447;
double delta=price1-price2;
Alert("Разбег ",delta);
 
prom18:

就在这里。

Alert("Разбег "+DoubleToString(delta,_Digits));

或Alert(StringFormat("Spread %.5f",delta))。

总的来说,要习惯它,这些只是同一个数字的不同表现形式。回想一下你美好的学生时代--这就是它的由来

 
Top2n:

你好!

OnCalculate函数 周期性地返回0

我认为这是因为图表被填充了来自第三方资源的报价。 不过,看起来图表并没有被改写。

我怎样才能在不重写旧数据的情况下覆盖新数据?

我只是创建有一些计算的指标,我并不是要加载报价。

声明一个全局变量(不要与终端的全局变量混淆)。

 bool firstRun = false;

并仅在第一次打勾时进行全面重新计算

// простейшее условие пересчёта
if(!firstRun) {
  // пересчёт ...
  firstRun = true;
}

如果firstRun也将与OnCalculate参数一起重置,那么指标将重新启动。

原因: