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

 
Mikhail Tkachev:

我请求社区的帮助...
如何正确声明和创建MQL5全局对象?

全局性的在此声明

//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//--- 
int      Global_1;
double   Global_2;
string   Global_3;
long     Global_4;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
 
Alexey Viktorov:

我不知道该如何告诉你去阅读文件。如果你已经读过了,而标准功能由于某种原因不适合,你应该直接说出来......

好吧,关于 "发送",让版主来决定发送谁和发送到哪里...!例如,禁止...猜猜看是谁。至于常规函数,我在文档中没有看到json解析和保存/写入json文件。但你,像往常一样,知道文件中的某个秘密部分,那里都有......而我不知道...真他妈的。我很惭愧。我马上就要被阿列克谢嘘声了......:)

 

帮助人们,要同时打开最多 2个订单,我把这样不打开任何一个,没有pos_total打开。


void OPENORDER(string ord)

  {
    int pos_total=PositionsTotal();
    double priceL=m_symbol.Ask();
   if (pos_total>=2)
   {
   if(ord=="Sell")      
   
        //--- check for free money
            if(m_account.FreeMarginCheck(Symbol(),ORDER_TYPE_BUY,my_lot,priceL)<0.0)
               printf("We have no money. Free Margin = %f",m_account.FreeMargin());
            else
      if(!m_trade.Sell(my_lot,Symbol(),m_symbol.Bid(),my_SL,my_TP,""))
         Print("BUY_STOP -> false. Result Retcode: ",m_trade.ResultRetcode(),
               ", description of Retcode: ",m_trade.ResultRetcodeDescription(),
               ", ticket of order: ",m_trade.ResultOrder());                     // Если sell, то не открываемся
     double priceS=m_symbol.Bid();
   if(ord=="Buy")  
         //--- check for free money
            if(m_account.FreeMarginCheck(Symbol(),ORDER_TYPE_SELL,my_lot,priceS)<0.0)
               printf("We have no money. Free Margin = %f",m_account.FreeMargin());
            else
      if(!m_trade.Buy(my_lot,Symbol(),m_symbol.Ask(),my_SL,my_TP,""))
 
         Print("Buy -> false. Result Retcode: ",m_trade.ResultRetcode(),
               ", description of result: ",m_trade.ResultRetcodeDescription(),
               ", ticket of deal: ",m_trade.ResultDeal());
   return;
 }
}


我做错了什么?

 
Eugen8519:

帮助人们,要同时打开最多 2个订单,我把这样不打开任何一个,没有pos_total打开。



我做错了什么?

你写道,如果你已经有2个或更多的职位,就可以打开
if (pos_total<=2)
 
Alexey Viktorov:

马卡尔,你以前做的是正确的事,现在你想做愚蠢的事......

回想一下你五年级左右的数学课吧。(-3)-(-7)是多少,(-3)+(-7)是多少?

在计算器上很难检查,Excell会帮助你。


阿列克谢从五年级开始就懂得数学。好样的,阿列克谢。只是后知后觉的队长。:)

 
Mihail Matkovskij:

阿列克谢对数学的了解最早可追溯到五年级。好样的,阿列克谢。

在这种情况下,你错了。
 
MakarFX:

是的,谢谢你。我匆匆下了结论。我说对了)

问题不是函数可能有负值,而是为什么要在利润中加入掉期和佣金。你和阿列克谢可能并不了解。

Tsaryoff5614 想计算历史上的订单利润,该函数被称为lastloss(如果你说英语)。

https://www.mql5.com/ru/forum/160683/page1559#comment_23786144

他把自己和我都搞糊涂了。然后你和阿列克谢...傻瓜...

Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
  • 2021.08.02
  • www.mql5.com
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти н...
 
MakarFX:
在这种情况下,你是错误的。

谢谢你的提示,但它根本没有过滤,它打开了五个位置

   if(InpTrailingOrderLimit==0)
        return;
   for(int i=PositionsTotal()-1;i>=0;i--) // returns the number of open positions
      if(m_position.SelectByIndex(i))
         if(m_position.Symbol()==m_symbol.Name() && m_position.Magic()==m_magic)
           {
            if(m_position.PositionType()==POSITION_TYPE_BUY)
              {
               if(m_position.PriceCurrent()-m_position.PriceOpen()>ExtTrailingOrderLimit+ExtTrailingOrderStep)
                  if(m_position.StopLoss()<m_position.PriceCurrent()-(ExtTrailingOrderLimit+ExtTrailingOrderStep))        
                       OPENORDER("Buy");
              
                  
              }
            else
              {
               if(m_position.PriceOpen()-m_position.PriceCurrent()>ExtTrailingOrderLimit+ExtTrailingOrderStep)
                  if((m_position.StopLoss()>(m_position.PriceCurrent()+(ExtTrailingOrderLimit+ExtTrailingOrderStep))))
                        OPENORDER("Sell");


它告诉它要开仓,无论我把pos_total放在哪里,它都不起作用。

 
Eugen8519:

谢谢你的提示,但它根本没有过滤,它打开了五个位置


它告诉他要开仓,无论我把pos_total放在哪里,它都不起作用。

不需要删除
if (pos_total<=2)

我需要像我写的那样改变标志。

 
Mihail Matkovskij:

问题不是函数可以有负值,而是为什么要在利润中加入掉期和佣金。你和阿列克谢可能并不了解。

Tsaryoff5614 想计算利润,但他的函数被称为lastloss。他把自己和我都搞糊涂了。而现在你和阿列克谢...傻瓜...

这就是为什么我们要加上它,这样我们就可以计算出这一时期的所有利润。

原因: