MT5中有用的自帶自定義函數講解 [MT4]
作者:
MT4 來源:
cxh99.com 發布時間:2012年05月16日 點擊數:
【
收藏到本網的會員中心】
- 因為MQL5的交易方式改成 兩個結構參數的樣子,很多人都會暈好久,對沒入門的人來說就更難理解了。
在這里,我們制作了類似MQL4的交易功能,用自定義函數實現的,只需要拷貝到你的EA里,然后按例子的樣子使用就行了。
前提:
以下自定義函數都需要用到幾個公共的結構,所以先要把下面的公共定義部分拷貝在程序的頭部。然后在拷貝后面的自定義指標。
程序頭部的交易結構定義:
復制代碼- int MagicHere=12345;
- MqlTradeRequest MyTrade;
- MqlTradeResult MyResult;
自定義函數一:市價單入場函數
復制代碼- bool PositionOpen(ulong TradeOrder,double Vol,double ST,double TP,ulong Slip,int Magic,string Comm)
- {
- MyTrade.action=TRADE_ACTION_DEAL;
- MyTrade.magic=Magic;
- MyTrade.symbol=Symbol();
- MyTrade.volume=Vol;
- //SymbolInfoTick(Symbol(),MyTick);
- switch(TradeOrder)
- {
- case ORDER_TYPE_BUY:
- MyTrade.price=SymbolInfoDouble(Symbol(),SYMBOL_ASK);
- MyTrade.type=ORDER_TYPE_BUY;
- break;
- case ORDER_TYPE_SELL:
- MyTrade.price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
- MyTrade.type=ORDER_TYPE_SELL;
- break;
- }
- MyTrade.deviation=Slip;
- MyTrade.type_filling=ORDER_FILLING_AON;
- MyTrade.comment=Comm;
- MyTrade.sl=ST;
- MyTrade.tp=TP;
- return(OrderSend(MyTrade,MyResult));
- }
調用舉例:按市場價賣出當前貨幣0.1手,無止損止盈。
復制代碼- PositionOpen(ORDER_TYPE_SELL,0.1,0,0,10,MagicHere,"Test");
自定義函數二:按市價平倉當前貨幣持倉單
復制代碼- bool PositionClose(const string symbol,ulong deviation)
- {
- double price;
- //--- checking
- if(PositionSelect(symbol))
- {
- if(PositionGetInteger(POSITION_TYPE)==ORDER_TYPE_BUY)
- {
- //--- prepare query for close BUY position
- MyTrade.type =ORDER_TYPE_SELL;
- MyTrade.price=SymbolInfoDouble(symbol,SYMBOL_BID);
- }
- else
- {
- //--- prepare query for close SELL position
- MyTrade.type =ORDER_TYPE_BUY;
- MyTrade.price=SymbolInfoDouble(symbol,SYMBOL_ASK);
- }
- }
- //--- setting request
- MyTrade.action =TRADE_ACTION_DEAL;
- MyTrade.symbol =symbol;
- MyTrade.volume =PositionGetDouble(POSITION_VOLUME);
- MyTrade.sl =0.0;
- MyTrade.tp =0.0;
- MyTrade.deviation =deviation;
- MyTrade.type_filling=ORDER_FILLING_AON;
- //---
- return(OrderSend(MyTrade,MyResult));
- }
調用舉例:按市價單平倉 滑點可接受5點內
復制代碼- PositionClose(Symbol(),5);
自定義函數三:修改當前貨幣持倉單的止盈止損
復制代碼- bool PositionModify(const string symbol,double sl,double tp)
- {
- //--- setting request
- MyTrade.action=TRADE_ACTION_SLTP;
- MyTrade.symbol=symbol;
- MyTrade.sl =sl;
- MyTrade.tp =tp;
- //---
- return(OrderSend(MyTrade,MyResult));
- }
調用舉例:設置新的止盈止損
復制代碼-
- PositionModify(Symbol(),NewStop,NewTarget);
自定義指標四:當前貨幣持倉單的手數總和
復制代碼- double PositionVolume()
- {
- if(PositionSelect(Symbol(),0))
- {
- double Vol=PositionGetDouble(POSITION_VOLUME);
- return(Vol);
- }else return(-1);
- }
自定義指標五:發出當前貨幣的掛單
復制代碼- bool OrderOpen(ENUM_ORDER_TYPE order_type,double volume,double limit_price,
- double price,double sl,double tp,const string comment)
- {
- //--- checking
- if(order_type==ORDER_TYPE_BUY || order_type==ORDER_TYPE_SELL)
- {
- MyResult.retcode=TRADE_RETCODE_INVALID;
- MyResult.comment="Invalid order type";
- return(false);
- }
- //--- setting request
- MyTrade.action =TRADE_ACTION_PENDING;
- MyTrade.symbol =Symbol();
- MyTrade.magic =MagicHere;
- MyTrade.volume =volume;
- MyTrade.type =order_type;
- MyTrade.price =price;
- MyTrade.sl =sl;
- MyTrade.tp =tp;
- MyTrade.type_filling=ORDER_FILLING_AON;
- MyTrade.comment =comment;
- //---
- return(OrderSend(MyTrade,MyResult));
- }
自定義指標六:修改當前指定Ticket的掛單的止盈止損數值
復制代碼- bool OrderModify(ulong ticket,double price,double sl,double tp)
- {
- //--- setting request
- MyTrade.action =TRADE_ACTION_MODIFY;
- MyTrade.order =ticket;
- MyTrade.price =price;
- MyTrade.sl =sl;
- MyTrade.tp =tp;
- //---
- return(OrderSend(MyTrade,MyResult));
- }
自定義指標七:刪除當前指定Ticket的掛單
復制代碼-
- bool OrderDelete(ulong ticket)
- {
- //--- setting request
- MyTrade.action =TRADE_ACTION_REMOVE;
- MyTrade.order =ticket;
- MyTrade.symbol =NULL;
- MyTrade.magic =0;
- MyTrade.volume =0.0;
- MyTrade.type =0;
- MyTrade.price =0.0;
- MyTrade.sl =0.0;
- MyTrade.tp =0.0;
- MyTrade.type_time =0;
- MyTrade.expiration=0;
- //---
- return(OrderSend(MyTrade,MyResult));
- }
自定義指標八:獲得當前最新入場的掛單的Ticket號碼
復制代碼- ulong GetLastOrderTick()
- {
- int Cnt=OrdersTotal();
- if(Cnt>0)
- {
- for(int i=Cnt-1;i>=0;i++)
- {
- int Tick=OrderGetTicket(i);
- if(OrderGetString(ORDER_SYMBOL)==Symbol())
- return(Tick);
- }
- return(-1);
- }else return(-1);
- }
栽自www.520fx.com
上面那些函數都是非常有用的,如果能有效的使用,能提高你編程速度數倍啊。
上面只是粗略的講下,如果你有什么疑問,就在本站回帖,本站會給予進一步的解答。
主站蜘蛛池模板:
久久久91精品国产一区二区
|
亚洲国产精
|
亚洲精品免费视频
|
bbw满足护士
|
亚洲狠狠97婷婷综合久久久久
|
一级床上爽高清播放
|
一本一道久久
|
欧美色综合久久
|
亚洲一区视频在线
|
动漫精品一区二区
|
久久久久综合中文字幕
|
一级毛片看看
|
站长推荐国产精品视频
|
亚洲永久精品ww47
|
久久久久国产午夜
|
久草视频免费播放
|
久久伊人一区二区三区四区
|
色综合精品
|
日本特交大片免费观看
|
欧美日韩激情在线
|
亚洲99在线的|
国产做爰免费视频观看
|
亚洲 欧美 bt
|
日韩一二区
|
国产片一区二区三区
|
欧美成人性视频在线黑白配
|
亚洲在线视频免费观看
|
久久精品国产99国产精品免费看
|
国产精品美女免费视频大全
|
久久99热精品免费观看k影院
|
精品日韩二区三区精品视频
|
久久久久九九精品影院
|
国产欧美一区二区精品性色99
|
日日噜噜噜夜夜爽爽狠狠69
|
日韩永久免费视频
|
丰满放荡岳乱妇91www
|
一区二区三区亚洲视频
|
国产国产精品四虎视频精品
|
日本高清h色视频在线观看
日本高清不卡二区
|
亚洲综合色在线观看
|
久久66热这里只会有精品
|