小白EA教程第三篇:(认识几个关键函数)

avatar
· Views 449

1、开仓函数:OrderSend(),OrderSend(string symbol交易标的, int cmd购买方式, double volume购买手数, double price价格, int slippage滑点, double stoploss止损, double takeprofit止盈, void comment注解文本, void magic策略识别码, void expiration挂单有效时间, void arrow_color图标上箭头颜色)。对于OrderSend()函数的交易类型,有以下几种

常数                           值                                描述

OP_BUY                     0                         买仓

OP_SELL                    1                         卖仓

OP_BUYLIMIT          2                         买挂单交易

OP_SELLLIMIT         3                         卖挂单交易

OP_BUYSTOP           4                         买停挂单交易

OP_SELLSTOP           5                         卖停挂单交易

示例:OrderSend(Symbol(),OP_BUY,1,Ask,3,Ask-25*Point,Ask+25*Point,"My order #2",16384,0,Green) 表示在当前窗口货币对下买单,以Ask现价买入1手,允许最大滑点3,止损现价下跌25个点,止盈现价上涨25个点,订单注释为“My order #2”,策略编号为16384,该编号为EA特有编号,用于区分是哪个EA开的单,由于是买入订单非挂单,所以expiration直接填0即可。


2、平仓函数:OrderClose(),OrderClose(int ticket订单编号, double lots手数, double price价格, int slippage滑点, void Color图表中标记颜色)。对订单进行平仓操作。如果函数成功,返回的值是真实的。如果函数失败,返回的值是假的。

示例:

OrderSelect(12345,SELECT_BY_TICKET);

OrderClose(12345,1,Ask,3,Red),表示对订单号为12345的订单进行平仓,在Ask现价平1手,允许最大滑点为3,在图表中标记为红色。请注意,买单平仓以BID价平;卖单平仓以ASK价平。


平仓万能模板:

void DelOrder()

 {

  int OrderCount=OrdersTotal();#查询一共有多少持仓单

  for(int j=0; j<OrderCount;j++)遍历所有持仓单

   {

   if(OrderSelect(j,SELECT_BY_POS)==true)依次选中持仓单

    {

     if(OrderMagicNumber()==MagicNums && OrderSymbol()==Symbol())判断是否为EA编号MagicNums的EA开的单,当前订单的货币对是否为图表货币对

      {


       if(OrderType()==OP_SELL &&OrderProfit()>=0)如果是卖单且获利大于0

        {

         OrderClose(OrderTicket(),OrderLots(),MarketInfo(Symbol(),MODE_ASK),5,Red);平掉该笔订单,以当前买价ASK,允许最大滑点为5,在图表中标记为红色

        }

       else if(OrderType()==OP_BUY &&OrderProfit()>=0)如果是买单且获利大于0

        {

         OrderClose(OrderTicket(),OrderLots(),MarketInfo(Symbol(),MODE_BID),5,Blue);

平掉该笔订单,以当前卖价BID,允许最大滑点为5,在图表中标记为蓝色

        }

     

      }

    }

  }

}




3、修改函数:OrderModify(),OrderModify( int ticket订单编号, double price价格, double stoploss止损, double takeprofit止盈, datetime expiration挂单有效时间, void arrow_color在图表中允许对止损/赢利颜色进行修改。如果参量丢失或存在CLR_NONE 值,在图表中将不会显示。) 对于先前的开仓或挂单进行特性修改。如果函数成功,返回的值为 TRUE。如果函数失败,返回的值为FALSE。 获得详细的错误信息,查看 GetLastError()函数。注解: 开价格和有效时间的改变只对挂单而言。

示例:

OrderSelect(12345,SELECT_BY_TICKET);表示选中订单编号为12345的订单,记住在关掉订单或修改订单前一般都需先查找锁定订单,即先进行OrderSelect()

OrderModify(12345,OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Blue);

表示将订单编号为12345的订单止损价修改为当前卖价BID下跌TrailingStop个点,止盈不变,并且在图表中标记为蓝色。



     


면책 조항: 본 게시글에 표현된 견해는 전적으로 작성자의 견해이며 Followme의 공식 입장을 대변하지 않습니다. Followme는 제공된 정보의 정확성, 완전성 또는 신뢰성에 대해 책임을 지지 않으며, 서면으로 명시적으로 언급되지 않는 한 해당 내용을 기반으로 취해진 어떠한 조치에 대해서도 책임을 지지 않습니다.

이 글이 마음에 드시나요? 작성자에게 팁을 보내 감사의 마음을 전하세요.
댓글 0

더 오래된 의견은 없습니다. 소파를 가장 먼저 잡으십시오.

  • tradingContest