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

 
Tenimagalon:
我看到我们正在进行真正的讨论。 亚历克斯,你也参与其中:))好吧,程序员先生,你有共识吗? 看,主要功能是根据总利润关闭相同类型的订单。开了4个头寸,其中2个是欧元兑美元(买入和卖出),2个是美元兑日元(买入和卖出)。如果买入订单获得了利润,它就会关闭它们,不理会卖出订单,或者不理会卖出订单。

接住

double MyProfit=1000; // уровень профита
//+--------------------------------------------------------------------------------------------------------------------+
//| Expert tick function                                                                                               |
//+--------------------------------------------------------------------------------------------------------------------+
void OnTick()
  {
//---
   if(Open_Pr("",0)>MyProfit)DelOrders("",0); // закрываем покупки
   if(Open_Pr("",1)>MyProfit)DelOrders("",1); // закрываем продажи
//---
  }
//+--------------------------------------------------------------------------------------------------------------------+
//|  Суммарный профит в валюте депозита открытых позиций                                                               |
//| or_ty=0 - ордера типа BUY                                                                                          |
//| or_ty=1 - ордера типа SELL                                                                                         |
//+--------------------------------------------------------------------------------------------------------------------+
double Open_Pr(string sy="", int or_ty=0)
  { double p = 0;
   if (sy == "0") sy = Symbol();
   for(int pos=OrdersTotal()-1;pos>=0;pos--)
     {
      if(OrderSelect(pos,SELECT_BY_POS)==true)
        {
         if(OrderSymbol() == sy || sy == "")
           {
            if(OrderType()==or_ty) {p+=OrderProfit()+OrderSwap()+OrderCommission();}
           }
        }
     }
   return(p);
  }
//+--------------------------------------------------------------------------------------------------------------------+
//| Функция удаления и закрытия ордеров                                                                                |
//| or_ty=0 - ордера типа BUY                                                                                          |
//| or_ty=1 - ордера типа SELL                                                                                         |
//+--------------------------------------------------------------------------------------------------------------------+
void DelOrders(string sy="", int or_ty=0)
  {
   while(true)
     {
      bool find_order=false;
      //----
      if (sy == "0") sy = Symbol();
      for(int pos=OrdersTotal()-1;pos>=0;pos--)
      if(OrderSelect(pos,SELECT_BY_POS)==true)
      if(OrderSymbol() == sy || sy == "")
        {
         find_order=true;
         //----
         if(OrderType()==or_ty)
           {
            RefreshRates(); int slip=(int)(((Ask-Bid)/Point)*2);
            if(OrderClose(OrderTicket(),OrderLots(),Bid,slip,clrBlue)==false){}
           }
         //----
         if(OrderType()==or_ty)
           {
            RefreshRates(); slip=(int)(((Ask-Bid)/Point)*2);
            if(OrderClose(OrderTicket(),OrderLots(),Ask,slip,clrRed)==false){}
           }
         Alert("Все ордера закрыты!");
        } 
      if(find_order==false) Alert("Нет ордеров!");break;
     } 
  }
//+--------------------------------------------------------------------------------------------------------------------+
 
Tenimagalon:
我看到我们正在进行真正的讨论。 亚历克斯,你也参与了:)) 好吧,程序员先生,你有共识吗? 看,问题是关闭相同类型的订单,以获得总的利润。4个仓位是开放的,2个欧元兑美元(买入和卖出)和2个美元兑瑞郎(买入和卖出)。如果买入订单获得了利润,它就会关闭它们,不理会卖出订单,或者不理会卖出订单。

像这样?:)

1

 
MakarFX:

接住

嗯,很有意思。非常感谢 :)
 
Taras Slobodyanik:

像这样?:)


如果您在不同的货币对上开了3个头寸,即2个白盘和1个坐盘,那么是的,在这种情况下,机器人会在实现总利润后关闭货币对。如果你试图在2个交易对上建立4个头寸,你永远不会得到总的利润,在这种情况下,专家会关闭交易对的订单,要么买入要么卖出。但他关闭了买入欧元兑美元和买入美元兑瑞士法郎或任何其他选定的货币对。
 
Taras Slobodyanik:

像这样?:)


是你自己做的对话框 还是SB 做的?
 
Tenimagalon:
如果您在不同的货币对上建立了3个头寸,即2个白盘和1个卖盘,那么是的,在这种情况下,机器人会在实现总利润后平仓。如果你试图在2个交易对上建立4个头寸,你永远不会得到总的利润,在这种情况下,专家会关闭交易对的订单,要么买入要么卖出。但他关闭了买入欧元兑美元和买入美元兑瑞士法郎或任何其他选定的货币对。

这里有很多的海湾和自己)

2

 
MakarFX:
你是自己做了这个对话框 还是SB

是否有任何小组?

ps.除非有对象,如果你有

 
Taras Slobodyanik:

是否有任何小组?

是的,这就是我问的原因。

如果你自己做了,请分享代码(折叠、展开、移动)。

 
Taras Slobodyanik:

这里有很多的海湾和自己)

塔拉斯 :)你应该开4个头寸,一个在欧元上,一个在瑞士法郎上,然后再开两个,一个在欧元上卖出,一个在瑞士法郎上卖出。 当买入和卖出达到共同的利润时,机器人将关闭它们或不关闭。在你的屏幕上,我看到有一个工具的订单,不应该是先验的。
 
Tenimagalon:
塔拉斯 :)你应该在一个步骤中建立4个头寸,一个做多欧元,一个做多瑞士法郎,然后再建立两个,一个卖出欧元,一个卖出瑞士法郎。 当买入和买入达到总利润时,机器人将关闭它们或不关闭。在你的屏幕上,我看到有一个工具的订单,不应该是先验的。

按买入或卖出对子分组是错误的

例如,在一个货币对(买入)中,可能有美元的买入,而在另一个货币对(卖出)中,可能有美元的卖出。

原因: