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

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

谢谢

但在这个函数中: doubleGetProfitFromStart()

黄色只是函数的名称,我说得对吗?

原则上,它可以是任何东西?

是的,我这样称呼它是为了让它变得更清楚从开始获得利润
 
MakarFX:
是的,我这样命名是为了让它更清楚地了解从开始获得利润

谢谢你。

在专家勾选功能中

void OnTick() - 事实证明,代码行:if(CountOrders()==0&ObjectGetInteger(0, "lab_Button",OBJPROP_STATE))不仅是EA最初启动时的第一个订单触发器

但也包括根据条件关闭订单后的每次运行。

if(GetProfitFromStart()>CountProfit || GetProfitFromStart()<CountLoss*-1)
     {
      if (IsTesting())
        {
         CloseOrder(); ObjectSetInteger(0,"lab_Button",OBJPROP_STATE,false);
        }
      else
        {
         CloseOrder();
}
}

我的理解是否正确?

 
MakarFX:

所有亏损订单的损失金额

我一定是又误解了

或每个亏损订单的损失金额

或所有亏损订单的累计损失...


如果你只需要一次打印,你最好以脚本的形式进行

你不必这样做,你可以这样做

你的代码很有帮助,现在同样的信息没有显示100次,只有4-10次。也许应该增加else运算符。
 
Petronet:
你的代码很有帮助,现在同样的信息没有显示100次,只有4-10次。也许需要增加else运算符。
代码是如何写的,在哪里写的?
 
законопослушный гражданин:

谢谢你。

在专家勾选功能中

void OnTick() - 事实证明,代码行:if(CountOrders()==0&ObjectGetInteger(0, "lab_Button",OBJPROP_STATE))不仅是EA最初启动时的第一个订单触发器

但也包括根据条件关闭订单后的每次运行。

我的理解正确吗?

这些是运行EA的条件,如果( 如果)(CountOrders()==0(没有订单)&&ObjectGetInteger(0, "lab_Button",OBJPROP_STATE))( 并且按钮被 按下),那么我们可以交易

 
MakarFX:
代码是如何写的,在哪里写的?
该代码被插入EA的int start()函数的主体 中。我添加了else运算符,它搞砸了一个空变量,数据的重复已经停止,但当两个连续的减去利润时,数据的重复发生在10和2-3次。评论了我原来的循环,它提供了100次相同的信息。你工作的那个。
int start()
  {
  
  //for (int trade = OrdersHistoryTotal() - 1; trade >= 0; trade--) 
  //{
     //if ( OrderSelect(trade, SELECT_BY_POS,MODE_HISTORY)) 
     //{
         //old_order_type = OrderType();
         //if ( OrderProfit()<0 ) //последний закрытый советником ордер был убыточным, значит, следующий ордер открываем в направлении, противоположном закрытому с убытком
         //{
                //Print("Закрылись с минусом:", OrderProfit());
                //break; //прекращаем поиск
         //}
         
     //}
     //break;
  //}
  
  for(int pos=0; pos<OrdersHistoryTotal(); pos++)
     {
      if(OrderSelect(pos, SELECT_BY_POS, MODE_HISTORY))
        {
         if(OrderSymbol()==_Symbol)
           {
            if(OrderCloseTime()>=TimeStart)
              {
               if(OrderProfit()<0) {cnt=OrderProfit();
               Print("ордера с минусом", cnt); TimeStart=TimeCurrent(); cnt=0;}
               else gg=gg+1;
              }
           }
        }
     }
 
Petronet:
该代码被插入EA的int start()函数的主体 中。我添加了else运算符,其中螺丝空变量,数据的重复已经停止,但当连续两次亏损时,数据的重复出现10次和2-3次。评论了我原来的循环,它提供了100次相同的信息。你工作的那个。
// это в глобальные переменные
datetime TimeStart; 

// это в init()

TimeStart=Time[0];

当出现无利可图的交易时,将打印一次

 
大家好,我插入了一个函数,在周五晚上8:30关闭头寸

但顾问没有看到今天是星期五,每天都在平仓。

它看起来像这样

input bool     UseTimeLimitClose           = true;     // -- Funktion ein/ausschalten --
enum daysOfWeek 
   { 
     Monday = 1, 
     Tuesday = 2, 
     Wednesday = 3, 
     Thursday = 4, 
     Friday = 5
   };
input  daysOfWeek closday          =    5;            // -- Handel bis Tag --
input int    Close_Hour            =   20;            // -- Handel bis Uhrzeit Std.--
input int    Close_min             =   30;



void OnTick() 

 if(UseTimeLimitClose)
     {
      MqlDateTime TimeNow;
      TimeToStruct(TimeCurrent(),TimeNow);
      if  ( TimeNow.day_of_week >= closday  && TimeNow.hour >= Close_Hour && TimeNow.min >= Close_min  ) 
       {
          CloseAllPositions();
       }     

 
Eugen8519:
大家好,我插入了一个函数,在周五晚上8:30关闭头寸

但顾问没有看到今天是星期五,每天都在平仓。

像这样站着

void OnTick() 

 if(UseTimeLimitClose)
     {
      if  (TimeDayOfWeek(TimeCurrent())==closday  && TimeHour(TimeCurrent())>= Close_Hour && TimeMinute(TimeCurrent()) >= Close_min  ) 
       {
          CloseAllPositions();
       }     
 

请告知如何将其输出到一个外部变量中。

double levelss[7] = {0,0.236,0.382,0.5,0.618,1,1.618}; // Уровни Fibo