初学者的问题 MQL5 MT5 MetaTrader 5 - 页 24

 
请告诉我,我在另一个函数中使用了一个函数。在外部我声明了一个变量。在内部,我使用了它。这里是关于
  string PositionSymboll = "";
   if  (PositionSymboll=PositionGetSymbol(i)){//Возвращает символ соответствующей открытой позиции и автоматически выбирает позицию для дальнейшей работы с ней
    if (PositionGetInteger(POSITION_MAGIC)== MAGIC)//Функция возвращает запрошенное свойство открытой позиции, предварительно выбранной
              { BU_();}}

等等。它是这样发誓的。 'PositionSymboll' - 未宣布的标识符 Redo.mq5 2472 5

老实说,我没有想到在这里会有什么收获。如果我把它封装在我使用的BU_()函数内,金字塔将 "空"。我应该如何做得更好?

对我来说,在第一个函数中声明它是非常好的,在if循环中。

 
哦,你!甚至通过在void OnTick()函数中声明它,编译器也同样发誓,已经在第一个函数上发誓了。我不干了,我不干了......
 
Dimka-novitsek:
哦,你!甚至在void OnTick()函数中声明它,编译器也炸了,已经在第一个函数上炸了!你知道吗?我就不说了,刚掉出来......。
void OnStart()
  {
   int i=0; long MAGIC=1234;
   
   string PositionSymboll="";
   if(PositionSymboll=PositionGetSymbol(i))
     {//Возвращает символ соответствующей открытой позиции и автоматически выбирает позицию для дальнейшей работы с ней
      if(PositionGetInteger(POSITION_MAGIC)==MAGIC)//Функция возвращает запрошенное свойство открытой позиции, предварительно выбранной
        { BU_();}
     }
  }
void  BU_(){} 

编译正常进行,但构造

string PositionSymboll="";
   if(PositionSymboll)

有问题,你是在检查真/假字符串变量吗??????????,我很不解

这个问题是反问句。

 
谢谢你!!!。我还只是在学习,这是我在MQL5中的第一个EA。你说的修辞是什么意思?
 
Dimka-novitsek:
谢谢!!!。我只是在学习,这是我在MQL5中的第一个EA。你说的修辞是什么意思?

这意味着不要求回应。

只是在if语句中作为表达式传递的字符串类型的变量,只有在变量没有被初始化的情况下才会产生错误。

在所有其他情况下,变量内容将被赋予真实性。

 
谢谢你!!!。
 

请告诉我,是否有一个函数,如果在发送到该函数的价格上有一个挂单,应该返回真。但它返回的是 "秃头"(真/假交替)。请告知我在哪里错过了在mql5中处理订单的逻辑?(只是学习)。


bool OrderExist(double price)                                                                      // функция возвращает наличие ордера на передаваемой цене
{
         
uint total=OrdersTotal();
ulong    ticket;

for(uint i=0;i<total;i++)
   {
   if((ticket=OrderGetTicket(i))>0)      
      {
      if(NormalizeDouble(OrderGetDouble(ORDER_PRICE_OPEN),4)== price)
         {
         return(true);
         }
      }
   }
return(false);
}
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
DMXX:

请指示,有一个函数,如果在我发给函数的价格上有一个挂单,应该返回真。但它返回的是光秃秃的一个(交替的真/假)。请告知我在哪里错过了在mql5中处理订单的逻辑?(只是学习)。

但不能确定订单是否在给定的价格开仓,可能有滑点,所以我得到的结果是:如果订单按时开仓--真,如果没有开仓(价格已经偏移)--假。

 
fyords:
但这并不是订单在设定的价格开仓的事实,可能发生了滑点,这就是为什么我们得到以下结果:如果订单及时开仓--真,如果没有及时开仓(价格移动)--假。
是的,它在终端显示的是这个价格。如果是在操作中,说明已经成功放置了,对吗?
 
DMXX:
是的,它以这个价格挂在终端。如果它在操作中,就意味着它被成功放置,对吗?

是的,它被设置了,但是当它被触发时...

或者另一个例子:我们有一个挂单,它的价格与当前价格相差1个点,在下一个跳动点,价格不是1个点,而是,让我们说,3-5个点,这导致在一个错误的价格开盘。一个明显的例子是差距。

也可能是我不理解这个问题,是个哑巴。