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

 
Karputov Vladimir:
梦想11

下午好,问题是这样的......有一个跟踪止损功能......。

如何改变它,使其能够拖动无限数量的订单,而不是只拖动一个订单 ...


我有一个这样的东西,它可以拖动一切。
extern int             TrailingStep = 10;     //Шаг трейлинга
extern int             TrailingStop = 30;     //Трейлинг стоп
//+------------------------------------------------------------------+
//Трейлинг стоп
void Trailing()
{
 int err = GetLastError();
 err = 0;
 
 for(int i = OrdersTotal()-1; i>=0; i--)
 {
  if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
  {
   if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
   {
    if(OrderType() == OP_BUY)
    {     
     if(Ask - OrderOpenPrice() > TrailingStop*Point)
     {
      if(OrderStopLoss() < Ask - (TrailingStep + TrailingStop)*Point)
      {
       if(!OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask - TrailingStop*Point,Digits),OrderTakeProfit(),0,clrGreen))
       {
        err = GetLastError();
        if(err != 0) Print("Ошибка модификации ордера № ",OrderTicket()," на покупку! Код ошибки: ",err,".");
       }
      }
     }
    }
    if(OrderType() == OP_SELL)
    {
     if(OrderOpenPrice() - Bid > TrailingStop*Point)
     {
      if(OrderStopLoss() > Bid + (TrailingStep + TrailingStop)*Point)
      {
       if(!OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid + TrailingStop*Point,Digits),OrderTakeProfit(),0,clrRed))
       {
        err = GetLastError();
        if(err != 0) Print("Ошибка модификации ордера № ",OrderTicket()," на продажу! Код ошибки: ",err,".");
       }
      }
     }
    }
   }
  }
 }
}
//+------------------------------------------------------------------+
 
barudkinarseniy:
我有一个这样的东西,它把一切都搞砸了。
这几乎是一样的,也许你在错误的地方叫它。
 
Alexey Viktorov:
你不能通过OnTimer()来做吗?

我是用定时器做的。已经想明白了,谢谢,我只是需要在每个时间循环中添加ChartRedraw函数 来更新图表。该死的,他们在mql4之后在mql5中增加了很多复杂的东西,但也许这是最好的...

 
另一个问题,如何将一个日期时间变量(日期时间类型)转换为1970年后的秒数?因为如果你把时间等同于一个普通的整数,这个int-variable确实会等于这个秒数,但是会有一个警告" 由于类型转换可能会丢失数据",这有点烦人,有没有什么办法解决这个问题?

 
loleg1991:
另一个问题,如何将一个日期时间变量(日期时间类型)转换为1970年后的秒数?因为如果你等同于一个普通的整数时间值,这个int-variable确实会等于这个秒数,但会有一个警告" 由于类型转换可能会丢失数据",这有点烦人,有没有什么办法解决这个问题?

阅读文档中的 "数字类型转换"。
Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
loleg1991:
另一个问题,如何将一个日期时间变量(日期时间类型)转换为1970年后的秒数?因为如果你等同于一个普通的整数时间值,这个int-variable确实会等于这个秒数,但是会有一个警告" 由于类型转换,可能会丢失数据",这就有点麻烦了,有什么办法可以解决这个问题?

datetime是指秒数

https://www.mql5.com/ru/docs/basis/types/integer/datetime

.

https://www.mql5.com/ru/docs/convert/stringtotime

Документация по MQL5: Основы языка / Типы данных / Целые типы / Тип datetime
Документация по MQL5: Основы языка / Типы данных / Целые типы / Тип datetime
  • www.mql5.com
Основы языка / Типы данных / Целые типы / Тип datetime - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
loleg1991:
另一个问题,如何将一个日期时间变量(日期时间类型)转换为1970年后的秒数?因为如果你把它等同于一个普通的整数时间值,这个int-variable就真的等于这个秒数,但是会有一个警告" 由于类型转换可能会丢失数据",这有点烦人,有没有什么办法解决这个问题?

如果你指的不是日期,而是秒数,那么明确地将其转换为长类型。
 
Alexey Kozitsyn:
如果你的意思是要显示秒数,而不是日期,那么明确地把它变成一个长类型。
是的,我指的是显示屏,谢谢你,这有帮助。
 
loleg1991:
是的,我是说关于显示的问题,谢谢你,这很有帮助。
不客气)
 

你好,请你告诉我,专家顾问是否可以在图表中添加一个对象,如按钮或切换开关,如果可以,如何添加?