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

 
законопослушный гражданин #:

就我所见,区别在于此。

你可以从头或从尾看一遍这个故事。没有任何区别。总之,该函数搜索的是具有最新收盘时间的订单。而如果你想删除或关闭订单,我们应该从列表的末端搜索。否则,该循环将跳过订单。

 
законопослушный гражданин #:

就我所见,区别如下。

在这种情况下,没有任何区别。从OrersTotal到0的循环只有在关闭头寸或删除订单的情况下才是强制性的。在其他情况下,这取决于你的喜好。

 
Mihail Matkovskij #:

你可以从头或从尾看一遍这个故事。没有任何区别。总之,该函数搜索的是最晚结束时间的订单。而如果你想删除或关闭订单,那么你需要从列表的末端搜索。否则,该循环将跳过订单。

如果该函数搜索具有最新收盘时间的订单,那么从最后,而不是从历史的开始--从当前时间到过去,搜索显然会更快。

 
Artyom Trishkin #:

如果该函数寻找的是最新收盘时间的订单,显然搜索速度会更快,不是从历史的开始,而是从结束--从当前时间到过去时间。

在相反的方向,该函数将更快地找到具有最新关闭时间的订单,它不会改变它,直到周期结束,并将返回结果。在前进方向上,它将搜索所有的订单并返回最后的一个订单。不同的是,这些变量将在循环的每一次传递中被覆盖。是的,有区别。但我认为这并不十分重要。虽然我 喜欢反方向的循环,而不是正方向的。尽管该功能将以某种方式发挥作用。

 
大家好,有没有办法在图表窗口之间进行程序性切换,即在程序中使任何图表处于活动状态?
 
Maksim Mihajlov #:
大家好,有没有办法在图表窗口之间进行程序性切换,即从程序中使任何图表处于活动状态?

查阅

图表_带至顶部

在所有其他图表的顶部显示图表

bool

 
Alexey Viktorov #:

查阅

图表_带至顶部

在所有其他图表的顶部显示图表

bool

谢谢你!

 
Mihail Matkovskij #:

你可以从头或从尾看一遍这个故事。没有任何区别。总之,该函数搜索的是最晚结束时间的订单。而如果你想删除或关闭订单,那么你需要从列表的末端搜索。否则,该循环将跳过订单。

总之,我做了两个完全相同的EA,除了订单手数之外!!!下面是结果。

不工作(即不打开BAY而不是SELL)。

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

// Если нет открытых ордеров, то входим в условие
      if(CountOrders()==0)
 {
//Если появился сигнал на покупку, то откроем ордер на покупку
  if(bSignalBuy())
  {
   if(GetLotSize()>LotControl) vOrderOpenSell();
   else vOrderOpenBuy();
  }
// Если появился сигнал на продажу, то откроем ордер на продажу
  if(bSignalSell())
  {
   if(GetLotSize()>LotControl) vOrderOpenBuy();
   else vOrderOpenSell();
  }
 }
}
,,,
double GetLotSize()
  {
   double Ls=0;
   for(int pos=OrdersTotal()-1;pos>=0;pos--)
     {
      if(OrderSelect(pos, SELECT_BY_POS, MODE_TRADES))
        {
         if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL) {Ls=OrderLots();}
           }
        }
     }
   return Ls;
  }

工作(即打开 BAY而不是SELL)。


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

// Если нет открытых ордеров, то входим в условие
      if(CountOrders()==0)
 {
//Если появился сигнал на покупку, то откроем ордер на покупку
  if(bSignalBuy())
  {
   if(GetLotSize()>LotControl) vOrderOpenSell();
   else vOrderOpenBuy();
  }
// Если появился сигнал на продажу, то откроем ордер на продажу
  if(bSignalSell())
  {
   if(GetLotSize()>LotControl) vOrderOpenBuy();
   else vOrderOpenSell();
  }
 }
}
...
double GetLotSize()
  {
   double Ls=0;
   datetime t=0;
   int i=OrdersHistoryTotal();
   for(int pos=0; pos<i; pos++)
     {
      if(OrderSelect(pos, SELECT_BY_POS, MODE_HISTORY))
        {
         if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if(t<OrderCloseTime()) {t=OrderCloseTime(); Ls=OrderLots();}
              }
           }
        }
     }
   return Ls;
  }
 
законопослушный гражданин #:

总之,我做了两个完全相同的EA,除了订单手数!!!结果如下。

不工作(即不打开BAY而不是SELL)。

工作(即打开 BAY而不是SELL)。


我再一次强调区别

1个变体

double GetLotSize()
  {
   double Ls=0;
   for(int pos=OrdersTotal()-1;pos>=0;pos--)
     {
      if(OrderSelect(pos, SELECT_BY_POS, MODE_TRADES))

2个变体

double GetLotSize()
  {
   double Ls=0;
   datetime t=0;
   int i=OrdersHistoryTotal();
   for(int pos=0; pos<i; pos++)
     {
      if(OrderSelect(pos, SELECT_BY_POS, MODE_HISTORY))
 
законопослушный гражданин #:

总之,我做了两个完全相同的EA,除了订单手数!!!结果如下。

不工作(即不打开BAY而不是SELL)。

工作(即打开 BAY而不是SELL)。


试着理解你的编码,而不是盲目地复制OrdersTotal,OrdersHistoryTotal

顺序选择

pool=MODE_TRADES

[in] 要选择的数据的来源。当选择参数为SELECT_BY_POS时使用。可以是以下数值之一。

MODE_TRADES(默认) - 在未结订单和挂单中选择订单,
MODE_HISTORY - 在已关闭和已删除的订单中选择订单。

    OrdersTotal - Торговые функции - Справочник MQL4
    OrdersTotal - Торговые функции - Справочник MQL4
    • docs.mql4.com
    OrdersTotal - Торговые функции - Справочник MQL4
    原因: