avatar
BAI SO 9

chamelions 2,078 8th Apr, 2020

CPP 9.03 KB
                                           
                         //+------------------------------------------------------------------+
//|                                                       baiso1.mq4 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
// NOI KHAI BAO BIEN


      extern double khoiLuong= 0.01;// 0       
      double stoploss = 20;
      double takeprofit = 40;
      extern  string Com   ;
      color maucualenh = clrRed;
      extern int loaiLenh = OP_BUY; 
      double giavaolenh=0; 
      datetime thoigiangiaodich;
      bool chophepGD = true;
      int  magic =999;
      
//+------------------------------------------------------------------+
int OnInit()
  {
//---
  // checkLisicen();
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  { string sym;
     // if(chophepGD == false){return;}
    //  if(OrdersTotal()>0){return;}  // chi cho vao 1 lenh
      if(demsolenh( Symbol() ) >0 ){return;}
      // cho chạy code ben dưới dòng này khi qua nến mới 
      if(thoigiangiaodich == iTime(Symbol(),0,0) ){return;}thoigiangiaodich =iTime(Symbol(),0,0) ;
//=====================================================================      
// dieu kien vao lenh-------------- 
//  laygiatrinen();
     double maxanh1 = iMA(Symbol(),0,5,0,MODE_SMA,PRICE_CLOSE,1);
     double mado1   = iMA(Symbol(),0,20,0,MODE_SMA,PRICE_CLOSE,1);
     double maxanh2 = iMA(Symbol(),0,5,0,MODE_SMA,PRICE_CLOSE,2);
     double mado2   = iMA(Symbol(),0,20,0,MODE_SMA,PRICE_CLOSE,2);
     // truong hop cat len tang gia --> buy
     if(maxanh1 > mado1 && maxanh2 < mado2 ){loaiLenh=OP_BUY;}
     if(maxanh1 < mado1 && maxanh2 > mado2 ){loaiLenh=OP_SELL;}
     
 //--------------------------------VAO LENH------------------
     vaoLenh(Symbol(),loaiLenh,khoiLuong,0,stoploss,takeprofit,magic,Com);
     
     /*
      if(loaiLenh == OP_SELL)
      { 
         giavaolenh = Bid;
         stoploss = giavaolenh + 20*10*Point();
         takeprofit = giavaolenh - 60*10*Point();
      }
      if(loaiLenh ==OP_BUY)
      {
         giavaolenh = Ask;
         stoploss = giavaolenh - 20*10*Point();
         takeprofit = giavaolenh + 60*10*Point();
      }
   
      khoiLuong = dinhdangLot(khoiLuong);
                     
      OrderSend(  Symbol(),loaiLenh,khoiLuong,giavaolenh,20,stoploss,takeprofit,ghichu,magic,0,maucualenh );
  */
  }
//+------------------------------------------------------------------+
void   vaoLenh(string symm, int typee, double lott, double pricee, double slpip,double tppip,int magicc, string comm )
{
   if(lott ==0){return;}
   int normallotunit  ;
   if(MarketInfo(symm, MODE_MINLOT)== 0.01){normallotunit = 2;}
   if(MarketInfo(symm, MODE_MINLOT)== 0.1){normallotunit = 1;}
   if(MarketInfo(symm, MODE_MINLOT)== 0.001){normallotunit = 3;}
   lott = NormalizeDouble(lott, normallotunit );
   //---------------------------
   double slprice, tpprice; color mau;
   if(typee== OP_BUY)
       {
         pricee = MarketInfo(symm,MODE_ASK);
         slprice = pricee - slpip*10*MarketInfo(symm ,MODE_POINT);
         tpprice = pricee + tppip*10*MarketInfo(symm ,MODE_POINT);
         mau = clrBlue;
       }
       
   if(typee== OP_SELL)
       {
         pricee = MarketInfo(symm,MODE_BID);
         slprice = pricee + slpip*10*MarketInfo(symm ,MODE_POINT);
         tpprice = pricee - tppip*10*MarketInfo(symm ,MODE_POINT);
         mau = clrRed;
       }
   pricee = NormalizeDouble(pricee,MarketInfo(symm , MODE_DIGITS));
   slprice = NormalizeDouble(slprice,MarketInfo(symm , MODE_DIGITS));
   tpprice = NormalizeDouble(tpprice,MarketInfo(symm , MODE_DIGITS));
  //-----gui lenh
   double thanhcong = OrderSend(symm,typee,lott,pricee,20,0,0,comm,magicc,0,mau);
  // ----- CHINH SL TP
  bool sucess =false; int dem;
  if(thanhcong >0 && slprice !=0 && tpprice!=0 )
      {
         while ( sucess == false && dem<20)
         {  sucess =  OrderModify(thanhcong,pricee,slprice,tpprice,0,clrNONE);
          dem++; Sleep(50);
         }
      int error = GetLastError();
      if(error !=0 && error !=1){ Print("bi loi: "+ error);}
      }
  /*
  ECN  - LIEN NGAN HANG
  STP - LIEN NGAN HANG 
  1 , GUI LENH DI 
  2 , CHINH SUA SL TP
  
  OM LENH - OM LENH */

}
//====================================================================
/*
void laygiatrinen()
{
  
  // tim  mo hinh enguffing
  
  for(int n =500 ; n >=0; n--)
  {
      double highttruoc, lowtruoc , hightsau, lowsau ;
     highttruoc = iHigh(Symbol(),0,n+1); 
     lowtruoc  = iLow(Symbol(),0,n+1);
      
     hightsau = iHigh(Symbol(),0,n); 
     lowsau  = iLow(Symbol(),0,n); 
     
     if(highttruoc<hightsau && lowtruoc > lowsau)
     {
         Comment(n);// gan nhat cay nen so 0
         //break;
     }
     
  }
  
  */
  
  /*int caynencaonhat,caynenthapnhat;
  caynencaonhat= iHighest(Symbol(),0,MODE_HIGH,100,0);// tra ve cay nen cao nhat
  caynenthapnhat = iLowest(Symbol(),0,MODE_LOW,100,0);// tra ve cay nen thap nhat
  
  double giacaonhat = iHigh(Symbol(),0,caynencaonhat);//  lay gias hight cua ....
  double giathapnhat = iLow(Symbol(),0,caynenthapnhat);// lay low ....
 
  // Comment(caynencaonhat +" / "+ caynenthapnhat);

  Comment(giacaonhat +" / "+ giathapnhat);*/





//+==================================================================+
int  Order_Open(int ordType,string sym_,double lots,double price,double sl,double tp,int mag,string com,double bidask)
  {// int ticket;
  if(lots==0){return(0);}
   color col; double Stoploss,TakeProfit;
   double unit=1;   if(bidask!=0){unit= bidask;}
   if(ordType==OP_BUY) {price=MarketInfo(sym_,MODE_ASK);Stoploss=price-sl*unit; TakeProfit=price+tp*unit; col=Blue;}
   if(ordType==OP_SELL) {price=MarketInfo(sym_,MODE_BID);Stoploss=price+sl*unit; TakeProfit=price-tp*unit; col=Red;}
   price=NormalizeDouble(price,MarketInfo(sym_,MODE_DIGITS));
   int NormalizeLot;   if(MarketInfo(sym_,MODE_MINLOT)==0.1) {NormalizeLot=1;} else {NormalizeLot=2;}
   lots=NormalizeDouble(lots,NormalizeLot);
   int sucess=-1; int ross=0;int demm;
   sucess=OrderSend(sym_,ordType,lots,price,3,0,0,com,mag,0,col);Sleep(100);
   if(sucess>0 && (sl!=0 || tp!=0))
     {
      while(ross<=0 && demm<20){  ross=OrderModify(sucess,price,Stoploss,TakeProfit,0,clrNONE); demm++;Sleep(100);    }
     }
     int loi = GetLastError();
   if(loi!=0 && loi !=1 ){ Print("eror"+loi);          Print(sym_+ "/price "+ price+ " /op "+ordType+"/lot "+lots);
}
   return(sucess);
  }
//+------------------------------------------
//======================================================
void checkLisicen()
{
   
   if(AccountNumber() != 22629828 ){Alert("khong dung tai khoan");chophepGD= false;}
   
   if(AccountEquity()  < 1000 ){ Comment("tai khoan qua nho , rui ro cao"); }
   
   if(IsTradeAllowed() ==false   ){ Alert("hay click vao trade allow");}
   
}
//==========================================
int demsolenh(string captiencandem)
{
   int dem;
   for(int i = OrdersTotal()-1 ; i>=0; i--)
   {
    if(OrderSelect(i, SELECT_BY_POS)==False)  {continue;}
    if(OrderSymbol() != captiencandem){continue;}
    if(OrderMagicNumber()!= magic){continue;}
        dem ++;// dem dc 1 lenh
   } 

return(dem);
}
//====================================
//====================================
double dinhdangLot(double khoiLuong)
{
   if(khoiLuong==0){ khoiLuong = MarketInfo(Symbol(),MODE_MINLOT)   ; }
   if(khoiLuong> MarketInfo(Symbol(),MODE_MAXLOT)){ khoiLuong = MarketInfo(Symbol(),MODE_MAXLOT)   ; }
    
    khoiLuong = NormalizeDouble(khoiLuong,2);
     
     return(khoiLuong);// tra ve khoi da duoc dinh dang
     
}
//+==================================================================+
                      
                                       
To share this paste please copy this url and send to your friends
RAW Paste Data

Comments

Authentication required

You must log in to post a comment.

Log in
    There are no comments yet.