大神们帮忙看看我这个问题出在哪里了啊~
这是一个简单的对冲。。但是它没办法正常下单啊。。。怎么办。。求助,在线等~~~ //+------------------------------------------------------------------+ //| strategy_1.mq4 | //| Copyright 2015, metaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2015, metaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict #define MagicNumber 20150505 #define MaxNumber 10 // define input variables int differ_Point_BUY; int differ_Point_SELL; input bool DynamicLotSize=false; input double EquityPercent=2; input double FixedLotSize=0.5; input double StopLoss=30; input double TakeProfit=100; input int Slippage=5; int BuyTicket=0; int SellTicket=0; double UsePoint; double UseSlippage; double LotSize; int ErrorCode; double OpenPrice; double BuyStopLoss,SellStopLoss; double BuyTakeProfit,SellTakeProfit; //double ChangeStopLoss, ChangeTakeProfit; double BuyPrice, SellPrice; //double PricePreOne, PricePre, PriceNow; //int count = 0; double ConstProfit; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int onInit() { DrawLabel("will","flyjingyao@163.com",2,13,"宋体",9,Aqua,0); //--- create timer EventSetTimer(60); UsePoint=PipPoint(Symbol()); UseSlippage=GetSlippage(Symbol(),Slippage); //---confirm the optimal LotSize--------------------- if(DynamicLotSize==true) { double RiskAmount = ACCOUNT_EQUITY * (EquityPercent/100.0); double TickValue = MarketInfo(Symbol(),MODE_TICKVALUE); if((Digits==3)||(Digits==5)) TickValue *= 10; double CalcLots = (RiskAmount/StopLoss)/TickValue; LotSize = CalcLots; } else LotSize = FixedLotSize; if(LotSize<MarketInfo(Symbol(),MODE_MINLOT)) LotSize = MarketInfo(Symbol(),MODE_MINLOT); else if (LotSize>MarketInfo(Symbol(),MODE_MAXLOT)) LotSize = MarketInfo(Symbol(),MODE_MAXLOT); if(MarketInfo(Symbol(),MODE_LOTSTEP)==0.1) LotSize = NormalizeDouble(LotSize,1); else LotSize = NormalizeDouble(LotSize,2); //--------------------------------------------------- ConstProfit = 80*MarketInfo(Symbol(),MODE_TICKVALUE); if((Digits==3)||(Digits==5)) ConstProfit *= 10; //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void onDeinit(const int reason) { //--- destroy timer EventKillTimer(); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void onTick() { //------Chasell main function--when to get in----------------------------------------------------- // define 3 point to jude a local peak or a local vally. if((OrdersTotal()<MaxNumber)) { RefreshRates(); BuyPrice = Ask; if(StopLoss>0) BuyStopLoss = OpenPrice - (StopLoss*UsePoint); if(TakeProfit>0) BuyTakeProfit=OpenPrice + (TakeProfit*UsePoint); BuyTicket = OrderSend(Symbol(),OP_BUY,LotSize,BuyPrice,UseSlippage,BuyStopLoss,BuyTakeProfit,"Buy Order",MagicNumber,0,Green); RefreshRates(); SellPrice = Bid; if(StopLoss>0) BuyStopLoss = OpenPrice - (StopLoss*UsePoint); if(TakeProfit>0) BuyTakeProfit=OpenPrice + (TakeProfit*UsePoint); SellTicket = OrderSend(Symbol(),OP_SELL,LotSize,SellPrice,UseSlippage,BuyStopLoss,BuyTakeProfit,"Sell Order",MagicNumber,0,Red); if(BuyTicket == 0 && SellTicket == 0) {alert("Error!!!!!");} alert("666666666666"); } //------------check all the order and modify-------------------------------------- for(int i=0; i<=OrdersTotal()-1;i++) { OrderSelect(i,SELECT_BY_POS); if((OrderMagicNumber()==MagicNumber)&&(OrderType()==OP_BUY)&&(OrderSymbol()==Symbol())&&(OrderProfit()>ConstProfit)) { RefreshRates(); differ_Point_BUY = Bid - BuyPrice; double Closed = OrderClose(OrderTicket(),OrderLots(),Bid,UseSlippage,Red); if(Closed < 0){alert("Error when close the buy order");} } if((OrderMagicNumber()==MagicNumber)&&(OrderType()==OP_SELL)&&(OrderSymbol()==Symbol())&&(OrderProfit()>ConstProfit)) { RefreshRates(); differ_Point_SELL = Ask - SellPrice; double Closed = OrderClose(OrderTicket(),OrderLots(),Ask,UseSlippage,Red); if(Closed < 0){alert("Error when close the sell order");} } } //------------------------------------------------------------------------------------------------------ } //+------------------------------------------------------------------+ //| Timer function | //+------------------------------------------------------------------+ void onTimer() { //--- } //+------------------------------------------------------------------+ //| Tester function | //+------------------------------------------------------------------+ double onTester() { //--- double ret=0.0; //--- //--- return(ret); } //+------------------------------------------------------------------+ //--------Pip Point function----------------------- double PipPoint(string Currency) { double CalcPoint; int CalcDigits = MarketInfo(Currency, MODE_DIGITS); if((CalcDigits==2)||(CalcDigits==3)) CalcPoint=0.01; else if((CalcDigits==4)||(CalcDigits==5)) CalcPoint=0.0001; return(CalcPoint); } //-------GetSlippage function----------------------- int GetSlippage(string Currency, int SlippagePips) { int CalcSlippage; int CalcDigits = MarketInfo(Currency, MODE_DIGITS); if((CalcDigits==2)||(CalcDigits==4)) CalcSlippage=SlippagePips; if((CalcDigits==3)||(CalcDigits==5)) CalcSlippage=SlippagePips*10; return(CalcSlippage); } void DrawLabel(string name,string text,int X,int Y,string FontName,int FontSize,color FontColor,int zhongxin) { if(ObjectFind(name)!=0) { ObjectDelete(name); ObjectCreate(name,OBJ_LABEL,0,0,0); ObjectSet(name,OBJPROP_CORNER,zhongxin); ObjectSet(name,OBJPROP_XDISTANCE,X); ObjectSet(name,OBJPROP_YDISTANCE,Y); } ObjectSetText(name,text,FontSize,FontName,FontColor); WindowRedraw(); } //--------------------------------------------------------------------------------- |
打赏
最新创建圈子
- 新闻EA运行效果图圈 2019-05-05
圈主:admin 帖子:1