男人装郭碧婷图片: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时平所有合约