大神们帮忙看看我这个问题出在哪里了啊~

楼主  收藏   举报   帖子创建时间:  2019-05-05 10:26 回复:0 关注量:127
这是一个简单的对冲。。但是它没办法正常下单啊。。。怎么办。。求助,在线等~~~
//+------------------------------------------------------------------+
//|                                                   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();
}

//---------------------------------------------------------------------------------

打赏