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

 

先生们,我已经查明了原因。问题出在平衡的计算上,需要考虑到一天的产出,虽然这个公式不会产生错误,但它并不可行。

   datetime TimeCheck_sb = StrToTime("1:00");

   if(TimeCurrent()==TimeCheck_sb)
     {
       sb1 = AccountBalance();
     }
// и это мне вы тут насоветовали на форуме!!!!!!


   далее там условие такое if(sb1 + sb1/100*LotRisk*(DayMultiplicatorProfit/100) > AccountBalance())
                               {

                                условие открытия ордера...

                                }

如果你是为了好玩而做,那就有效果。

AccountBalance()>0

如果你是为了好玩,那就没办法了。

sb1>0

double sb1;-声明如果有的话...


该问题应以

 sb1 = AccountBalance();
 
Порт-моне тв:

先生们,我已经查明了原因。问题出在平衡的计算上,需要考虑到一天的产出,虽然这个公式不会产生错误,但它并不可行。

如果你是为了好玩而做,那就有效果。

如果你是为了好玩而做,那是不行的

double sb1;-声明如果有的话...


解决问题的方法是

   datetime TimeCheck_sb = StrToTime("1:00");

   if(TimeCurrent()==TimeCheck_sb)

它不需要每天都工作......此外,如果它能定期工作,那就奇怪了。

 
Maxim Kuznetsov:

它不必每天都被触发......事实上,如果它经常被触发,就很奇怪了。

我怎样才能在一天的开始时固定余额?

 

对不起,但我还是不明白--如何将KEY_TILDE设置为两个事件--高亮和取消选择。我得到的不是同时触发和在终端显示信息,就是只有这个默认选项。一个傻子怎么能解释如何做呢?

if(id==CHARTEVENT_KEYDOWN)
     {
      switch(int(lparam))
        {
         case KEY_TILDE:
            ObjectSetInteger(0,"RectLabel",OBJPROP_SELECTABLE,true);
            ObjectSetInteger(0,"RectLabel",OBJPROP_SELECTED,true);
            Print("Выделить!");
            break;
            
            default:
            ObjectSetInteger(0,"RectLabel",OBJPROP_SELECTABLE,false);
            ObjectSetInteger(0,"RectLabel",OBJPROP_SELECTED,false);
            Print("Отменить выделение!");
            break;
        }
        
     }
 
DYM:

对不起,但我还是不明白如何将KEY_TILDE设置为两个事件--高亮和取消选择。我得到的不是同时触发和在终端显示信息,就是只有这个默认选项。一个傻子怎么能解释如何做呢?

检测到的事件--检查状态......如果它被选中--取消选择。否则将被选中。

 
DYM:

对不起,但我还是不明白如何将KEY_TILDE设置为两个事件--高亮和取消选择。我得到的不是同时触发和在终端显示信息,就是只有这个默认选项。一个傻子怎么能解释如何做呢?


//+------------------------------------------------------------------+
if(id==CHARTEVENT_KEYDOWN)
     {
      switch(int(lparam))
        {
         case KEY_TILDE: 
         TILDE(); 
         break;
        }
     }
//+------------------------------------------------------------------+
void TILDE()
  {
   if(ObjectGetInteger(0,"RectLabel",OBJPROP_SELECTABLE)==false)
     {
      ObjectSetInteger(0,"RectLabel",OBJPROP_SELECTABLE,true);
      ObjectSetInteger(0,"RectLabel",OBJPROP_SELECTED,true);
      Print("Выделить!");
     }
   else
     {
      ObjectSetInteger(0,"RectLabel",OBJPROP_SELECTABLE,false);
      ObjectSetInteger(0,"RectLabel",OBJPROP_SELECTED,false);
      Print("Отменить выделение!");
     }
  }
 
Порт-моне тв:

那么我如何在一天的开始时固定余额值呢?

有没有人有什么想法?

 
Порт-моне тв:

有人有什么想法吗?

   if(AccountBalance()>0)
     {
      sb1 = AccountBalance()-DayProfit();
     }
................

//+--------------------------------------------------------------------------------------------------------------------+
//|  Суммарный профит в валюте депозита закрытых с определённой даты позиций                                           |
//+--------------------------------------------------------------------------------------------------------------------+
double DayProfit()
  { double p = 0; datetime st=StrToTime("1:00");
   for(int pos=OrdersHistoryTotal()-1;pos>=0;pos--)
     {
      if(OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY)==true)
        {
         if(OrderCloseTime()>=st){p+=OrderProfit()+OrderSwap()+OrderCommission();}
        }
     }
   return(p);
  }
//+--------------------------------------------------------------------------------------------------------------------+
 
MakarFX:


我不知道该如何感谢你......只能说非常感谢你的帮助。我将尽量不再打扰你 :)
 
Порт-моне тв:

有人有什么想法吗?

捕捉当天的变化,并计算出那一刻的余额值

他们说 "采取正确的指标 "不是没有道理的--这不是几行代码就能解决的。这是一个相当有容量的算法。

捕捉日期变化很容易,"现在已知的日数不等于以前的日数",但进一步就很难了