你们好,请问如何编写mt 程序一次把单子全部平仓呢?谢谢

Discussion in 'MetaTrader' started by asdf123, Apr 10, 2006.

  1. 你们好,请问如何编写mt 程序一次把单子全部平仓呢?谢谢
     
  2. 这个容易,不过,这哥们可能已经会了。
     
  3. MT scrip 里面本来就有一个close脚本,每次只能平仓一个订单,我加了个循环语句,就可以把所有open order 都平仓掉了。

    这个还是放在Scrip目录里面。

    int start()
    {
    bool result;
    double price;
    int i,cmd,error;
    //----
    // for(i=0;i<OrdersTotal();i++)
    {
    if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
    {
    cmd=OrderType();
    //---- first order is buy or sell
    if(cmd==OP_BUY || cmd==OP_SELL)
    {
    while(true)
    {
    if(cmd==OP_BUY) price=MarketInfo(OrderSymbol(),MODE_BID);
    else price=MarketInfo(OrderSymbol(),MODE_ASK);
    result=OrderClose(OrderTicket(),OrderLots(),price,3,CLR_NONE);
    if(result!=TRUE) { error=GetLastError(); Print("LastError = ",error); }
    else error=0;
    if(error==135) RefreshRates();
    else break;
    }
    }
    }
    else Print( "Error when order select ", GetLastError());
    }
    //----
    return(0);
    }
     
  4. 顺势加码 兄厉害,一看就知道真的用程序为自己的交易服务,考虑的比较全面,实战派!

    其中滑点参数 3,可以用marketinfo函数获取比较好,因为对黄金这样的单子来说,点差一般50-100,3点是否有点小?

    另外,对死循环的情况,最好考虑一个次数或者时间限制。

    对服务器端执行的程序,的确,相当的时间基本在考虑如何保证成交,保证程序得到执行了。
     

  5. 1)滑点参数可以用: MarketInfo(OrderSymbol(),MODE_SPREAD) ,这样就可以适应不同货币对的需求了。

    2)这个程序本来就在 Script 目录下面的,我只是加了一个循环语句,在Script里面,程序只会执行一次,所以不会卡机的。

    3)对于expert 和 indicator里面的循环语句,我发现用双核的机器运行起来比较流畅。