FT_FOREX_BOMBA

Author: FORTRADER.RU, ����, ftyuriy@gmail.com
Orders Execution
It automatically opens orders when conditions are reachedChecks for the total of open ordersIt Closes Orders by itself
0 Views
0 Downloads
0 Favorites
FT_FOREX_BOMBA
//+------------------------------------------------------------------+
//|                                               FT_FOREX_BOMBA.mq4 |
//|                            FORTRADER.RU, Þðèé, ftyuriy@gmail.com |
//|               http://FORTRADER.RU, õåäæèðîâàíèå + äèâåðñèôèêàöèÿ |
//+------------------------------------------------------------------+
#property copyright "FORTRADER.RU, Þðèé, ftyuriy@gmail.com"
#property link      "http://FORTRADER.RU, Hadge"
/*Ðàçðàáîòàíî äëÿ 53 âûïóñêà æóðíàëà FORTRADER.Ru. Ñèñòåìà ïî CCI. 
Îò÷åòû: http://finfile.ru/index.php/files/get/wL1KpikERU/ft-forex-bomba-stat.zip
Îáñóæäåíèå: http://forexsystems.ru/sovetnik-po-strategii-foreks-bomba-t10818.html
Àðõèâ æóðíàëà: http://www.fortrader.ru/arhiv.php
53 âûïóñê: http://www.fortrader.ru/
*/

double fase=0.3; 
int bars=950;      

extern int onlybuy=1;
 int SL=0;
 int TP=0;

extern int mn=1;
int err;

extern int MG=564651;
extern double Lots=0.01;

extern string s1="USDCHF";
extern string s2="EURUSD";

extern double profitplus=1;
extern double profitminus=-1;

extern double profit=1;
int MMchfFB,MMeurFB,MMchfFS,MMeurFS;
int start()
  { double op,sl,tp;
  
  
  double MMchf=iCustom(s1, 0, "Laguerre",fase,bars,0,1);
  double MMeur=iCustom(s2, 0, "Laguerre",fase,bars,0,1);
  
  //Åñëè íåò ñîâñåì ïîçèöèé âõîäèì â ïîêóïêó èëè ïðîäàæó â çàâèñèìîñòè îò òîãî ÷òî ðàíüøå.
  if(ChPos(0)==0 && ChPos(1)==0)
  {
   if(MMchf<=0 && onlybuy==1)
   {
     op=MarketInfo(s1,MODE_ASK);if(SL>0){sl=op-SL*Point*mn;}if(TP>0){tp=op+TP*Point*mn;}
     err=OrderSend(s1,OP_BUY,Lots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"6 FORTRADER.RU",MG,0,Red);
     if(err<0){Print("OrderSend()-  Îøèáêà OP_BUY.  op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);}
     return(0);
   }
   if(MMchf>=1 && onlybuy!=1)
   {
      op=MarketInfo(s1,MODE_BID);if(SL>0){sl=op+SL*Point*mn;}if(TP>0){tp=op-TP*Point*mn;}
      err=OrderSend(s1,OP_SELL,Lots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"4 FORTRADER.RU",MG,0,Red);
      if(err<0){Print("OrderSend()-  Îøèáêà OP_SELL.  op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);}
       return(0);
   }
   
   if(MMeur<=0 && onlybuy==1)
   {
     op=MarketInfo(s2,MODE_ASK);if(SL>0){sl=op-SL*Point*mn;}if(TP>0){tp=op+TP*Point*mn;}
     err=OrderSend(s2,OP_BUY,Lots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"6 FORTRADER.RU",MG,0,Red);
     if(err<0){Print("OrderSend()-  Îøèáêà OP_BUY.  op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);}
      return(0);
   }
   if(MMeur>=1 && onlybuy!=1)
   {
      op=MarketInfo(s2,MODE_BID);if(SL>0){sl=op+SL*Point*mn;}if(TP>0){tp=op-TP*Point*mn;}
      err=OrderSend(s2,OP_SELL,Lots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"4 FORTRADER.RU",MG,0,Red);
      if(err<0){Print("OrderSend()-  Îøèáêà OP_SELL.  op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);}
       return(0);
   }
  }
  
  //Çàêðûâàåì åñëè â áàëàíñå ïðèáûëü áîëüøå 10 ï.
  
  
  if((SummPos(1)+SummPos(0))>=profit){Print("Close");CloseAllPos(1);CloseAllPos(0);}
  
  Print(ProfitLastPos());
  //åñëè ïîñëåäíÿÿ ïîçèöèÿ â ïëþñå äîáàâëÿåìñÿ:
  if(ProfitLastPos()>profitplus )
  {Print("ProfitLastPos(): "+ProfitLastPos());
  if(LastNavPos()==OP_BUY)
    { Print("OP_BUY LastNavPos(): "+LastNavPos());
    if(MMeur>0.5){MMeurFB=0;}
    Print("OP_BUY LastSymbolPos "+LastSymbolPos() +" MMeur "+MMeur+" MMeurFB "+MMeurFB);
      if(LastSymbolPos()==s2 && MMeur<=0 && MMeurFB==0)
      {MMeurFB=1;
       op=MarketInfo(s2,MODE_ASK);if(SL>0){sl=op-SL*Point*mn;}if(TP>0){tp=op+TP*Point*mn;}
       err=OrderSend(s2,OP_BUY,Lots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"6 FORTRADER.RU",MG,0,Red);
       if(err<0){Print("OrderSend()-  Îøèáêà OP_BUY.  op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);}
       return(0);
      }
      if(MMchf>0.5){MMchfFB=0;}
      
      Print("OP_BUY LastSymbolPos "+LastSymbolPos() +" MMchf "+MMchf+" MMchfFB "+MMchfFB);
      
      if(LastSymbolPos()==s1 && MMchf<=0 && MMchfFB==0)
      {MMchfFB=1;
      op=MarketInfo(s1,MODE_ASK);if(SL>0){sl=op-SL*Point*mn;}if(TP>0){tp=op+TP*Point*mn;}
      err=OrderSend(s1,OP_BUY,Lots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"6 FORTRADER.RU",MG,0,Red);
      if(err<0){Print("OrderSend()-  Îøèáêà OP_BUY.  op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);}
      return(0);
      }
    }
       if(LastNavPos()==OP_SELL)
    { 
      Print("OP_SELL LastNavPos(): "+LastNavPos());
    
      if(MMeur<0.5){MMeurFS=0;}
      
      Print("OP_SELL LastSymbolPos "+LastSymbolPos() +" MMeur "+MMeur+" MMeurFB "+MMeurFS);

      if(LastSymbolPos()==s2 && MMeur>=1 && MMeurFS==0)
      {MMeurFS=1;
      op=MarketInfo(s2,MODE_BID);if(SL>0){sl=op+SL*Point*mn;}if(TP>0){tp=op-TP*Point*mn;}
      err=OrderSend(s2,OP_SELL,Lots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"4 FORTRADER.RU",MG,0,Red);
      if(err<0){Print("OrderSend()-  Îøèáêà OP_SELL.  op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);}
      return(0);
      }
      
      if(MMchf<0.5){MMchfFS=0;}
      
      Print("OP_SELL LastSymbolPos "+LastSymbolPos() +" MMchf "+MMchf+" MMchfFS "+MMchfFS);

      if(LastSymbolPos()==s1 && MMchf>=1 && MMchfFS==0)
      {MMchfFS=1;
      op=MarketInfo(s1,MODE_BID);if(SL>0){sl=op+SL*Point*mn;}if(TP>0){tp=op-TP*Point*mn;}
      err=OrderSend(s1,OP_SELL,Lots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"4 FORTRADER.RU",MG,0,Red);
      if(err<0){Print("OrderSend()-  Îøèáêà OP_SELL.  op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);}
      return(0);
      }
    }
  }
  
  //åñëè ïîñëåäíÿÿ ïîçèöèÿ â óáûòêå:
  if(ProfitLastPos()<profitminus )
  {Print("ProfitLastPos(): "+ProfitLastPos());
    if(LastNavPos()==OP_BUY)
    { Print("OP_BUY LastNavPos(): "+LastNavPos());
    
      if(MMeur>0.5){MMeurFB=0;}
      
      Print("OP_BUY LastSymbolPos "+LastSymbolPos() +" MMeur "+MMeur+" MMeurFB "+MMeurFB);
      
      if(LastSymbolPos()==s1 && MMeur<=0 && MMeurFB==0)
      {MMeurFB=1;
      op=MarketInfo(s2,MODE_ASK);if(SL>0){sl=op-SL*Point*mn;}if(TP>0){tp=op+TP*Point*mn;}
      err=OrderSend(s2,OP_BUY,Lots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"6 FORTRADER.RU",MG,0,Red);
      if(err<0){Print("OrderSend()-  Îøèáêà OP_BUY.  op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);}
      return(0);
      }
      if(MMchf>0.5){MMchfFB=0;}
      
     Print("OP_BUY LastSymbolPos "+LastSymbolPos() +" MMchf "+MMchf+" MMchfFB "+MMchfFB);

      if(LastSymbolPos()==s2 && MMchf<=0 && MMchfFB==0)
      {MMchfFB=1;
      op=MarketInfo(s1,MODE_ASK);if(SL>0){sl=op-SL*Point*mn;}if(TP>0){tp=op+TP*Point*mn;}
      err=OrderSend(s1,OP_BUY,Lots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"6 FORTRADER.RU",MG,0,Red);
      if(err<0){Print("OrderSend()-  Îøèáêà OP_BUY.  op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);}
      return(0);
      }
    }
    if(LastNavPos()==OP_SELL)
    { 
      Print("OP_SELL LastNavPos(): "+LastNavPos());
    
      if(MMeur<0.5){MMeurFS=0;}
      
      Print("OP_SELL LastSymbolPos "+LastSymbolPos() +" MMeur "+MMeur+" MMeurFB "+MMeurFS);

      if(LastSymbolPos()==s1 && MMeur>=1 && MMeurFS==0)
      {MMeurFS=1;
      op=MarketInfo(s2,MODE_BID);if(SL>0){sl=op+SL*Point*mn;}if(TP>0){tp=op-TP*Point*mn;}
      err=OrderSend(s2,OP_SELL,Lots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"4 FORTRADER.RU",MG,0,Red);
      if(err<0){Print("OrderSend()-  Îøèáêà OP_SELL.  op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);}
      return(0);
      }
      
      if(MMchf<0.5){MMchfFS=0;}
      
      Print("OP_SELL LastSymbolPos "+LastSymbolPos() +" MMchf "+MMchf+" MMchfFS "+MMchfFS);

      if(LastSymbolPos()==s2 && MMchf>=1 && MMchfFS==0)
      {MMchfFS=1;
      op=MarketInfo(s1,MODE_BID);if(SL>0){sl=op+SL*Point*mn;}if(TP>0){tp=op-TP*Point*mn;}
      err=OrderSend(s1,OP_SELL,Lots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"4 FORTRADER.RU",MG,0,Red);
      if(err<0){Print("OrderSend()-  Îøèáêà OP_SELL.  op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);}
      return(0);
      }
    }
  }
  /*
  a) ñìîòðèì åå íàïðàâëåíèå
  á) ñìîòðèì åå ñèìâîë
  ñ) íà÷èíàåì îòñëåæèâàòü ñèãíàë îò ïðîòèâîïîëîæíîé ïàðû 
  */
  
   return(0);
  }

//Ñèìâîë ïðîôèòíîé ïîçèöèè
string LastSymbolPos() 
{int i;datetime time;string symbol;
   for( i=0; i<=OrdersTotal(); i++)         
   {
      if(OrderSelect(i-1,SELECT_BY_POS)==true) 
       {                                   
           if(OrderOpenTime()>time ){time=OrderOpenTime();symbol=OrderSymbol();}
       }
    }   
return(symbol);
}

//Íàïðàâëåíèå ïîñëåäíåé ïîçèöèè
int LastNavPos() 
{int i;datetime time;int type;
   for( i=1; i<=OrdersTotal(); i++)         
   {
      if(OrderSelect(i-1,SELECT_BY_POS)==true) 
       {                                   
           if(OrderOpenTime()>time){time=OrderOpenTime();type=OrderType();}
       }
    }   
return(type);
}
  
//Ðåçóëüòàò ïîñëåäíåé îòêðûòîé ïîçèöèè
double ProfitLastPos() 
{int i;datetime time;double profit;
   for( i=1; i<=OrdersTotal(); i++)         
   {
      if(OrderSelect(i-1,SELECT_BY_POS)==true) 
       {                                   
           if(OrderOpenTime()>time){time=OrderOpenTime();profit=OrderProfit();}
       }
    }   
return(profit);
}
  
//Çàêðûâàåì âñå ïîçèöèè ïî òèïó
int CloseAllPos(int type)
{//Îïèñàíèå ôóíêöèè: http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=72
int buy=1; int sell=1;
int i,b=0;int ordertiket;
 
 if(type==1)
   {
   while(buy==1)
     {
        buy=0;
        for( i=0;i<OrdersTotal();i++)
         {
           if(true==OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
           {
           if(OrderType()==OP_BUY ){buy=1; OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),3,Violet);}
           }else{buy=0;}
         }  
         if(buy==0){return(0);}
      } 
   }
   
   if(type==0 )
   {
      while(sell==1)
     {
        sell=0;
        for( i=0;i<OrdersTotal();i++)
         {
           if(true==OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
           {
           if(OrderType()==OP_SELL){sell=1;OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),3,Violet); }
           }else{sell=0;}
         }  
         
        if(sell==0){return(0);}
      } 
     }
   return(0);
   }

  
 //ñóììèðóåò ðåçóëüòàò ïîçèöèé ïî òèïó
double SummPos(int type) 
{//ïîäðîáíîå îïèñàíèå: http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=100

   int i;double summ;
   for( i=0; i<=OrdersTotal(); i++)         
   {
      if(OrderSelect(i-1,SELECT_BY_POS)==true) 
       {                                   
           if(OrderType()==OP_BUY  && type==1){summ=summ+OrderProfit();}
           if(OrderType()==OP_SELL && type==0){summ=summ+OrderProfit();}
       }
    }   
return(summ);
}

int ChPos(int type) 
{//ïîäðîáíîå îïèñàíèå: http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=100

   int i;int col;
   for( i=1; i<=OrdersTotal(); i++)         
   {
      if(OrderSelect(i-1,SELECT_BY_POS)==true) 
       {                                   
           if(OrderType()==OP_BUY  && type==1){col=1;}
           if(OrderType()==OP_SELL && type==0){col=1;}
       }
    }   
return(col);
}

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---