//+------------------------------------------------------------------+ //| Visual Trader.mq4 | //| Copyright © 2010 MadWill | //+------------------------------------------------------------------+ #property copyright "Copyright © 2010 MadWill" extern int Slippage=5; int Limit=200; int Extream=0; int Cf=100; double Lots=0.01; int StopLoss=0; int TakeProfit=0; double TakeWin=0; double TP, SL; int BarTime=0; int i, Orders, x, y, j, k; double id, tmp; string temp; int DoOpen=0; int DoClose=0; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- ObjectCreate("TextLots",OBJ_LABEL,1,0,0); ObjectSetText("TextLots","Объем сделки:",15,"Impact"); ObjectSet("TextLots",OBJPROP_COLOR,Blue); ObjectSet("TextLots",OBJPROP_CORNER,0); ObjectCreate("TextBalance",OBJ_LABEL,1,0,0); ObjectSet("TextBalance",OBJPROP_COLOR,Green); ObjectSet("TextBalance",OBJPROP_CORNER,0); ObjectCreate("TextEquity",OBJ_LABEL,1,0,0); ObjectSet("TextEquity",OBJPROP_COLOR,Green); ObjectSet("TextEquity",OBJPROP_CORNER,0); ObjectCreate("TextWin",OBJ_LABEL,1,0,0); ObjectSet("TextWin",OBJPROP_COLOR,Green); ObjectSet("TextWin",OBJPROP_CORNER,0); ObjectCreate("TextOrders",OBJ_LABEL,1,0,0); ObjectSet("TextOrders",OBJPROP_COLOR,Green); ObjectSet("TextOrders",OBJPROP_CORNER,0); ObjectCreate("TextBuy",OBJ_LABEL,1,0,0); ObjectSet("TextBuy",OBJPROP_COLOR,Blue); ObjectSet("TextBuy",OBJPROP_CORNER,0); ObjectCreate("TextSell",OBJ_LABEL,1,0,0); ObjectSet("TextSell",OBJPROP_COLOR,Red); ObjectSet("TextSell",OBJPROP_CORNER,0); ObjectSet("TextBuy",OBJPROP_XDISTANCE,275); ObjectSet("TextBuy",OBJPROP_YDISTANCE,7); ObjectSet("TextSell",OBJPROP_XDISTANCE,315); ObjectSet("TextSell",OBJPROP_YDISTANCE,7); ObjectSetText("TextSell","SELL!",14,"Impact"); ObjectSetText("TextBuy","BUY!",14,"Impact"); /******************/ ObjectCreate("TextClose",OBJ_LABEL,1,0,0); ObjectSet("TextClose",OBJPROP_COLOR,Yellow); ObjectSet("TextClose",OBJPROP_CORNER,0); ObjectSet("TextClose",OBJPROP_XDISTANCE,275); ObjectSet("TextClose",OBJPROP_YDISTANCE,27); ObjectSetText("TextClose","Закрыть всё!",14,"Impact"); ObjectCreate("TextStopLoss",OBJ_LABEL,1,0,0); ObjectSet("TextStopLoss",OBJPROP_COLOR,0x880088); ObjectSet("TextStopLoss",OBJPROP_CORNER,0); ObjectSet("TextStopLoss",OBJPROP_XDISTANCE,275); ObjectSet("TextStopLoss",OBJPROP_YDISTANCE,47); ObjectSetText("TextStopLoss","Stop Loss:",12,"Impact"); ObjectCreate("StopLoss",OBJ_LABEL,1,0,0); ObjectSet("StopLoss",OBJPROP_COLOR,0x880088); ObjectSet("StopLoss",OBJPROP_CORNER,0); ObjectSet("StopLoss",OBJPROP_XDISTANCE,335); ObjectSet("StopLoss",OBJPROP_YDISTANCE,47); ObjectSetText("StopLoss","0",12,"Impact"); ObjectCreate("TextTakeProfit",OBJ_LABEL,1,0,0); ObjectSet("TextTakeProfit",OBJPROP_COLOR,0x880088); ObjectSet("TextTakeProfit",OBJPROP_CORNER,0); ObjectSet("TextTakeProfit",OBJPROP_XDISTANCE,275); ObjectSet("TextTakeProfit",OBJPROP_YDISTANCE,67); ObjectSetText("TextTakeProfit","Take Profit:",12,"Impact"); ObjectCreate("TakeProfit",OBJ_LABEL,1,0,0); ObjectSet("TakeProfit",OBJPROP_COLOR,0x880088); ObjectSet("TakeProfit",OBJPROP_CORNER,0); ObjectSet("TakeProfit",OBJPROP_XDISTANCE,343); ObjectSet("TakeProfit",OBJPROP_YDISTANCE,67); ObjectSetText("TakeProfit","0",12,"Impact"); ObjectCreate("TextMoneyProfit",OBJ_LABEL,1,0,0); ObjectSet("TextMoneyProfit",OBJPROP_COLOR,0x880088); ObjectSet("TextMoneyProfit",OBJPROP_CORNER,0); ObjectSet("TextMoneyProfit",OBJPROP_XDISTANCE,275); ObjectSet("TextMoneyProfit",OBJPROP_YDISTANCE,87); ObjectSetText("TextMoneyProfit","Money Profit:",12,"Impact"); ObjectCreate("MoneyProfit",OBJ_LABEL,1,0,0); ObjectSet("MoneyProfit",OBJPROP_COLOR,0x880088); ObjectSet("MoneyProfit",OBJPROP_CORNER,0); ObjectSet("MoneyProfit",OBJPROP_XDISTANCE,352); ObjectSet("MoneyProfit",OBJPROP_YDISTANCE,87); ObjectSetText("MoneyProfit","0",12,"Impact"); /********************************************/ ObjectCreate("TextTrade",OBJ_LABEL,1,0,0); ObjectSet("TextTrade",OBJPROP_COLOR,Blue); ObjectSet("TextTrade",OBJPROP_CORNER,0); ObjectSet("TextTrade",OBJPROP_XDISTANCE,400); ObjectSet("TextTrade",OBJPROP_YDISTANCE,7); ObjectSetText("TextTrade","В конце бара:",15,"Impact"); /************/ ObjectCreate("Trade1",OBJ_LABEL,1,0,0); ObjectSet("Trade1",OBJPROP_COLOR,0x444444); ObjectSet("Trade1",OBJPROP_CORNER,0); ObjectSet("Trade1",OBJPROP_XDISTANCE,400); ObjectSet("Trade1",OBJPROP_YDISTANCE,25); ObjectSetText("Trade1","Не открывать",11,"Impact"); ObjectCreate("Trade2",OBJ_LABEL,1,0,0); ObjectSet("Trade2",OBJPROP_COLOR,0x444444); ObjectSet("Trade2",OBJPROP_CORNER,0); ObjectSet("Trade2",OBJPROP_XDISTANCE,400); ObjectSet("Trade2",OBJPROP_YDISTANCE,40); ObjectSetText("Trade2","Открывать по тренду",11,"Impact"); ObjectCreate("Trade3",OBJ_LABEL,1,0,0); ObjectSet("Trade3",OBJPROP_COLOR,0x444444); ObjectSet("Trade3",OBJPROP_CORNER,0); ObjectSet("Trade3",OBJPROP_XDISTANCE,400); ObjectSet("Trade3",OBJPROP_YDISTANCE,55); ObjectSetText("Trade3","Открывать против тренда",11,"Impact"); ObjectCreate("Trade4",OBJ_LABEL,1,0,0); ObjectSet("Trade4",OBJPROP_COLOR,0x444444); ObjectSet("Trade4",OBJPROP_CORNER,0); ObjectSet("Trade4",OBJPROP_XDISTANCE,400); ObjectSet("Trade4",OBJPROP_YDISTANCE,75); ObjectSetText("Trade4","Не закрывать",11,"Impact"); ObjectCreate("Trade5",OBJ_LABEL,1,0,0); ObjectSet("Trade5",OBJPROP_COLOR,0x444444); ObjectSet("Trade5",OBJPROP_CORNER,0); ObjectSet("Trade5",OBJPROP_XDISTANCE,400); ObjectSet("Trade5",OBJPROP_YDISTANCE,90); ObjectSetText("Trade5","Закрывать прибыльные",11,"Impact"); ObjectCreate("Trade6",OBJ_LABEL,1,0,0); ObjectSet("Trade6",OBJPROP_COLOR,0x444444); ObjectSet("Trade6",OBJPROP_CORNER,0); ObjectSet("Trade6",OBJPROP_XDISTANCE,400); ObjectSet("Trade6",OBJPROP_YDISTANCE,105); ObjectSetText("Trade6","Закрывать убыточные",11,"Impact"); ObjectCreate("Trade7",OBJ_LABEL,1,0,0); ObjectSet("Trade7",OBJPROP_COLOR,0x444444); ObjectSet("Trade7",OBJPROP_CORNER,0); ObjectSet("Trade7",OBJPROP_XDISTANCE,400); ObjectSet("Trade7",OBJPROP_YDISTANCE,120); ObjectSetText("Trade7","Закрывать все",11,"Impact"); /*********/ for(id=0.01;id<=0.21;id+=0.01){ temp=DoubleToStr(id,2); ObjectCreate("Lots"+temp,OBJ_LABEL,1,0,0); ObjectSetText("Lots"+temp,temp,11,"Impact"); ObjectSet("Lots"+temp,OBJPROP_COLOR,0x444444); ObjectSet("Lots"+temp,OBJPROP_CORNER,0); } for(id=0.01;id<=0.05;id+=0.01){ temp=DoubleToStr(id,2); x=7; y=(id-0.00)*100*13+16; ObjectSet("Lots"+temp,OBJPROP_XDISTANCE,x); ObjectSet("Lots"+temp,OBJPROP_YDISTANCE,y); } for(id=0.06;id<=0.10;id+=0.01){ temp=DoubleToStr(id,2); x=37; y=(id-0.05)*100*13+16; ObjectSet("Lots"+temp,OBJPROP_XDISTANCE,x); ObjectSet("Lots"+temp,OBJPROP_YDISTANCE,y); } for(id=0.11;id<=0.16;id+=0.01){ temp=DoubleToStr(id,2); x=67; y=(id-0.10)*100*13+16; ObjectSet("Lots"+temp,OBJPROP_XDISTANCE,x); ObjectSet("Lots"+temp,OBJPROP_YDISTANCE,y); } for(id=0.16;id<=0.21;id+=0.01){ temp=DoubleToStr(id,2); x=97; y=(id-0.15)*100*13+16; ObjectSet("Lots"+temp,OBJPROP_XDISTANCE,x); ObjectSet("Lots"+temp,OBJPROP_YDISTANCE,y); } temp=DoubleToStr(AccountBalance(),2); ObjectSetText("TextBalance","Баланс: "+temp,14,"Impact"); ObjectSet("TextBalance",OBJPROP_XDISTANCE,135); ObjectSet("TextBalance",OBJPROP_YDISTANCE,7); temp=DoubleToStr(AccountEquity(),2); ObjectSetText("TextEquity","Средства: "+temp,14,"Impact"); ObjectSet("TextEquity",OBJPROP_XDISTANCE,135); ObjectSet("TextEquity",OBJPROP_YDISTANCE,27); temp=DoubleToStr(AccountEquity()-AccountBalance(),2); ObjectSetText("TextWin","Прибыль: "+temp,14,"Impact"); ObjectSet("TextWin",OBJPROP_XDISTANCE,135); ObjectSet("TextWin",OBJPROP_YDISTANCE,47); temp=OrdersTotal(); ObjectSetText("TextOrders","Ордеров: "+temp,14,"Impact"); ObjectSet("TextOrders",OBJPROP_XDISTANCE,135); ObjectSet("TextOrders",OBJPROP_YDISTANCE,67); //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- ObjectDelete("TextLots"); for(id=0.01;id<=0.21;id+=0.01){ temp=DoubleToStr(id,2); ObjectDelete("Lots"+temp); } ObjectsDeleteAll(); //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- ObjectSet("TextLots",OBJPROP_XDISTANCE,7); ObjectSet("TextLots",OBJPROP_YDISTANCE,7); ObjectSet("TextStopLoss",OBJPROP_XDISTANCE,275); ObjectSet("TextStopLoss",OBJPROP_YDISTANCE,47); ObjectSet("StopLoss",OBJPROP_XDISTANCE,335); ObjectSet("StopLoss",OBJPROP_YDISTANCE,47); ObjectSet("TextTakeProfit",OBJPROP_XDISTANCE,275); ObjectSet("TextTakeProfit",OBJPROP_YDISTANCE,67); ObjectSet("TakeProfit",OBJPROP_XDISTANCE,343); ObjectSet("TakeProfit",OBJPROP_YDISTANCE,67); ObjectSet("TextMoneyProfit",OBJPROP_XDISTANCE,275); ObjectSet("TextMoneyProfit",OBJPROP_YDISTANCE,87); ObjectSet("MoneyProfit",OBJPROP_XDISTANCE,352); ObjectSet("MoneyProfit",OBJPROP_YDISTANCE,87); StopLoss=StrToInteger(ObjectDescription("StopLoss")); TakeProfit=StrToInteger(ObjectDescription("TakeProfit")); TakeWin=StrToInteger(ObjectDescription("MoneyProfit")); if(ObjectGet("Trade1",OBJPROP_XDISTANCE)!=400 || ObjectGet("Trade1",OBJPROP_YDISTANCE)!=25){ DoOpen=0; ObjectSet("Trade1",OBJPROP_XDISTANCE,400); ObjectSet("Trade1",OBJPROP_YDISTANCE,25); } /************/ if(ObjectGet("Trade2",OBJPROP_XDISTANCE)!=400 || ObjectGet("Trade2",OBJPROP_YDISTANCE)!=40){ DoOpen=1; ObjectSet("Trade2",OBJPROP_XDISTANCE,400); ObjectSet("Trade2",OBJPROP_YDISTANCE,40); } /*********/ if(ObjectGet("Trade3",OBJPROP_XDISTANCE)!=400 || ObjectGet("Trade3",OBJPROP_YDISTANCE)!=55){ DoOpen=2; ObjectSet("Trade3",OBJPROP_XDISTANCE,400); ObjectSet("Trade3",OBJPROP_YDISTANCE,55); } /*********/ if(ObjectGet("Trade4",OBJPROP_XDISTANCE)!=400 || ObjectGet("Trade4",OBJPROP_YDISTANCE)!=75){ DoClose=0; ObjectSet("Trade4",OBJPROP_XDISTANCE,400); ObjectSet("Trade4",OBJPROP_YDISTANCE,75); } /*********/ if(ObjectGet("Trade5",OBJPROP_XDISTANCE)!=400 || ObjectGet("Trade5",OBJPROP_YDISTANCE)!=90){ DoClose=1; ObjectSet("Trade5",OBJPROP_XDISTANCE,400); ObjectSet("Trade5",OBJPROP_YDISTANCE,90); } /*********/ if(ObjectGet("Trade6",OBJPROP_XDISTANCE)!=400 || ObjectGet("Trade6",OBJPROP_YDISTANCE)!=105){ DoClose=2; ObjectSet("Trade6",OBJPROP_XDISTANCE,400); ObjectSet("Trade6",OBJPROP_YDISTANCE,105); } /*********/ if(ObjectGet("Trade7",OBJPROP_XDISTANCE)!=400 || ObjectGet("Trade7",OBJPROP_YDISTANCE)!=120){ DoClose=3; ObjectSet("Trade7",OBJPROP_XDISTANCE,400); ObjectSet("Trade7",OBJPROP_YDISTANCE,120); } /***************/ if(DoOpen==2) ObjectSet("Trade3",OBJPROP_COLOR,Green); else ObjectSet("Trade3",OBJPROP_COLOR,0x444444); if(DoOpen==1) ObjectSet("Trade2",OBJPROP_COLOR,Green); else ObjectSet("Trade2",OBJPROP_COLOR,0x444444); if(DoOpen==0) ObjectSet("Trade1",OBJPROP_COLOR,Green); else ObjectSet("Trade1",OBJPROP_COLOR,0x444444); if(DoClose==0) ObjectSet("Trade4",OBJPROP_COLOR,Green); else ObjectSet("Trade4",OBJPROP_COLOR,0x444444); if(DoClose==1) ObjectSet("Trade5",OBJPROP_COLOR,Green); else ObjectSet("Trade5",OBJPROP_COLOR,0x444444); if(DoClose==2) ObjectSet("Trade6",OBJPROP_COLOR,Green); else ObjectSet("Trade6",OBJPROP_COLOR,0x444444); if(DoClose==3) ObjectSet("Trade7",OBJPROP_COLOR,Green); else ObjectSet("Trade7",OBJPROP_COLOR,0x444444); for(id=0.01;id<=0.05;id+=0.01){ temp=DoubleToStr(id,2); if(Lots==id) ObjectSet("lots"+temp,OBJPROP_COLOR,Green); else ObjectSet("Lots"+temp,OBJPROP_COLOR,0x444444); x=7; y=(id-0.00)*100*13+16; if(ObjectGet("Lots"+temp,OBJPROP_XDISTANCE)!=x || ObjectGet("Lots"+temp,OBJPROP_YDISTANCE)!=y) Lots=id; ObjectSet("Lots"+temp,OBJPROP_XDISTANCE,x); ObjectSet("Lots"+temp,OBJPROP_YDISTANCE,y); } for(id=0.06;id<=0.10;id+=0.01){ temp=DoubleToStr(id,2); if(Lots==id) ObjectSet("lots"+temp,OBJPROP_COLOR,Green); else ObjectSet("Lots"+temp,OBJPROP_COLOR,0x444444); x=37; y=(id-0.05)*100*13+16; if(ObjectGet("Lots"+temp,OBJPROP_XDISTANCE)!=x || ObjectGet("Lots"+temp,OBJPROP_YDISTANCE)!=y) Lots=id; ObjectSet("Lots"+temp,OBJPROP_XDISTANCE,x); ObjectSet("Lots"+temp,OBJPROP_YDISTANCE,y); } for(id=0.11;id<=0.16;id+=0.01){ temp=DoubleToStr(id,2); if(Lots==id) ObjectSet("lots"+temp,OBJPROP_COLOR,Green); else ObjectSet("Lots"+temp,OBJPROP_COLOR,0x444444); x=67; y=(id-0.10)*100*13+16; if(ObjectGet("Lots"+temp,OBJPROP_XDISTANCE)!=x || ObjectGet("Lots"+temp,OBJPROP_YDISTANCE)!=y) Lots=id; ObjectSet("Lots"+temp,OBJPROP_XDISTANCE,x); ObjectSet("Lots"+temp,OBJPROP_YDISTANCE,y); } for(id=0.16;id<=0.21;id+=0.01){ temp=DoubleToStr(id,2); if(Lots==id) ObjectSet("lots"+temp,OBJPROP_COLOR,Green); else ObjectSet("Lots"+temp,OBJPROP_COLOR,0x444444); x=97; y=(id-0.15)*100*13+16; if(ObjectGet("Lots"+temp,OBJPROP_XDISTANCE)!=x || ObjectGet("Lots"+temp,OBJPROP_YDISTANCE)!=y) Lots=id; ObjectSet("Lots"+temp,OBJPROP_XDISTANCE,x); ObjectSet("Lots"+temp,OBJPROP_YDISTANCE,y); } temp=DoubleToStr(AccountBalance(),2); ObjectSetText("TextBalance","Баланс: "+temp,14,"Impact"); ObjectSet("TextBalance",OBJPROP_XDISTANCE,135); ObjectSet("TextBalance",OBJPROP_YDISTANCE,7); temp=DoubleToStr(AccountEquity(),2); ObjectSetText("TextEquity","Средства: "+temp,14,"Impact"); ObjectSet("TextEquity",OBJPROP_XDISTANCE,135); ObjectSet("TextEquity",OBJPROP_YDISTANCE,27); temp=DoubleToStr(AccountEquity()-AccountBalance(),2); ObjectSetText("TextWin","Прибыль: "+temp,14,"Impact"); ObjectSet("TextWin",OBJPROP_XDISTANCE,135); ObjectSet("TextWin",OBJPROP_YDISTANCE,47); temp=OrdersTotal(); ObjectSetText("TextOrders","Ордеров: "+temp,14,"Impact"); ObjectSet("TextOrders",OBJPROP_XDISTANCE,135); ObjectSet("TextOrders",OBJPROP_YDISTANCE,67); if(ObjectGet("TextBuy",OBJPROP_XDISTANCE)!=275 || ObjectGet("TextBuy",OBJPROP_YDISTANCE)!=7){ if(StopLoss>0) SL=Bid-StopLoss*Point; else SL=0; if(TakeProfit>0) TP=Ask+TakeProfit*Point; else TP=0; if(00) SL=Ask+StopLoss*Point; else SL=0; if(TakeProfit>0) TP=Bid-TakeProfit*Point; else TP=0; if(0=0;i--){ if(OrderSelect(i,SELECT_BY_POS)==false) continue; if(5==5){ if(OrderType()==OP_SELL) tmp=Ask; if(OrderType()==OP_BUY) tmp=Bid; for(j=1;j<10;j++){ if(OrderClose(OrderTicket(),OrderLots(),tmp,Slippage)==true){ j=11; PlaySound("ok.wav"); } } } } // } ObjectSet("TextClose",OBJPROP_XDISTANCE,275); ObjectSet("TextClose",OBJPROP_YDISTANCE,27); } /******************************************************** *********************************************************/ if(Extream>0){ TakeWin=AccountBalance()/Extream; Lots=TakeWin/Cf; } if(BarTime!=Time[0]){ BarTime=Time[0]; if((Open[1]Close[1] && DoOpen==1)){ // if(StopLoss>0) SL=Ask+StopLoss*Point; else SL=0; if(TakeProfit>0) TP=Bid-TakeProfit*Point; else TP=0; if(0Close[1] && DoOpen==2) || (Open[1]0) SL=Bid-StopLoss*Point; else SL=0; if(TakeProfit>0) TP=Ask+TakeProfit*Point; else TP=0; if(0=0;i--){ OrderSelect(i,SELECT_BY_POS); if(OrderProfit()>0){ if(OrderType()==OP_SELL) tmp=Ask; if(OrderType()==OP_BUY) tmp=Bid; for(j=1;j<10;j++){ if(OrderClose(OrderTicket(),OrderLots(),tmp,Slippage)){ j=11; PlaySound("ok.wav"); } } } } } if(DoClose==2){ Orders=OrdersTotal(); for(i=Orders-1;i>=0;i--){ OrderSelect(i,SELECT_BY_POS); if(OrderProfit()<0){ if(OrderType()==OP_SELL) tmp=Ask; if(OrderType()==OP_BUY) tmp=Bid; for(j=1;j<10;j++){ if(OrderClose(OrderTicket(),OrderLots(),tmp,Slippage)){ j=11; PlaySound("ok.wav"); } } } } } if(DoClose==3){ Orders=OrdersTotal(); for(i=Orders-1;i>=0;i--){ OrderSelect(i,SELECT_BY_POS); if(5==5){ if(OrderType()==OP_SELL) tmp=Ask; if(OrderType()==OP_BUY) tmp=Bid; for(j=1;j<10;j++){ if(OrderClose(OrderTicket(),OrderLots(),tmp,Slippage)){ j=11; PlaySound("ok.wav"); } } } } } } if(TakeWin>0 && AccountEquity()>AccountBalance()+TakeWin){ Orders=OrdersTotal(); for(i=Orders-1;i>=0;i--){ OrderSelect(i,SELECT_BY_POS); if(5==5){ if(OrderType()==OP_SELL) tmp=Ask; if(OrderType()==OP_BUY) tmp=Bid; for(j=1;j<10;j++){ if(OrderClose(OrderTicket(),OrderLots(),tmp,Slippage)){ j=11; PlaySound("ok.wav"); } } } } } //---- return(0); } //+------------------------------------------------------------------+