//+------------------------------------------------------------------+ //| 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 = 0; double takeprofit = 0; extern string ghichu = "hello"; 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() { // 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-------------- 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); // Comment(maxanh1+"/"+mado1+"//"+maxanh2+"/"+mado2); // truong hop cat len tang gia --> buy if(maxanh1 > mado1 && maxanh2 < mado2 ){loaiLenh=OP_BUY;} else if(maxanh1 < mado1 && maxanh2 > mado2 ){loaiLenh=OP_SELL;} else {return;} //===================================================== //-------------------------------- 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); Comment(stoploss+"/"+takeprofit); // OrderSend( Symbol(),loaiLenh,khoiLuong,giavaolenh,20,stoploss,takeprofit,ghichu,magic,0,maucualenh ); vaoLenh(loaiLenh,Symbol(),khoiLuong,giavaolenh,stoploss,takeprofit,magic,ghichu,PRICE); } //+------------------------------------------------------------------+ enum modedatlenh { PRICE=1, POINT=2, PIP =3, DISTANCE = 4, }; //====================================================================== int vaoLenh( int typee,string symm, double lott, double pricee, double slllll,double tppppp,int Magicc, string comm,modedatlenh mode ) { int kq = 0; if(lott ==0){return(kq);} 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); } if(typee== OP_SELL) { pricee = MarketInfo(symm,MODE_BID); } if(mode == DISTANCE) { if((typee+2)%2== OP_BUY) { if(slllll!=0)slprice = pricee - slllll; if(tppppp!=0)tpprice = pricee + tppppp; mau = clrBlue; } if((typee+2)%2== OP_SELL) { if(slllll!=0) slprice = pricee + slllll; if(tppppp!=0) tpprice = pricee - tppppp; mau = clrRed; } } if(mode == POINT) { if((typee+2)%2== OP_BUY) { if(slllll!=0)slprice = pricee - slllll*MarketInfo(symm ,MODE_POINT); if(tppppp!=0)tpprice = pricee + tppppp*MarketInfo(symm ,MODE_POINT); mau = clrBlue; } if((typee+2)%2== OP_SELL) { if(slllll!=0) slprice = pricee + slllll*MarketInfo(symm ,MODE_POINT); if(tppppp!=0) tpprice = pricee - tppppp*MarketInfo(symm ,MODE_POINT); mau = clrRed; } } if(mode == PIP) { if((typee+2)%2== OP_BUY) { if(slllll!=0)slprice = pricee - slllll*10*MarketInfo(symm ,MODE_POINT); if(tppppp!=0)tpprice = pricee + tppppp*10*MarketInfo(symm ,MODE_POINT); mau = clrBlue; } if((typee+2)%2== OP_SELL) { if(slllll!=0) slprice = pricee + slllll*10*MarketInfo(symm ,MODE_POINT); if(tppppp!=0) tpprice = pricee - tppppp*10*MarketInfo(symm ,MODE_POINT); mau = clrRed; } } if(typee %2 == OP_BUY) { tpprice = MathMax(tpprice,Bid + MarketInfo(Symbol(),MODE_STOPLEVEL)*Point); slprice = MathMin(slprice,Ask - MarketInfo(Symbol(),MODE_STOPLEVEL)*Point); } if(typee %2 == OP_SELL) { slprice = MathMax(slprice,Bid + MarketInfo(Symbol(),MODE_STOPLEVEL)*Point); tpprice = MathMin(tpprice,Ask - MarketInfo(Symbol(),MODE_STOPLEVEL)*Point); } if(mode==PRICE) { slprice = slllll;tpprice = tppppp; } pricee = NormalizeDouble(pricee,MarketInfo(symm , MODE_DIGITS)); slprice = NormalizeDouble(slprice,MarketInfo(symm , MODE_DIGITS)); tpprice = NormalizeDouble(tpprice,MarketInfo(symm , MODE_DIGITS)); //============= double thanhcong; AccountFreeMarginCheck(Symbol(),typee%2,lott); if ( ((AccountStopoutMode() == 1) && (AccountFreeMarginCheck(Symbol(), typee%2, lott) > AccountStopoutLevel())) || ((AccountStopoutMode() == 0) && (((AccountFreeMarginCheck(Symbol(), typee%2, lott)/AccountEquity()) * 100) > AccountStopoutLevel())) ){ //-----gui lenh thanhcong = OrderSend(symm,typee,lott,pricee,20,0,0,comm,Magicc,0,mau); if(thanhcong >0 ){kq = thanhcong;} } else {Alert("khong du freemargin de vao "+lott+" lot");return(kq);} // ----- 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(thanhcong +" bi loi modify: "+ error+"/price: "+pricee+"/sl: "+slprice+"/tp: "+tpprice);} } return (kq); } //==================================================================== //====================================================== 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 } //+==================================================================+