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

 

Boris.45:

Yedelkin : Time_H1[1][0]返回什么?

我不使用数组中的这个元素,因为我立即进行搜索最后5个柱状物的算法。 而Time_H1[1][0]是零柱的开盘时间,这个柱子的参数还没有形成。也许我错了,但根据我自己的经验,我看到使用零条的参数来形成时间序列会导致其失真

好吧,让我澄清一下这个问题。

如果 "Time_H1[numer_instr][i]=Time_buf[i]; "和 "Time_H1[1][1]=2011.01.03 11:00:00",Time_buf[0]返回什么?

 

请给我发送一个链接,以关闭某个(具体)职位。


也就是说,在某一点上,当满足平仓 的条件时,比如说BUY,专家顾问(此刻)就会关闭任何未平的BUY头寸。现在我面临一个问题,当我需要关闭某个(特定)BUY头寸时。

例如,当一个 "买 "的头寸被打开时,你可以给它一个特定的指定,但当它被关闭时,你必须指定 "买 "作为条件。
 
Lester: 请给我发送一个关闭某个(特定)头寸的链接,即在某一时刻,当关闭头寸 的条件得到满足时,例如买入,顾问(此刻)关闭任何未平仓的买入头寸。我现在面临一个问题,当我需要关闭某个(特定的)BUY头寸时。

例如,当打开一个BUY头寸时,你可以给它一个特定的指定,但当关闭它时,你需要指定它的 "存在"。
那你如何关闭 "任何未结头寸"?从本质上讲,每一个开放的位置都对应着一个单一的符号。因此,在平仓时,你必须使用该符号的名称,而不是为开仓指定一个 "特定符号"。
 
下面是一个例子。第一次买入买在平地,第二次买入关闭卖在平地,买在趋势。买入的收盘也发生在所有开放的BAY上--这不是好事,因为第二次收盘只与趋势有关。
if(Buy_Condition_1 || Buy_Condition_2)
     { 
       if(Buy_Condition_3 && Buy_Condition_10)
        {
         // есть ли в данный момент открытая позиция на покупку?
         if(Buy_opened)
           {
            Alert("Позиция на покупку имеется");
            return;    // не добавлять к открытой позиции на покупку
           }        
         mrequest.action = TRADE_ACTION_DEAL;    // немедленное исполнение
         mrequest.symbol = _Symbol;              // символ
         mrequest.magic = EA_Magic;              // Magic Number
         mrequest.volume = Lot;                  // количество лотов для торговли
         mrequest.type = ORDER_TYPE_BUY;         // ордер на покупку
         mrequest.type_filling = ORDER_FILLING_FOK;   // тип исполнения ордера - все или ничего

         //--- отсылаем ордер
         OrderSend(mrequest,mresult);         
                 
         // анализируем код возврата торгового сервера
         if(mresult.retcode==10009 || mresult.retcode==10008) //запрос выполнен или ордер успешно помещен
           {
            Alert("Buy успешно помещен, тикет ордера #:",mresult.order,"!!");
           }
         else
           {
            Alert("Запрос на установку ордера Buy не выполнен - код ошибки:",GetLastError());
            return;
           }
         }
      }
 if(Buy_Condition_4 || Buy_Condition_5)
     { 
       if(Buy_Condition_6)
        {
         // есть ли в данный момент открытая позиция на покупку?
  if(Buy_opened)
      {
      Alert("Позиция на покупку во Флэте есть");
      return;    // не добавлять к открытой позиции на покупку
      }   
    if(PositionSelect(_Symbol)==true) // есть открытая позиция
      {
       if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
       {
        Alert("Закрываю ордер Sell флэт!!!");                  
                                  
         mrequest.action = TRADE_ACTION_DEAL;// немедленное исполнение
         mrequest.symbol = _Symbol;         // символ
         mrequest.magic = EA_Magic;        // Magic Number
         mrequest.volume = Lot;           // количество лотов для торговли
         mrequest.type = ORDER_TYPE_BUY; // ордер на продажу      
         mrequest.type_filling = ORDER_FILLING_FOK;  // тип исполнения ордера - все или ничего
        //--- отсылаем ордер
         OrderSend(mrequest,mresult);
         // анализируем код возврата торгового сервера
         if(mresult.retcode==10009 || mresult.retcode==10008) //запрос выполнен или ордер успешно помещен
           {
          Alert("тикет закрытия Sell флэт #:",mresult.order,"!!");
           }
         else
           {
          Alert("Запрос на установку ордера закрытия Sell флэт не выполнен - код ошибки:",GetLastError());
          return;
           }
         }
       }
   
         mrequest.action = TRADE_ACTION_DEAL;    // немедленное исполнение
         mrequest.symbol = _Symbol;              // символ
         mrequest.magic = EA_Magic;              // Magic Number
         mrequest.volume = Lot;                  // количество лотов для торговли
         mrequest.type = ORDER_TYPE_BUY;         // ордер на покупку
         mrequest.type_filling = ORDER_FILLING_FOK;   // тип исполнения ордера - все или ничего

         //--- отсылаем ордер
         OrderSend(mrequest,mresult);         
                 
         // анализируем код возврата торгового сервера
         if(mresult.retcode==10009 || mresult.retcode==10008) //запрос выполнен или ордер успешно помещен
           {
            Alert("Buy на тренд успешно помещен, тикет ордера #:",mresult.order,"!!");
           }
         else
           {
            Alert("Запрос на установку ордера Buy тренд не выполнен - код ошибки:",GetLastError());
            return;
           }         
         }
      }
....
...
if(Buy_Close_1 || Buy_Close_2)
     {
      if(Buy_Close_3)
        {
         if(PositionSelect(_Symbol)==true) // есть открытая позиция
           {
            if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
                {
           Alert("Закрываю ордер BUY!!!");                  
                                  
         mrequest.action = TRADE_ACTION_DEAL; // немедленное исполнение
         mrequest.symbol = _Symbol;           // символ
         mrequest.magic = EA_Magic;           // Magic Number
         mrequest.volume = Lot;               // количество лотов для торговли
         mrequest.type = ORDER_TYPE_SELL; // ордер на продажу      
         mrequest.type_filling = ORDER_FILLING_FOK; // тип исполнения ордера - все или ничего
         //--- отсылаем ордер
         OrderSend(mrequest,mresult);
         // анализируем код возврата торгового сервера
         if(mresult.retcode==10009 || mresult.retcode==10008) //запрос выполнен или ордер успешно помещен
           {            
            Alert("тикет закрытия Buy #:",mresult.order,"!!");
           }
         else
           {
            Alert("Запрос на установку ордера закрытия Buy не выполнен - код ошибки:",GetLastError());
            return;
           }
        }
      }
    }
  }

if(Buy_Close_4 || Buy_Close_5)
        {
         if(PositionSelect(_Symbol)==true) // есть открытая позиция
           {
            if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
                {
           Alert("Закрываю ордер BUY!!!");                  
                                  
         mrequest.action = TRADE_ACTION_DEAL; // немедленное исполнение
         mrequest.symbol = _Symbol;           // символ
         mrequest.magic = EA_Magic;           // Magic Number
         mrequest.volume = Lot;               // количество лотов для торговли
         mrequest.type = ORDER_TYPE_SELL; // ордер на продажу      
         mrequest.type_filling = ORDER_FILLING_FOK; // тип исполнения ордера - все или ничего
         //--- отсылаем ордер
         OrderSend(mrequest,mresult);
         // анализируем код возврата торгового сервера
         if(mresult.retcode==10009 || mresult.retcode==10008) //запрос выполнен или ордер успешно помещен
           {            
            Alert("тикет закрытия Buy #:",mresult.order,"!!");
           }
         else
           {
            Alert("Запрос на установку ордера закрытия Buy не выполнен - код ошибки:",GetLastError());
            return;
           }
        }
      }
    }
 
Lester: 下面是一个例子。第一次买入买在平地,第二次买入关闭卖在平地,买在趋势。然而,这并不是好事,因为第二次收盘只与趋势有关。
所以你要在一个符号上关闭不同的 "位置"?
 
Yedelkin:
所以你要在同一个符号上关闭不同的 "位置"?

并非如此。

如果买入平仓,我不能关闭买入趋势。反之亦然。

也就是说,在同一个符号上关闭某些头寸--要么是平仓(如果平仓),要么是趋势(如果趋势开仓)。

 
Lester: 并非如此。如果买入平仓是开放的,那么我就不能关闭买入趋势。反之亦然。

也就是说,在一个单一的符号上关闭某些头寸--要么是平仓(以开盘平仓为准),要么是趋势(以开盘趋势为准)。

我明白了,不幸的是,由于术语不准确,我被误导了,无法进一步帮助你。在MQL5中,每个符号上只可能存在一个位置。买入平盘和买入趋势 " 类型的两个头寸不能同时存在于一个符号上 。事实上,你的问题不是关于mql5-positions,而是关于你所下的交易订单的追踪。如果你搜索论坛,三年前有一篇关于MT5的 "虚拟订单 "的文章。而后来这个话题在论坛上被反复提起。
 
Yedelkin:

好吧,我澄清一下这个问题。

如果 "Time_H1[numer_instr][i]=Time_buf[i]; "和 "Time_H1[1][1]=2011.01.03 11:00:00",Time_buf[0]返回什么?

我将尝试解释我在EA中试图实现的想法。

有标准函数CopyTime(), CopyOpen(), CopyHigh()等,使用相应的数组Time_buf[], Open_buf[], High_buf[]等。

使用这些函数,我们可以获得不同时间段和不同货币的历史数据。在这种情况下,Time_buf[0]是零条开盘的时间。

High_buf[0]是指在最后到达的tick时刻,零条上指定货币的最高价格值。

然后我为每个时间框架的每个参数Time、Open等创建二维数组。然后我有以下时间框架H1的数组

Time_H1[i][j], Open_H1[i][j], High_H1[i][j], 等等。在这些数组中,每一行都是专门为某种货币的历史数据准备的。因此。

使用货币编号循环 for( i=1; i<=nomer_instr; i++ ) 我用数组的相应行覆盖历史数据 Time_buf[j], High_buf[j] 等

Time_H1[i][j], High_H1[i][j] 等。

如果你使用ticks进行交易,你可以使用零条的当前参数。自然地,当前参数的零杆在

我有一个专家顾问,使用条形图而不是刻度图。我已经看到,当EA在条形图上操作时

High_buf[0]和Low_buf[0]的值不是零点收盘时的历史值,而是一些随机值。因此,如果我们把

在一个历史序列中的零条参数,整个历史序列的参数将被扭曲。这就是为什么我不使用零条的参数。

抱歉这么长。


 

Boris.45:

Yedelkin : 好的,让我澄清我的问题:如果 "Time_H1[numer_instr][i]=Time_buf[i]; "和 "Time_H1[1][1]=2011.01.03 11:00:00",Time_buf[0]会返回什么?

我将尝试解释 我试图在我的专家顾问中实现的想法

我不是在问这个想法 :)

Boris.45: Time_buf[0]--它是零杠的开启时间。

这就是我想问的,你提到的数组元素用什么值返回?

 

请指教!

如何改变市场概览中货币对的背景颜色

或者完全去掉颜色!

提前感谢!