Urdala_Trol

Author: ������ (urdala) ���������
Profit factor:
0.00
14 Views
0 Downloads
0 Favorites
Urdala_Trol
//+------------------------------------------------------------------+
//|                                                  Urdala_Trol.mq4 |
//|                                        Ñåðãåé (urdala) Ðàøåâñêèé |
//|                                                   urdala@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Ñåðãåé (urdala) Ðàøåâñêèé"
#property link      "http://urdala-forex.at.ua"

extern string S0="Òåéê ïðîôèò â ïóíêòàõ.";
extern double TP = 5;
extern string S1="Ëîò(0- íå èñîëüçîâàòü).";
extern double Lots = 0;
extern string S2="Ëîò â % îò áàëàíñà(0- íå èñîëüçîâàòü).";
extern double LotsProc=1;
extern string S3="Ìèíèìàëüíîå ðàññòîÿíèå ìåæäó îðäåðàìè.";
extern int Step=40;
extern string S4="Òðåéëèíã ñòîï.";
extern int TS=30;
extern string S5="Êîýôôèöèåíò óâåëè÷åíèÿ ëîòà(0- óâåëè÷åíèå íà íà÷àëüíûé ëîò).";
extern double Kef = 0;
extern string S6="Ìàãè÷åñêîå ÷èñëî.";
extern int Magic=777;
extern string S7="Çíà÷åíèå ìàêñèìàëüíîãî ïðîñêàëüçûâàíèÿ.(Slippage)";
extern int Slippage=3;

int D=1;
//--------------------------------------------------------------------
int start()
  {
   int OB,OS,TB,TS;
   double ProfitBuy,ProfitSell,Lot;
   double LotBuy,LotSell;
   int PipBuy,PipSell;
   if (Lots!=0) Lot=NormalizeDouble(Lots,2);
   if (LotsProc!=0) Lot=NormalizeDouble(AccountBalance()/100000*LotsProc,2);
   if (Lot<MarketInfo(Symbol(),MODE_MINLOT))Lot=MarketInfo(Symbol(),MODE_MINLOT);
   if (Digits==5 || Digits==3)D=10;
//--------------------------------------------------------------------
   for ( int i=0; i<OrdersTotal(); i++)
       {
        OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
        if (OrderSymbol()==Symbol()  && OrderType()==0)
           {
            OB++;
            ProfitBuy+=OrderProfit();
            TB=OrderTicket();
            LotBuy=OrderLots();
            PipBuy=(Bid-OrderOpenPrice())/Point/D;
           }
        if (OrderSymbol()==Symbol() &&  OrderType()==1) 
           {
            OS++;
            ProfitSell+=OrderProfit();
            TS=OrderTicket();
            LotSell=OrderLots();
            PipSell=(OrderOpenPrice()-Ask)/Point/D;
           }
        }

//--------------------------------------------------------------------
  if (OS>1)ModSell();
  if (OB>1)ModBuy();
     
//--------------------------------------------------------------------
  if (OB==0 && OS==0)
     {
      OpenOrder(Symbol(),0,Lot,NormalizeDouble(Ask,Digits),0,0,"",Magic);
      OpenOrder(Symbol(),1,Lot,NormalizeDouble(Bid,Digits),0,0,"",Magic);
      return(0);
     }
//--------------------------------------------------------------------
  if (OB==1)Tral(TB);
  if (OS==1)Tral(TS); 
//--------------------------------------------------------------------
  if (OB==0 && OS>0)
     {
      RefreshRates();
      OpenOrder(Symbol(),0,Lot,NormalizeDouble(Ask,Digits),0,0,"",Magic);
      RefreshRates();
      if (MathAbs(PipSell)>=Step && Kef==0)OpenOrder(Symbol(),1,LotSell+Lot,NormalizeDouble(Bid,Digits),0,0,"",Magic);
      if (MathAbs(PipSell)>=Step && Kef>0)OpenOrder(Symbol(),1,LotSell*Kef,NormalizeDouble(Bid,Digits),0,0,"",Magic);

     }
  if (OB>0 && OS==0)
     {
      RefreshRates();
      OpenOrder(Symbol(),1,Lot,NormalizeDouble(Bid,Digits),0,0,"",Magic);
      RefreshRates();
      if (MathAbs(PipBuy)>=Step && Kef==0)OpenOrder(Symbol(),0,LotBuy+Lot,NormalizeDouble(Ask,Digits),0,0,"",Magic);
      if (MathAbs(PipBuy)>=Step && Kef>0)OpenOrder(Symbol(),0,LotBuy*Kef,NormalizeDouble(Ask,Digits),0,0,"",Magic);

     }
//-------------------------------------------------------------------- 
   return(0);
  }
//--------------------------------------------------------------------
int ModBuy()
   { 
    double Lots,Summ,BU,Profit;
    for (int i=0; i<OrdersTotal(); i++)
        {
         OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
         if (OrderSymbol()==Symbol() && OrderType()==0 ){Lots=Lots+OrderLots();Summ=Summ+OrderLots()*OrderOpenPrice();}
        }
    BU=Summ/Lots;
    
    Profit=NormalizeDouble(BU+TP*D*Point,Digits);
    
    
    for (i=0; i<OrdersTotal(); i++)
       {
        OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
        if (OrderSymbol()==Symbol() && OrderType()==0 )
           {
            if (NormalizeDouble(OrderTakeProfit(),Digits)!=Profit)
               {
                OrderModify(OrderTicket(),OrderOpenPrice(),0,Profit,0,CLR_NONE);
               }
           }
         }
    }
//----------------------------------------------------------------------
int ModSell()
   { 
    double Lots,Summ,BU,Profit;
    for (int i=0; i<OrdersTotal(); i++)
        {
         OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
         if (OrderSymbol()==Symbol() && OrderType()==1 ){Lots=Lots-OrderLots();Summ=Summ-OrderLots()*OrderOpenPrice();}
        }
    BU=Summ/Lots;
    
    Profit=NormalizeDouble(BU-TP*D*Point,Digits);
    
    
    for (i=0; i<OrdersTotal(); i++)
       {
        OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
        if (OrderSymbol()==Symbol() && OrderType()==1 )
           {
            if (NormalizeDouble(OrderTakeProfit(),Digits)!=Profit)
               {
                OrderModify(OrderTicket(),OrderOpenPrice(),0,Profit,0,CLR_NONE);
               }
           }
         }
    }
//---------------------------------------------------------------
int Tral( int Ticket)
    {double TralPrice,Punkt;
    OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES );
    if (OrderType()==0){Punkt=(Bid-OrderOpenPrice())/Point;TralPrice=NormalizeDouble((Bid-TS*D*Point),Digits);}
    if (OrderType()==1){Punkt=(OrderOpenPrice()-Ask)/Point;TralPrice=NormalizeDouble((Ask+TS*D*Point),Digits);}
    if (Punkt<MarketInfo(Symbol(),MODE_STOPLEVEL))return(0);
    if (Punkt<TS*D)return(0);
    
    if (OrderType()==0 && TralPrice<=NormalizeDouble(OrderStopLoss(),Digits)) return(0);
    if (OrderType()==1 && TralPrice>=NormalizeDouble(OrderStopLoss(),Digits) && OrderStopLoss()!=0)return(0);
    
    ModifyOrder(OrderTicket(),OrderOpenPrice(),TralPrice,OrderTakeProfit());
    return(0);
    }
//----------------------------------------------------------------------------
int OpenOrder(string symbol,int cmd,double volume,double price,double stoploss,double takeprofit,string comment,int magic)
             {
              RefreshRates();
              int err,i,ticket;
              while(i<10)
                   {
                    if (cmd>1)ticket=OrderSend(symbol,cmd,NormalizeDouble(volume,2),NormalizeDouble(price,Digits),Slippage,0,0,comment,magic);
                    if (cmd==1)ticket=OrderSend(symbol,cmd,NormalizeDouble(volume,2),NormalizeDouble(Bid,Digits),Slippage,0,0,comment,magic);
                    if (cmd==0)ticket=OrderSend(symbol,cmd,NormalizeDouble(volume,2),NormalizeDouble(Ask,Digits),Slippage,0,0,comment,magic);
     
                    err = GetLastError();
                    if (err == 0) break;
                    Alert(Symbol(),Error(err),"  ïðè îòêðûòèè îðäåðà");
                    Sleep(1000);
                    i++;
                   }
              return(ticket);
             }

//----------------------------------------------------------------------------
int ModifyOrder(int ticket,double price,double stoploss,double takeprofit)
               {
                int err,i;
                RefreshRates();
                while(i<10)
                   {
                    OrderModify(ticket,NormalizeDouble(price,Digits),NormalizeDouble(stoploss,Digits),NormalizeDouble(takeprofit,Digits),0,CLR_NONE);
                    err = GetLastError();
                    if (err == 0) break;
                    Alert(Symbol(),Error(err),"  ïðè ìîäèôèêàöèè îðäåðà");
                    Sleep(1000);
                    i++;
                   }
                return(0);
               }
//----------------------------------------------------------------------------
string Error(int error_code)
  {
   string error_string;
   switch(error_code)
     {
      case 0:   error_string="Íåò îøèáîê";                                                     break;
      case 1:   error_string="Íåò îøèáêè, íî ðåçóëüòàò íåèçâåñòåí";                            break;
      case 2:   error_string="Îáùàÿ îøèáêà";                                                   break;
      case 3:   error_string="Íåïðàâèëüíûå ïàðàìåòðû";                                         break;
      case 4:   error_string="Òîðãîâûé ñåðâåð çàíÿò";                                          break;
      case 5:   error_string="Ñòàðàÿ âåðñèÿ êëèåíòñêîãî òåðìèíàëà";                            break;
      case 6:   error_string="Íåò ñâÿçè ñ òîðãîâûì ñåðâåðîì";                                  break;
      case 7:   error_string="Íåäîñòàòî÷íî ïðàâ";                                              break;
      case 8:   error_string="Ñëèøêîì ÷àñòûå çàïðîñû";                                         break;
      case 9:   error_string="Íåäîïóñòèìàÿ îïåðàöèÿ íàðóøàþùàÿ ôóíêöèîíèðîâàíèå ñåðâåðà";      break;
      case 64:  error_string="Ñ÷åò çàáëîêèðîâàí";                                              break;
      case 65:  error_string="Íåïðàâèëüíûé íîìåð ñ÷åòà";                                       break;
      case 128: error_string="Èñòåê ñðîê îæèäàíèÿ ñîâåðøåíèÿ ñäåëêè";                          break;
      case 129: error_string="Íåïðàâèëüíàÿ öåíà";                                              break;
      case 130: error_string="Íåïðàâèëüíûå ñòîïû";                                             break;
      case 131: error_string="Íåïðàâèëüíûé îáúåì";                                             break;
      case 132: error_string="Ðûíîê çàêðûò";                                                   break;
      case 133: error_string="Òîðãîâëÿ çàïðåùåíà";                                             break;  
      case 134: error_string="Íåäîñòàòî÷íî äåíåã äëÿ ñîâåðøåíèÿ îïåðàöèè";                     break;
      case 135: error_string="Öåíà èçìåíèëàñü";                                                break;
      case 136: error_string="Íåò öåí";                                                        break;
      case 137: error_string="Áðîêåð çàíÿò";                                                   break;
      case 138: error_string="Íîâûå öåíû";                                                     break;
      case 139: error_string="Îðäåð çàáëîêèðîâàí è óæå îáðàáàòûâàåòñÿ";                        break;
      case 140: error_string="Ðàçðåøåíà òîëüêî ïîêóïêà";                                       break;
      case 141: error_string="Ñëèøêîì ìíîãî çàïðîñîâ";                                         break;
      case 145: error_string="Ìîäèôèêàöèÿ çàïðåùåíà, òàê êàê îðäåð ñëèøêîì áëèçîê ê ðûíêó";    break;
      case 146: error_string="Ïîäñèñòåìà òîðãîâëè çàíÿòà";                                     break;
      case 147: error_string="Èñïîëüçîâàíèå äàòû èñòå÷åíèÿ îðäåðà çàïðåùåíî áðîêåðîì";         break;
      case 148: error_string="Êîëè÷åñòâî îòêðûòûõ è îòëîæåííûõ îðäåðîâ äîñòèãëî ïðåäåëà, óñòàíîâëåííîãî áðîêåðîì.";break;
      case 4000: error_string="Íåò îøèáêè";                                                      break;
      case 4001: error_string="Íåïðàâèëüíûé óêàçàòåëü ôóíêöèè";                                  break;
      case 4002: error_string="Èíäåêñ ìàññèâà - âíå äèàïàçîíà";                                  break;
      case 4003: error_string="Íåò ïàìÿòè äëÿ ñòåêà ôóíêöèé";                                    break;
      case 4004: error_string="Ïåðåïîëíåíèå ñòåêà ïîñëå ðåêóðñèâíîãî âûçîâà";                    break;
      case 4005: error_string="Íà ñòåêå íåò ïàìÿòè äëÿ ïåðåäà÷è ïàðàìåòðîâ";                     break;
      case 4006: error_string="Íåò ïàìÿòè äëÿ ñòðîêîâîãî ïàðàìåòðà";                             break;
      case 4007: error_string="Íåò ïàìÿòè äëÿ âðåìåííîé ñòðîêè";                                 break;
      case 4008: error_string="Íåèíèöèàëèçèðîâàííàÿ ñòðîêà";                                     break;
      case 4009: error_string="Íåèíèöèàëèçèðîâàííàÿ ñòðîêà â ìàññèâå";                           break;
      case 4010: error_string="Íåò ïàìÿòè äëÿ ñòðîêîâîãî ìàññèâà";                               break;
      case 4011: error_string="Ñëèøêîì äëèííàÿ ñòðîêà";                                          break;
      case 4012: error_string="Îñòàòîê îò äåëåíèÿ íà íîëü";                                      break;
      case 4013: error_string="Äåëåíèå íà íîëü";                                                 break;
      case 4014: error_string="Íåèçâåñòíàÿ êîìàíäà";                                             break;
      case 4015: error_string="Íåïðàâèëüíûé ïåðåõîä";                                            break;
      case 4016: error_string="Íåèíèöèàëèçèðîâàííûé ìàññèâ";                                     break;
      case 4017: error_string="Âûçîâû DLL íå ðàçðåøåíû";                                         break;
      case 4018: error_string="Íåâîçìîæíî çàãðóçèòü áèáëèîòåêó";                                 break;
      case 4019: error_string="Íåâîçìîæíî âûçâàòü ôóíêöèþ";                                      break;
      case 4020: error_string="Âûçîâû âíåøíèõ áèáëèîòå÷íûõ ôóíêöèé íå ðàçðåøåíû";                break;
      case 4021: error_string="Íåäîñòàòî÷íî ïàìÿòè äëÿ ñòðîêè, âîçâðàùàåìîé èç ôóíêöèè";         break;
      case 4022: error_string="Ñèñòåìà çàíÿòà";                                                  break;
      case 4050: error_string="Íåïðàâèëüíîå êîëè÷åñòâî ïàðàìåòðîâ ôóíêöèè";                      break;
      case 4051: error_string="Íåäîïóñòèìîå çíà÷åíèå ïàðàìåòðà ôóíêöèè";                         break;
      case 4052: error_string="Âíóòðåííÿÿ îøèáêà ñòðîêîâîé ôóíêöèè";                             break;
      case 4053: error_string="Îøèáêà ìàññèâà";                                                  break;
      case 4054: error_string="Íåïðàâèëüíîå èñïîëüçîâàíèå ìàññèâà-òàéìñåðèè";                    break;
      case 4055: error_string="Îøèáêà ïîëüçîâàòåëüñêîãî èíäèêàòîðà";                             break;
      case 4056: error_string="Ìàññèâû íåñîâìåñòèìû";                                            break;
      case 4057: error_string="Îøèáêà îáðàáîòêè ãëîáàëüíûåõ ïåðåìåííûõ";                         break;
      case 4058: error_string="Ãëîáàëüíàÿ ïåðåìåííàÿ íå îáíàðóæåíà";                             break;
      case 4059: error_string="Ôóíêöèÿ íå ðàçðåøåíà â òåñòîâîì ðåæèìå";                          break;
      case 4060: error_string="Ôóíêöèÿ íå ðàçðåøåíà";                                            break;
      case 4061: error_string="Îøèáêà îòïðàâêè ïî÷òû";                                           break;
      case 4062: error_string="Îæèäàåòñÿ ïàðàìåòð òèïà string";                                  break;
      case 4063: error_string="Îæèäàåòñÿ ïàðàìåòð òèïà integer";                                 break;
      case 4064: error_string="Îæèäàåòñÿ ïàðàìåòð òèïà double";                                  break;
      case 4065: error_string=" êà÷åñòâå ïàðàìåòðà îæèäàåòñÿ ìàññèâ";                           break;
      case 4066: error_string="Çàïðîøåííûå èñòîðè÷åñêèå äàííûå â ñîñòîÿíèè îáíîâëåíèÿ";          break;
      case 4067: error_string="Îøèáêà ïðè âûïîëíåíèè òîðãîâîé îïåðàöèè";                         break;
      case 4099: error_string="Êîíåö ôàéëà";                                                     break;
      case 4100: error_string="Îøèáêà ïðè ðàáîòå ñ ôàéëîì";                                      break;
      case 4101: error_string="Íåïðàâèëüíîå èìÿ ôàéëà";                                          break;
      case 4102: error_string="Ñëèøêîì ìíîãî îòêðûòûõ ôàéëîâ";                                   break;
      case 4103: error_string="Íåâîçìîæíî îòêðûòü ôàéë";                                         break;
      case 4104: error_string="Íåñîâìåñòèìûé ðåæèì äîñòóïà ê ôàéëó";                             break;
      case 4105: error_string="Íè îäèí îðäåð íå âûáðàí";                                         break;
      case 4106: error_string="Íåèçâåñòíûé ñèìâîë";                                              break;
      case 4107: error_string="Íåïðàâèëüíûé ïàðàìåòð öåíû äëÿ òîðãîâîé ôóíêöèè";                 break;
      case 4108: error_string="Íåâåðíûé íîìåð òèêåòà";                                           break;
      case 4109: error_string="Òîðãîâëÿ íå ðàçðåøåíà. Íåîáõîäèìî âêëþ÷èòü îïöèþ Ðàçðåøèòü ñîâåòíèêó òîðãîâàòü â ñâîéñòâàõ ýêñïåðòà.";            break;
      case 4110: error_string="Äëèííûå ïîçèöèè íå ðàçðåøåíû. Íåîáõîäèìî ïðîâåðèòü ñâîéñòâà ýêñïåðòà.";           break;
      case 4111: error_string="Êîðîòêèå ïîçèöèè íå ðàçðåøåíû. Íåîáõîäèìî ïðîâåðèòü ñâîéñòâà ýêñïåðòà.";          break;
      case 4200: error_string="Îáúåêò óæå ñóùåñòâóåò";                                           break;
      case 4201: error_string="Çàïðîøåíî íåèçâåñòíîå ñâîéñòâî îáúåêòà";                          break;
      case 4202: error_string="Îáúåêò íå ñóùåñòâóåò";                                            break;
      case 4203: error_string="Íåèçâåñòíûé òèï îáúåêòà";                                         break;
      case 4204: error_string="Íåò èìåíè îáúåêòà";                                               break;
      case 4205: error_string="Îøèáêà êîîðäèíàò îáúåêòà";                                        break;
      case 4206: error_string="Íå íàéäåíî óêàçàííîå ïîäîêíî";                                    break;
      default:   error_string="Îøèáêà ïðè ðàáîòå ñ îáúåêòîì";
     }
   return(error_string);
  }  







Comments