本程序是一个MQL4语言的交易策略模块。主要功能是计算指定区间内的最高价和最低价,并根据设定条件来判断是否开仓或平仓。

程序中使用了一些变量和函数,其中比较重要的有:

  • MaxH:指定区间内的最高价;
  • MinL:指定区间内的最低价;
  • High[]:存储历史K线的最高价数组;
  • Low[]:存储历史K线的最低价数组;
  • OrdersTotal():获取当前账户中订单的总数;
  • OrderSelect():选择某个订单进行操作;
  • OrderTicket():获取订单的唯一标识码;
  • OrderType():获取订单的类型(买单或卖单);
  • OrderLots():获取订单的手数;
  • OrderProfit():获取订单的当前盈亏;
  • OrderClose():平掉某个订单。

程序的主要流程如下:

首先,将MaxH和MinL初始化为指定区间的最高价和最低价。

然后,进行历史K线的遍历,从左到右,更新MaxH和MinL的值。

接着,判断当前是否有开仓。如果没有,则计算porog和canal的值。porog表示止盈点数,canal表示价格间隔数。

然后,计算Htrend和Ltrend的值,分别表示最高价和最低价的变化量。

最后,遍历所有的订单,判断是否需要平仓。如果订单的当前盈亏超过止盈点数porog,或者符合其他设定条件,则进行平仓操作。同时,更新相关的变量值。

void Block4()//模块4-循环结束后,MaxH和MinL分别表示指定区间内的最高价和最低价。
{
  MaxH=High[per];MinL=Low[per];//per=14
  for (int m=per; m>=0; m--)//遍历,从左到右
     {
     if (High[m]>MaxH) MaxH=High[m];//如果当前K线的最高价大于MaxH,则将MaxH更新为当前K线的最高价
     if (Low [m]<MinL) MinL=Low [m];//如果当前K线的最低价小于MinL,则将MinL更新为当前K线的最低价。
     //计算指定区间最高价和最低价
     }
     
  if (b+s==0)//如果买卖单数为0,即没有开单
     {
       porog=MathRound((0.40*(MaxH-MinL))/Point)*10;//四舍五入
       canal=(MaxH-MinL)/Point;//得到点数pip
       //在MQL语言中,Point是指最小价格变动单位,通常是小数点后第四位,例如EUR/USD的Point为0.0001。
       //将价格除以Point可以得到价格的点数(pip),这是一种常用的计算方式,用于进行技术分析和风险管理。
       //例如,如果EUR/USD的当前价格为1.1234,那么将其除以0.0001得到11234点。
     }
   
  Htrend=MaxHOld-MaxH;
  Ltrend=MinLOld-MinL;
  
  if (b+s>0)//如果有订单
     {
     for (int x=0; x<OrdersTotal(); x++)//历遍总数
        {
        OrderSelect(x, SELECT_BY_POS, MODE_TRADES);
        if (OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
         {
        
           if (OrderType() == OP_SELL) //如果是卖单
             {
             if (OrderProfit()>porog || (wpr<-85 && wpr > wpr1 && OrderProfit()>0) || (DayOfWeek()==mweek && mhour==Hour()))
             {
               OrderClose(OrderTicket(),OrderLots(),Ask,slip,White);
               s--; 
               ssig=0;
             }
           }
           
           if (OrderType() == OP_BUY) 
           {
           if (OrderProfit()>porog ||
              (wpr>-15 && wpr < wpr1 && OrderProfit()>0) || 
              (DayOfWeek()==mweek && mhour==Hour())) 
              {
              OrderClose(OrderTicket(),OrderLots(),Bid,slip,White);
              b--; 
              bsig=0;
              }
           }
           
           } //   
           } // for
       } // if
     
   } // void function
MQL4交易策略模块:计算指定区间最高价和最低价,并进行开仓平仓操作

原文地址: https://www.cveoy.top/t/topic/ohda 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录