本人新手 想写用均线转向作为进出信号 但均线转向不会描述。 double m1,ticket1; m1=iMA(NULL,5,21,0,MODE_SMA,PRICE_CLOSE,0); //用5分钟周期的21均线来研判 //假如以21均线比前一个期大于5做多做多信号 if ( m1>=m1+5) { ticket1=OrderSend(Symbol(),OP_BUY,0.1,Ask,5,Bid-105*Point,0,"My order #1",11,0,Green);} //这样算正确吗?请前辈帮忙看看 谢谢 //另外,TS想用以当前K线逆序第21个K线的收盘价 怎么表达?十分感谢啊。
double m1,m2,ticket1; m1=iMA(NULL,5,21,0,MODE_SMA,PRICE_CLOSE,0); m2=iMA(NULL,5,21,0,MODE_SMA,PRICE_CLOSE,1); //用5分钟周期的21均线来研判 //假如以21均线比前一个期大于5做多做多信号 if ( m1>=m2+5) { ticket1=OrderSend(Symbol(),OP_BUY,0.1,Ask,5,Bid-105*Point,0,"My order #1",11,0,Green);} 有一个疑问:"21均线比前一个期大于5"有可能吗?
帮忙看看不能开单的原因 我刚学MQL 写了个简单的均线信号系统 但不知为何 检测时不能开单 请大侠们帮忙看看问题出在哪里?自己看了半天,没想明白 bool UseTimeLimit=true; int StartHour=0; // Start trades after time int StopHour=24; // Stop trading after time extern double TradeSizePercent=5; // extern double Lots=0.1; // standard lot size. extern int maxLots =3; //+---------------------------------------------------+ //+---------------------------------------------------+ extern double SL = 105; extern bool TP=FALSE; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { double m1,m2,m3,m4,ticket1,ticket2; int total,cnt,Buy=0, Sell=0; m1=iMA(NULL,5,21,0,MODE_SMA,PRICE_CLOSE,0); m2=iMA(NULL,5,55,0,MODE_SMA,PRICE_CLOSE,3); m3=iMA(NULL,5,21,0,MODE_SMA,PRICE_CLOSE,0); m4=iMA(NULL,5,55,0,MODE_SMA,PRICE_CLOSE,3); total=OrdersTotal(); if(AccountFreeMargin()<(3*Lots)) { Print("We have no money. Free Margin = ", AccountFreeMargin()); return(0); } //open //buy if ( m1>=m2+0.1) { ticket1=OrderSend(Symbol(),OP_BUY,0.1,Ask,5,Bid-105*Point,0,"My order #1",11,0,Green); Buy++; } if (m3>=m4+0.1) {ticket2=OrderSend(Symbol(),OP_BUY,0.1,Ask,5,Bid-105*Point,0,"My order #2",12,0,0); Buy++;} //sell if (m1<=m2-0.1) { ticket1=OrderSend(Symbol(),OP_SELL,0.1,Bid,5,Ask+105*Point,0,"My order #1",22,0,Red); Sell++;} if (m3<=m4-0.1) {ticket2=OrderSend(Symbol(),OP_SELL,0.1,Bid,5,Ask+105*Point,0,"My order #2",23,0,0); Sell++;} //close for(cnt=total-1;cnt>=0;cnt--) //close buy { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderType()==OP_BUY) { if(m1<m2+0.1) {OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); Buy--;} if(m3<m4+0.1) {OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); Buy--;} } //close sell if(OrderType()==OP_SELL) { if(m1>m2+0.1) {OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); Sell--;} if(m3<m4+0.1) {OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); Sell--;} } } //---- //---- return(0); } //+------------------------------------------------------------------+