如何描绘均线转向和其它问题

Discussion in 'MetaTrader' started by univetsity, Feb 28, 2011.

  1. 本人新手 想写用均线转向作为进出信号
    但均线转向不会描述。

    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线的收盘价 怎么表达?十分感谢啊。:p
     
  2. 如果问题解决 我将所有代码公布出来供大家测试 说到做到
     
  3. 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"有可能吗?
     
  4. 谢谢前辈指点 我也在考虑这个5是不是有问题 是否要加一个时间限制 比如从现在开始逆序第三个BAR的收盘价大于5 但这个跟我主贴的第二个问题一样 我还不会表述 前辈能否再帮忙表述一下 十分感谢了
     
  5. 逆序第三个BAR的值 是这样表达吗?新手上路,
    m2=iMA(NULL,5,21,0,MODE_SMA,PRICE_CLOSE,3);
    谢谢
     
  6. 帮忙看看不能开单的原因

    我刚学MQL
    写了个简单的均线信号系统
    但不知为何 检测时不能开单 请大侠们帮忙看看问题出在哪里?自己看了半天,没想明白:confused:
    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);
    }
    //+------------------------------------------------------------------+