男人装郭碧婷图片:DATETIME 时间函数的理解

来源:百度文库 编辑:偶看新闻 时间:2024/04/30 10:41:02

DATETIME 时间函数的理解  

2010-05-11 08:57:35|  分类: 默认分类 |  标签: |字号大中小 订阅

datetime TimeBar= iTime(NULL, timeframe,shift);
datetime MONTH= TimeMonth( TimeBar ),
               DAY= TimeDay( TimeBar );
string      M= DoubleToStr(MONTH,0),
               D= DoubleToStr(DAY,0);


return   (M+"月"+D+"日"); 

 ==================================================================================

 

   Print("   iTime      =", iTime(NULL, PERIOD_H1, 0));
   Print("   Time[]     =", Time[0]);
   Print("   iBars      =", iBars(NULL, PERIOD_H1));
   Print("   Bars       =", Bars);

 

==================================================================================

extern int  开始年份 = 2010;
extern int  开始月份 = 1;
extern int  结束年份 = 2029;
extern int  结束月份 = 12;

 //----使用期限制
   if(开仓单数 <1)
     {
      if(TimeYear(CurTime()) < 开始年份) 
         if(TimeMonth(CurTime()) < 开始月份)  return(0);
      if(TimeYear(CurTime()) > 结束年份)  
         if(TimeMonth(CurTime()) > 结束月份 )  return(0);     
     }

 

 

 

==================================================================================

int timecontrol(int starttime, int stoptime)       //时间控制子函数 ( 开始时间,结否时间 )
    {
     if (Hour()>=starttime &&  Hour()<=stoptime)     //小时数>=开始时间 并且小时数<=结束时间
        {
         return(0);                                                     // 返回0
        }  
     return(1);                                                         // 返回1
    }

==================================================================================

 

v计算距离本K线结束还有x时间

void showtime()                                                                                                   // 显示时间 子函数( )
   {
   int  total,

         Sec;

    double Min;
     string   M,

                 S;
   RefreshRates();                                                                                               // 刷新数据
   
   total=iTime[0]+Period()*60-TimeCurrent();                                                       //总数赋为 现在开盘棒数 +当前周期数*60  -当前服务器时间
   Min=total/60.0;                                                                                                  //最小值赋为 总数/60
   Sec=MathMod(total,60);                                                                                   //秒 赋为 总数的60求模
   total=(total-Sec)/60;                                                                                          //
   if(total>=0&&total<=9) M="0";
   else M="";
   if(Sec>=0&&Sec<=9) S="0";
   else S="";
   ObjectCreate("showtime",OBJ_LABEL,0,0,0);
   ObjectSetText("showtime",M+total+":"+S+Sec,14,"Arial",OrangeRed);
   ObjectSet("showtime",OBJPROP_CORNER,0);
   ObjectSet("showtime",OBJPROP_XDISTANCE,x);//x,y自己设置放在哪个位置.
   ObjectSet("showtime",OBJPROP_YDISTANCE,y);
   //Comment(M+total,"分",S+Sec,"秒");
   }

==================================================================================

过期时间= TimeCurrent()+ PERIOD_D1 * 60 - (小时()+1)* 60;               //一小时后无效

==================================================================================

http://book.mql4.com/functions/datetime

 http://forum.mql4.com/5516

==================================================================================

 

static datetime  最后订单布置时间 = 0;
   
   if (TimeCurrent() -  最后订单布置时间 >= 3600) {                               //服务器时间数-最后订单布置时间>=3600时
       最后订单布置时间= TimeCurrent();                                                 // 将最后布单时间赋为 当前服务器时间数
      OrderSend(Symbol(), OP_BUY, 0.01, Ask, 999, 0, 0, "");                 //发送订单
   }
==================================================================================

if (Hour()>=20  &&  Hour()<=2)

if (Hour()>=20  || Hour()<=2)

if (!(Hour()>2 && Hour()<20 ))  

if (!(Hour()>=20  || Hour()<=2))

//=================================================================================

下一根的开盘怎么写?

datetime   Last_time                

int start()
 if(Time[0]>Last_time)               //判断是否为新bar 当现在开盘时间>最后时间变量
   {
      Last_time=Time[0];             //将最后时间变量赋为当前的开盘时间
   }

 

 

如果想在新K开始的时候开仓

if( close[1]>open[1] && ...)
{ordersend (  );}

==================================================================================

Time[0]不是当前时间

而是指当前这个柱的的开盘时间

==================================================================================

    if (订单总数 > 0)
      if (TimeCurrent() - OrderOpenTime() <= 60.0 *停止时间)  return(0);

==================================================================================

   if (TimeCurrent() > D'08.02.2015 07:03:57') return (0);

==================================================================================

服务器时间返回用什么函数?

MarketInfo()这个, 一个你必须要知道的函数

TimeCurrent( ) 这个时间不是服务器的

最后访问

MarketInfo(MODE_TIME)

时间差可以之间用减法 因为时间的数据类型实质上是int类型来的 显示的是秒 之后就不停累加 所以肯定不是返回10  而是返回一个很大的整数

int h=TimeHour(TimeCurrent());

 

比如 iLowest()   带 i 的函数,有个好处 就是可以选择bar   i 代表index

==================================================================================

 if (Time_Opened_Protection == TRUE) {
      for (int j = 0; j < OrdersTotal(); j++) {
         OrderSelect(j, SELECT_BY_POS, MODE_TRADES);
         if (OrderType() == OP_BUY && (OrderMagicNumber() == Magic)) {
            if (TimeCurrent() - OrderOpenTime() > 60 * LimitTime_1 && TimeCurrent() - OrderOpenTime() < 60 * LimitTime_2 && Bid >= OrderOpenPrice() + pips_1*DQADJ * Point) {
               RefreshRates();
               OrderClose(OrderTicket(), OrderLots(), Bid, Slippage*DQADJ, Orange);
               Print("Prot. Level 1 - Close Price :" + DoubleToStr(OrderClosePrice(), 4) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) +
                  " Profit : $ " + DoubleToStr(OrderProfit(), 2));
            }
            if (TimeCurrent() - OrderOpenTime() > 60 * LimitTime_2 && TimeCurrent() - OrderOpenTime() < 60 * LimitTime_3 && Bid >= OrderOpenPrice() + pips_2*DQADJ * Point) {
               RefreshRates();
               OrderClose(OrderTicket(), OrderLots(), Bid, Slippage*DQADJ, Orange);
               Print("Prot. Level 2 - Close Price :" + DoubleToStr(OrderClosePrice(), 4) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) +
                  " Profit : $ " + DoubleToStr(OrderProfit(), 2));
            }
            if (TimeCurrent() - OrderOpenTime() > 60 * LimitTime_3 && TimeCurrent() - OrderOpenTime() < 60 * LimitTime_4 && Bid >= OrderOpenPrice() - pips_3*DQADJ * Point) {
               RefreshRates();
               OrderClose(OrderTicket(), OrderLots(), Bid, Slippage*DQADJ, Orange);
               Print("Prot. Level 3 - Close Price :" + DoubleToStr(OrderClosePrice(), 4) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) +
                  " Profit : $ " + DoubleToStr(OrderProfit(), 2));
            }
            if (TimeCurrent() - OrderOpenTime() > 60 * LimitTime_4 && TimeCurrent() - OrderOpenTime() < 60 * LimitTime_5 && Bid >= OrderOpenPrice() - pips_4*DQADJ * Point) {
               RefreshRates();
               OrderClose(OrderTicket(), OrderLots(), Bid, Slippage*DQADJ, Orange);
               Print("Prot. Level 4 - Close Price :" + DoubleToStr(OrderClosePrice(), 4) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) +
                  " Profit : $ " + DoubleToStr(OrderProfit(), 2));
            }
            if (TimeCurrent() - OrderOpenTime() > 60 * LimitTime_5 && Bid >= OrderOpenPrice() - pips_5*DQADJ * Point) {
               RefreshRates();
               OrderClose(OrderTicket(), OrderLots(), Bid, Slippage*DQADJ, Orange);
               Print("Prot. Level 5 - Close Price :" + DoubleToStr(OrderClosePrice(), 4) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) +
                  " Profit : $ " + DoubleToStr(OrderProfit(), 2));
            }
            if (DayOfWeek() == 5 && Hour()>=19) {
               RefreshRates();
               OrderClose(OrderTicket(), OrderLots(), Bid, Slippage*DQADJ, Orange);
               Print("Prot. Level 5 - Close Price :" + DoubleToStr(OrderClosePrice(), 4) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) +
                  " Profit : $ " + DoubleToStr(OrderProfit(), 2));
            }
         }
         ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
         if (OrderType() == OP_SELL && (OrderMagicNumber() == Magic)) {
            if (TimeCurrent() - OrderOpenTime() > 60 * LimitTime_1 && TimeCurrent() - OrderOpenTime() < 60 * LimitTime_2 && Ask <= OrderOpenPrice() - pips_1*DQADJ * Point) {
               RefreshRates();
               OrderClose(OrderTicket(), OrderLots(), Ask, Slippage*DQADJ, Orange);
               Print("Prot. Level 1 - Close Price :" + DoubleToStr(OrderClosePrice(), 4) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) +
                  " Profit : $ " + DoubleToStr(OrderProfit(), 2));
            }
            if (TimeCurrent() - OrderOpenTime() > 60 * LimitTime_2 && TimeCurrent() - OrderOpenTime() < 60 * LimitTime_3 && Ask <= OrderOpenPrice() - pips_2*DQADJ * Point) {
               RefreshRates();
               OrderClose(OrderTicket(), OrderLots(), Ask, Slippage*DQADJ, Orange);
               Print("Prot. Level 2 - Close Price :" + DoubleToStr(OrderClosePrice(), 4) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) +
                  " Profit : $ " + DoubleToStr(OrderProfit(), 2));
            }
            if (TimeCurrent() - OrderOpenTime() > 60 * LimitTime_3 && TimeCurrent() - OrderOpenTime() < 60 * LimitTime_4 && Ask <= OrderOpenPrice() + pips_3*DQADJ * Point) {
               RefreshRates();
               OrderClose(OrderTicket(), OrderLots(), Ask, Slippage*DQADJ, Orange);
               Print("Prot. Level 3 - Close Price :" + DoubleToStr(OrderClosePrice(), 4) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) +
                  " Profit : $ " + DoubleToStr(OrderProfit(), 2));
            }
            if (TimeCurrent() - OrderOpenTime() > 60 * LimitTime_4 && TimeCurrent() - OrderOpenTime() < 60 * LimitTime_5 && Ask <= OrderOpenPrice() + pips_4*DQADJ * Point) {
               RefreshRates();
               OrderClose(OrderTicket(), OrderLots(), Ask, Slippage*DQADJ, Orange);
               Print("Prot. Level 4 - Close Price :" + DoubleToStr(OrderClosePrice(), 4) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) +
                  " Profit : $ " + DoubleToStr(OrderProfit(), 2));
            }
            if (TimeCurrent() - OrderOpenTime() > 60 * LimitTime_5 && Ask <= OrderOpenPrice() + pips_5*DQADJ * Point) {
               RefreshRates();
               OrderClose(OrderTicket(), OrderLots(), Ask, Slippage*DQADJ, Orange);
               Print("Prot. Level 5 - Close Price :" + DoubleToStr(OrderClosePrice(), 4) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) +
                  " Profit : $ " + DoubleToStr(OrderProfit(), 2));
            }
            if (DayOfWeek() == 5 && Hour()>=19) {
               RefreshRates();
               OrderClose(OrderTicket(), OrderLots(), Ask, Slippage*DQADJ, Orange);
               Print("Prot. Level 5 - Close Price :" + DoubleToStr(OrderClosePrice(), 4) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) +
                  " Profit : $ " + DoubleToStr(OrderProfit(), 2));
            }
         }
      }
   }

//-----------------------------------------------------------------------------------------------

int nowbuyorsell = 0;                                                                          //?
void CheckForOpen()
    {
     if (Time[0] == lasttime ) return;   //每时间周期检查一次  时间控制
     lasttime = Time[0];
     nowbuyorsell = buyorsell();  //获取买卖信号
     if (nowbuyorsell == 1)  //买 先结束已卖的
        CloseSell();
     if (nowbuyorsell == -1)  //卖 先结束已买的
        CloseBuy();
     if (TimeDayOfWeek(CurTime()) == 1)
        {
        if (TimeHour(CurTime()) < 3 )  return;  //周一早8点前不做 具体决定于你的时区和服务器的时区  时间控制
        }
     if (TimeDayOfWeek(CurTime()) == 5)
        {
        if (TimeHour(CurTime()) > 19 ) return;  //周五晚11点后不做
        }

 

     if (OrdersTotal( ) >= maxOpen) return ;  //如果已持有开仓次数达到最大,不做
     if (nowbuyorsell==0) return;   //不交易
     TradeOK();   //去下单交易
    }

 //---------------------------------------------------------------------------------------------------------


//| 周五平仓                                                         |

   if(DayOfWeek()==5 && Hour()>=21)    donttrade=true; // 21时禁止交易
   if(DayOfWeek()==5 && Hour()>=22)     allexit=true;   // 22时平所有合约