来自一个 "傻瓜 "的问题 - 页 205

 
Renat:

在Metaeditor中改变语言后,你是否重新启动了它?

让我们检查一下。

一切工作正常,我加载了mql5_russian.chm,在MetaEditor-e中放了俄语,重新加载,帮助弹出俄语。
 

我写了这段代码来检查位置。

CPositionInfo myposition;

if (myposition.Select(_Symbol))
{
   double Open_position=NormalizeDouble(myposition.PriceOpen(),_Digits);
   double SL_position  =NormalizeDouble(myposition.StopLoss(),_Digits);
   double TP_position  =NormalizeDouble(myposition.TakeProfit(),_Digits);
   Comment(" Open_position=",Open_position,"\n",
           " SL_position=",SL_position,"\n",
           " TP_position=",TP_position);
}

但由于某些原因,在注释中,数值出现了4位小数。而不是_Digits放5仍4个字符,放3-3个字符。

 
paladin800: 由于某些原因,数值在评论中出现了4位小数。而不是_Digits放5仍4位,放3-3位。
如果我只是输出myposition.PriceOpen(),它将显示什么?
 
paladin800:

我写了这段代码来检查位置。

但由于某些原因,在注释中,数值出现了4位小数。而不是_Digits放5仍4个字符,放3-3个字符。

你可能需要DoubleToString()函数。

 
paladin800:

我写了这段代码来检查位置。

但由于某些原因,在注释中,数值出现了4位小数。不放_数字,而是放5仍4个字符,放3-3个字符


在注释中输出小数的格式如下。将配音转换为字符串类型并在注释中输出。
 
我如何设置初始账户余额?我想根据账户的总利润来设置手数大小。那么,我如何正确确定初始余额?
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете - Документация по MQL5
 
tor4en: 我怎样才能确定初始账户余额?我想根据我账户的总利润来指定手数。那么,如何正确确定这个初始余额?

存款附有一份记录

交易状态

状态输入的标志

这是要看的方向。

 

我对myposition.Type()感到困惑。做了以下事情来检查。

CPositionInfo myposition;
// ---
string classtype="no position";
string functype="no position";

if (PositionSelect(_Symbol))
{  // --- section SELL
   if (myposition.Type()==POSITION_TYPE_SELL)
       classtype="SELL";
   if (PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
       functype="SELL";
   // --- section BUY
   if (myposition.Type()==POSITION_TYPE_BUY)
       classtype="BUY";
   if (PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
       functype="BUY";
}
Comment ("classtype=",classtype,", functype=",functype);

用可视化的方式测试的结果如下。
1) 没有位置:classtype=没有位置,functype=没有位置 // 和预期一样
2) 有一个卖出头寸:classtype=BUY, functype=SELL // classtype错误地确定了头寸方向
3) 有一个买入位置:classtype=BUY,functype=BUY //应该是这样的

我试着把if(myposition.Select(_Symbol))代替if(PositionSelect(_Symbol)),结果是一样的。也许myposition.Type()的写法应该不同,这样才能正确判断卖出的方向?

 
paladin800:

我对myposition.Type()感到困惑。做了以下事情来检查。

当用可视化进行测试时,结果如下。
1)没有位置:classtype=没有位置,functype=没有位置 //按要求而定
2) 有一个卖出的头寸:classtype=BUY, functype=SELL // classtype错误地确定了头寸方向。
3) 有一个买入位置:classtype=BUY,functype=BUY //应该是这样的

我试着把if(myposition.Select(_Symbol))代替if(PositionSelect(_Symbol)),结果是一样的。也许myposition.Type()应该以不同的方式书写,以正确判断卖出方向?

如果你仔细观察CPositionInfo类的 "带X射线",你可能会注意到Type()方法并不返回位置类型(与PositionType()方法不同)。

   CPositionInfo myposition;
// ---
   string classtype="no position";
   string functype="no position";

   if(PositionSelect(_Symbol))
     {  // --- section SELL
      if(myposition.PositionType()==POSITION_TYPE_SELL)
         classtype="SELL";
      if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
         functype="SELL";
      // --- section BUY
      if(myposition.PositionType()==POSITION_TYPE_BUY)
         classtype="BUY";
      if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
         functype="BUY";
     }
   Print("classtype=",classtype,", functype=",functype);
  }
 
uncleVic:

如果你仔细观察CPositionInfo "X-rayed "类,你会发现Type()方法并没有返回一个位置类型(与PositionType()方法不同)。

非常感谢你。有了你的提示,它就成功了!我在《编写EA时如何使用标准库交易类》一文的指导下,在 "1.6 CPositionInfo类 "一节中,有myposition.Type(),这可能需要纠正。