//+------------------------------------------------------------------+ //| 20pips.mq4 | //| Copyright © 2011, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright © 2011, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int BTicket; int STicket; int tick1; int tick2; int Ticket1; int Ticket2; int Ticket3; int Ticket4; int Ticket5; int Ticket6; int order; int Order1=10; int Order2=11; int Order3=12; int Order4=13; int Order5=14; int Order6=15; int error; double price; double Bprice; double Sprice; extern int tp=30; extern int sl=20; int start() { //---- double bid =MarketInfo("GBPUSD",MODE_BID); double ask =MarketInfo("GBPUSD",MODE_ASK); int total = OrdersTotal(); if (total<=0) { while(true) { BTicket= OrderSend("GBPUSD",OP_BUY,0.1,ask,3,0,0); if(BTicket<=0) { error=GetLastError(); Print("Error = ",GetLastError()); if(error==134) break; Sleep(10000); RefreshRates(); break; } else { if(OrderSelect(BTicket,SELECT_BY_TICKET)==true) {Bprice=OrderOpenPrice(); Print(Bprice);} break; } } while(true) { tick1= OrderSend("GBPUSD",OP_SELLLIMIT,0.1,Bprice+10*Point,0,0,0); if(tick1<=0) { error=GetLastError(); Print("Error = ",GetLastError()); if(error==134) break; Sleep(10000); RefreshRates(); break; } else { if(OrderSelect(tick1,SELECT_BY_TICKET)==true) { Print("Order Executed"); } break; } } while(true) { tick2= OrderSend("GBPUSD",OP_SELLSTOP,0.1,Bprice-10*Point,0,0,0); if(tick2<=0) { error=GetLastError(); Print("Error = ",GetLastError()); if(error==134) break; Sleep(10000); RefreshRates(); break; } else { if(OrderSelect(tick1,SELECT_BY_TICKET)==true) { Print("Order Executed"); } break; } } } if(total<=6) { Print(total); Print(Bprice,Sprice); SetProfit(); if(OrderSelect(tick1,SELECT_BY_TICKET)==true) order=OrderType(); if(order==1) { if(OrderSelect(tick1,SELECT_BY_TICKET)==true) {Sprice=OrderOpenPrice(); OrderDelete(tick2); STicket=tick1; Print(Sprice); PendingBuy(Bprice); PendingSell(Sprice); tick1=0;} } if(OrderSelect(tick2,SELECT_BY_TICKET)==true) order=OrderType(); if(order==1) { if(OrderSelect(tick2,SELECT_BY_TICKET)==true) { Sprice=OrderOpenPrice(); OrderDelete(tick1); STicket=tick2; Print(Sprice); PendingBuy(Bprice); PendingSell(Sprice); tick2=0; }} if(OrderSelect(Ticket1,SELECT_BY_TICKET)==true) { Order1=OrderType(); if (Order1==0) { if(OrderSelect(Ticket1,SELECT_BY_TICKET)==true) Bprice=OrderOpenPrice(); BTicket=Ticket1; OrderDelete(Ticket2); PendingBuy(Bprice); }} if(OrderSelect(Ticket2,SELECT_BY_TICKET)==true) { Order2=OrderType(); if (Order2==0) { if(OrderSelect(Ticket2,SELECT_BY_TICKET)==true) Bprice=OrderOpenPrice(); BTicket=Ticket2; OrderDelete(Ticket5); OrderDelete(Ticket1); PendingBuy(Bprice); }} if(OrderSelect(Ticket3,SELECT_BY_TICKET)==true) { Order3=OrderType(); if (Order3==1) { if(OrderSelect(Ticket3,SELECT_BY_TICKET)==true) Sprice=OrderOpenPrice(); STicket=Ticket3; OrderDelete(Ticket6); OrderDelete(Ticket4); PendingSell(Sprice); }} if(OrderSelect(Ticket4,SELECT_BY_TICKET)==true) { Order4=OrderType(); if (Order4==1) { if(OrderSelect(Ticket4,SELECT_BY_TICKET)==true) Sprice=OrderOpenPrice(); STicket=Ticket4; OrderDelete(Ticket3); PendingSell(Sprice); }} if(OrderSelect(Ticket5,SELECT_BY_TICKET)==true) { Order5=OrderType(); if (Order5==0) { if(OrderSelect(Ticket5,SELECT_BY_TICKET)==true) Bprice=OrderOpenPrice(); BTicket=Ticket5; Order5=15; }} if(OrderSelect(Ticket6,SELECT_BY_TICKET)==true) { Order6=OrderType(); if (Order6==1) { if(OrderSelect(Ticket6,SELECT_BY_TICKET)==true) Sprice=OrderOpenPrice(); STicket=Ticket6; Order6=16; }} if (total==5) Sloss(Bprice,Sprice); } //---- return(0); } //+------------------------------------------------------------------+ void PendingBuy(double BP) { price=BP; double BSprice=price+33*Point; double BLprice=price-33*Point; int total = OrdersTotal(); while(true) { if(total<=5) { Ticket1= OrderSend("GBPUSD",OP_BUYSTOP,0.1,BSprice,0,0,0); if(Ticket1<=0) { error=GetLastError(); Print("Error = ",GetLastError()); if(error==134) break; Sleep(10000); RefreshRates(); break; } else { if(OrderSelect(Ticket1,SELECT_BY_TICKET)==true) { Order1 = OrderType(); } break; } } } while(true) { if(total<=5) { Ticket2= OrderSend("GBPUSD",OP_BUYLIMIT,0.1,BLprice,0,0,0); if(Ticket2<=0) { error=GetLastError(); Print("Error = ",GetLastError()); if(error==134) break; Sleep(10000); RefreshRates(); break; } else { if(OrderSelect(Ticket2,SELECT_BY_TICKET)==true) { Order2 = OrderType(); } break; } } }} void PendingSell(double SP) { price=SP; double SSprice=price-33*Point; double SLprice=price+33*Point; int total = OrdersTotal(); while(true) { if(total<=5) { Ticket3= OrderSend("GBPUSD",OP_SELLLIMIT,0.1,SLprice,0,0,0); if(Ticket3<=0) { error=GetLastError(); Print("Error = ",GetLastError()); if(error==134) break; Sleep(10000); RefreshRates(); break; } else { if(OrderSelect(Ticket3,SELECT_BY_TICKET)==true) { Order3 = OrderType(); } break; } } } while(true) { if(total<=5) { Ticket4= OrderSend("GBPUSD",OP_SELLSTOP,0.1,SSprice,0,0,0); if(Ticket4<=0) { error=GetLastError(); Print("Error = ",GetLastError()); if(error==134) break; Sleep(10000); RefreshRates(); break; } else { if(OrderSelect(Ticket4,SELECT_BY_TICKET)==true) { Order4 = OrderType(); } break; } }} } void Sloss(double Buyp,double Sellp) { Bprice=Buyp; Sprice=Sellp; int total = OrdersTotal(); double profit; Print (total); Print (Sprice); Print (Bprice); if(OrderSelect(BTicket,SELECT_BY_TICKET)==true) profit=OrderProfit(); if (profit==-2) { Print(profit); while(true) { if(total<=5) { Ticket5= OrderSend("GBPUSD",OP_BUYSTOP,0.1,Bprice,0,0,0); if(Ticket5<=0) { error=GetLastError(); Print("Error = ",GetLastError()); if(error==134) break; Sleep(10000); RefreshRates(); break; } else { if(OrderSelect(Ticket5,SELECT_BY_TICKET)==true) { Order5=OrderType(); profit=0; } break; } }}} if(OrderSelect(STicket,SELECT_BY_TICKET)==true) profit=OrderProfit(); if (profit==-2) { Print(profit); while(true) { if(total<=5) { Ticket6= OrderSend("GBPUSD",OP_SELLSTOP,0.1,Sprice,0,0,0); if(Ticket6<=0) { error=GetLastError(); Print("Error = ",GetLastError()); if(error==134) break; Sleep(10000); RefreshRates(); break; } else { if(OrderSelect(Ticket6,SELECT_BY_TICKET)==true) { Order6=OrderType(); profit=0; } break; } } } }} void SetProfit() { int totalorders = OrdersTotal(); for(int i=totalorders-1;i>=0;i--) { OrderSelect(i, SELECT_BY_POS); { if (OrderSymbol()==Symbol()&& OrderType() == OP_BUY ) { OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-sl*Point ,OrderOpenPrice()+tp*Point ,0,Green);} if (OrderSymbol()==Symbol()&& OrderType() == OP_BUYLIMIT ) { OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-sl*Point ,OrderOpenPrice()+tp*Point ,0,Green);} if (OrderSymbol()==Symbol()&& OrderType() == OP_BUYSTOP ) { OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-sl*Point,OrderOpenPrice()+tp*Point ,0,Green); } if (OrderSymbol()==Symbol()&& OrderType() == OP_SELL ) { OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+sl*Point,OrderOpenPrice()-tp*Point ,0,Green);} if (OrderSymbol()==Symbol()&& OrderType() == OP_SELLSTOP ) { OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+sl*Point,OrderOpenPrice()-tp*Point ,0,Green);} if (OrderSymbol()==Symbol()&& OrderType() == OP_SELLLIMIT ) { OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+sl*Point,OrderOpenPrice()-tp*Point ,0,Green); } } } return; }