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

 
Tretyakov Rostyslav #:

我也没有注意到大象)))。你认为未平仓订单的收盘价等于什么?

试着这样做。

另一个问题

你是如何以点数计算利润的--这是OrderProfit * Point吗?

 
Mihail Matkovskij #:

然后是SymbolInfoDouble

为什么不马上进行?

 
Alexander Avksentyev #:

另一个问题

利润的计算单位是点,是OrderProfit * Point吗?

OrderProfit 返回 净利润 值,(以入金货币计算的)
Point-
当前工具在报价货币中的点数大小

全部来自参考资料

 
Andrey Sokolov #:

OrderProfit 返回 净利润 值,(以入金货币计算的)
Point - 当前仪器点的大小,以报价货币计算。

全部来自参考资料

我同意,我看了参考资料。

我把利润乘以点,得到0.00001或更少。

 
Alexander Avksentyev #:

我同意,我看了参考资料。

将利润乘以点,得到0.00001或更少。

这是件奇怪的事情

 
Alexander Avksentyev #:

另一个问题

利润计算的单位是点,是OrderProfit * Point 。

价格可以超过20点,并给予50美元的利润。

它可以在5点内通过,但利润将是80美元。

这对每个符号都是一样的,在相同的点位上,使用法郎的利润将比使用加拿大的大。

 
Artyom Trishkin #:

为什么不马上进行?

我在网上写了一个简单的例子。我甚至没有进入编辑部。亚历山大是个程序员新手,他不需要任何额外的复杂性。请看他上面的代码。但如果我们谈论的是开发一个多符号机器人,你可以使用SymbolInfoDouble。谁阻止你这样做?

 
Mihail Matkovskij #:

SymbolInfoTick函数将tick数据写入一个特殊的MqlTick 结构中,从该结构的字段中可以检索到。

感谢

 

另一个问题出现了

我在角落里刻了字

//+-----------------------------------------------------------------------------------------------+
int OnInit()
  {
Start          = TimeCurrent();
MaxMartinLot   = Lot*MathPow(1.4,OrdersClose);
MaxMartinLot2  = Lot*MathPow(K_Martin2,OrdersClose2);
AC             = StringConcatenate(" ", AccountCurrency());
int Y          = 20;
DrawLABEL("lab_Take",1,5,Y,clrLime,"LOT: "); 
return(INIT_SUCCEEDED);
  }
//+-----------------------------------------------------------------------------------------------+
void OnDeinit(const int reason)
  {

  }
//+-----------------------------------------------------------------------------------------------+
void OnTick()
  {
// Получим значение индикатора
   dMA = iMA(Symbol(), 0,PeriodMA, MovingShift, MODE_SMA, PRICE_CLOSE, 0); // MODE_SMA - простое усреднение , значение 0. PRICE_CLOSE- цена закрытия, значение 0.

// Если нет открытых ордеров, то входим в условие
      if(CountOrders()==0)
     {
// Если появился сигнал на покупку, то откроем ордер на покупку
      if(bSignalBuy() == true)
         vOrderOpenBuy();

// Если появился сигнал на продажу, то откроем ордер на продажу
      if(bSignalSell() == true)
         vOrderOpenSell();
     }
       DrawLABEL("lab_Take",1,5,0,Color(),StringConcatenate("LOT: ",DoubleToStr(LOT(),2)));  
  }

在黄线上给出这样的警告。

由于类型转换而可能造成的数据损失

看起来我把它们弄混了。

一切正常

如果没有交易,只有一种颜色是亮的

如果有一个交易被打开 - 亮起另一种颜色

Color()这样设置。

double Color()
  {
   double CL =clrRed;
   if(CountOrders()==0) CL =clrYellow;
   return(CL);
  }
请看一下。
 
законопослушный гражданин 可能造成的数据损失

看起来我把它们弄混了。

一切正常

如果没有交易,只有一种颜色是亮的

如果有一个交易被打开 - 亮起另一种颜色

Color()这样设置。

请看一下。

函数Color应该返回color,而不是double。

color Color()
  {
   color CL = clrRed;
   if(CountOrders() == 0) 
     CL = clrYellow;
   return(CL);
  }

该网站引擎添加的链接也将是有用的研究。

原因: