FT_TrendFollower

Author: FORTRADER.RU
Price Data Components
Series array that contains the highest prices of each barSeries array that contains the lowest prices of each barSeries array that contains close prices for each bar
Orders Execution
It automatically opens orders when conditions are reachedChecks for the total of open ordersIt Closes Orders by itself
Indicators Used
MACD HistogramMoving average indicator
0 Views
0 Downloads
0 Favorites

Profitability Reports

GBP/USD Oct 2024 - Jan 2025
53.00 %
Total Trades 39
Won Trades 20
Lost trades 19
Win Rate 0.51 %
Expected payoff -3.99
Gross Profit 172.50
Gross Loss -328.10
Total Net Profit -155.60
-100%
-50%
0%
50%
100%
NZD/USD Oct 2024 - Jan 2025
15.00 %
Total Trades 42
Won Trades 18
Lost trades 24
Win Rate 0.43 %
Expected payoff -4.80
Gross Profit 35.10
Gross Loss -236.80
Total Net Profit -201.70
-100%
-50%
0%
50%
100%
FT_TrendFollower
//+------------------------------------------------------------------+
//|                                             FT_TrendFollower.mq4 |
//|                                                     FORTRADER.RU |
//|                                              http://FORTRADER.RU |
//| http://www.forexsystems.ru/showthread.php?p=6794                 |
//+------------------------------------------------------------------+
#property copyright "FORTRADER.RU"
#property link      "http://FORTRADER.RU Ñèñòåìà ïî TrendFollower"

extern string GMMA0="Íàñòðîéêà GMMA:";
extern int SrartGMMAPer=50; 
extern int EndGMMAPer=200; 
extern int CountLine=5; 

extern string EMA48="Íàñòðîéêà EMASIG4-8:";
extern int EMA4=4;
extern int EMA8=8;

extern string TradeBar="Íà êàêîì áàðå ðàáîòàåì:";
extern int TradeShift=1;


extern string SL="Íàñòðîéêè ÑòîïËîññà:";
extern int Stoploss1=1;
extern int Stoploss1Pips=5;
extern int Stoploss2=0;
extern int Stoploss2Pips=25;

extern string Q="Íàñòðîéêè Âûõîäà:";
extern int Quit=1;//çàêðûòèå ïîëîâèíû íà îïîðíîé òî÷êå ïîëîâèíû ïðè ñìåíå ëèíèè íà êðàñíóþ
extern int HMAPer=80;
extern int Quit1=0;
extern int Quit2=0;
extern int ChPer=34;



int nummodb,nummodbS;

double ggma[1000];
double ggmalast[1000];
int indexline,trend,EmaSigOk,CloseOk,LaguerreOk,EmaSigOkS,CloseOkS,LaguerreOkS;double ema4,ema8,Laguerre,dMacdMain;

int init(){return(0);}
int deinit(){return(0);}

int start()
{int controlgreen,controlvverh,controlvverhS;double sl;int i;
if(errorchek()!=""){Print(errorchek());return(0);}
    
    exit();
    GMMA();

if(Close[1]<ggma[indexline-1]){CloseOk=1;}
if(Close[1]>ggma[indexline-1]){CloseOkS=1;}


if(CloseOk==1 && Close[1]>ggma[0]){LaguerreOk=0;EmaSigOk=0;CloseOk=0;}
if(CloseOkS==1 && Close[1]<ggma[0]){LaguerreOkS=0;EmaSigOkS=0;CloseOkS=0;}
  
    //ñìîòðèì âñå ëè çåëåíûå âûøå êðàñíûõ 
    trend=2;
    if(ggma[indexline-(CountLine+CountLine)]>ggma[indexline-CountLine] )
    {
    trend=1;
    }
    if(ggma[indexline-(CountLine+CountLine)]<ggma[indexline-CountLine] )
    {
    trend=0;
    }
    
    
   Laguerre();
   if(trend==1 && Laguerre<0.15 && Close[1]>ggma[indexline-1]&& Low[1]<ggma[0]){LaguerreOk=1;}
   if(trend==0 && Laguerre>0.75 && Close[1]<ggma[indexline-1]&& High[1]>ggma[0]){LaguerreOkS=1;}
   EMASIG();
   if(trend==1 && ema4<ema8){EmaSigOk=1;}
   if(trend==0 && ema4>ema8){EmaSigOkS=1;}
 
    for( i=CountLine;i>=0;i--)
    {
    //ïîñìîòðèì íàïðàâëåííû âñå êðàñíûå çåëåíûå è æåëòûå ââåðõ
    if(ggma[indexline-(CountLine+i)]>ggmalast[indexline-(CountLine+i)]){controlvverh=controlvverh+1;}
    if(ggma[indexline-(CountLine+CountLine+i-1)]>ggmalast[indexline-(CountLine+CountLine+i-1)]){controlvverh=controlvverh+1;}
    if(ggma[i]>ggmalast[i]){controlvverh=controlvverh+1;}
    }
    for( i=CountLine;i>=0;i--)
    {
    //ïîñìîòðèì íàïðàâëåííû âñå êðàñíûå çåëåíûå è æåëòûå ââåðõ
    if(ggma[indexline-(CountLine+i)]<ggmalast[indexline-(CountLine+i)]){controlvverhS=controlvverhS+1;}
    if(ggma[indexline-(CountLine+CountLine+i-1)]<ggmalast[indexline-(CountLine+CountLine+i-1)]){controlvverhS=controlvverhS+1;}
    if(ggma[i]<ggmalast[i]){controlvverhS=controlvverhS+1;}
    }
    
    
    
    MACD();
    
    if(trend==1 && Laguerre>0.15 && LaguerreOk==1 && ema4>ema8 && EmaSigOk==1 && dMacdMain>0 && controlvverh>(indexline/2)  )
    {LaguerreOk=0;EmaSigOk=0;CloseOk=0;
    if(Stoploss1==1){sl=Low[1]-(Stoploss1Pips+MarketInfo(Symbol(),MODE_SPREAD))*Point; if(MathAbs(Ask-sl)<15*Point){sl=Ask-15*Point;}}
    if(Stoploss2==1){sl=Ask-Stoploss2Pips*Point;}
    OrderSend(Symbol(),OP_BUY,0.1,Ask,3,NormalizeDouble(sl,4),0,"FORTRADER.RU",1337,0,Green);
    nummodb=0;
    }
    
    if(trend==0 && Laguerre<0.75 && LaguerreOkS==1 && ema4<ema8 && EmaSigOkS==1 && dMacdMain<0 && controlvverhS>(indexline/2)  )
    {LaguerreOkS=0;EmaSigOkS=0;CloseOkS=0;
    if(Stoploss1==1){sl=High[1]+(Stoploss1Pips+MarketInfo(Symbol(),MODE_SPREAD))*Point; if(MathAbs(Bid-sl)<15*Point){sl=Bid+15*Point;}}
    if(Stoploss2==1){sl=Bid+Stoploss2Pips*Point;}
    OrderSend(Symbol(),OP_SELL,0.1,Bid,3,NormalizeDouble(sl,4),0,"FORTRADER.RU",1337,0,Green);
    nummodbS=0;
    }
  
return(0);
}

int MACD()
{
 dMacdMain = iMACD(Symbol(),NULL,5,35,5,PRICE_CLOSE,MODE_MAIN,1);
}

int EMASIG()
{
ema4=iMA(NULL,0,EMA4,0,MODE_EMA,PRICE_CLOSE,TradeShift);
ema8=iMA(NULL,0,EMA8,0,MODE_EMA,PRICE_CLOSE,TradeShift);
}

int Laguerre()
{
Laguerre=iCustom(Symbol(),NULL,"Laguerre",0,TradeShift);
}

int GMMA()
{indexline=0;
//âû÷èñëèì îáùåå êîëè÷åñòâî ëèíèé
int cline=5*CountLine;
//âû÷èñëèì øàã ëèíèé
int shagline=(EndGMMAPer-SrartGMMAPer)/cline;

//ïîëó÷èì çíà÷åíèÿ ëèíèé ëèíèè

for(int per=SrartGMMAPer;per<=EndGMMAPer;per=per+shagline)
{
ggma[indexline]=iMA(NULL,0,per,0,MODE_EMA,PRICE_CLOSE,TradeShift);
ggmalast[indexline]=iMA(NULL,0,per,0,MODE_EMA,PRICE_CLOSE,TradeShift+1);
indexline=indexline+1;
}

}

string errorchek()
{
if(SrartGMMAPer>EndGMMAPer){return("Îøèáêà! SrartGMMAPer íå ìîæåò áûòü áîëüøå EndGMMAPer");}
if(SrartGMMAPer==EndGMMAPer){return("Îøèáêà! SrartGMMAPer íå ìîæåò áûòü ðàâíî EndGMMAPer");}
if(CountLine==0){return("Îøèáêà! CountLine íå ìîæåò áûòü 0");}
if(CountLine>10){return("Îøèáêà! CountLine íå ìîæåò áûòü áîëüøå 10");}
if(CountLine>SrartGMMAPer){return("Îøèáêà! CountLine íå ìîæåò áûòü áîëüøå SrartGMMAPer");}
if(CountLine>EndGMMAPer){return("Îøèáêà! CountLine íå ìîæåò áûòü áîëüøå EndGMMAPer");}
if(EMA4>EMA8){return("Îøèáêà! EMA4 íå ìîæåò áûòü áîëüøå EMA8");}
if(Stoploss1==1 && Stoploss2==1){return("Îøèáêà! StopLoss íå ìîæåò áûòü âëþ÷åíî äâà âàðèàíòà îäíîâðåìåííî");}
if(TradeShift>1 || Stoploss1>1 || Stoploss2>1 || Quit>1 || Quit1>1 || Quit2>1){return("Îøèáêà! çíà÷åíèÿ TradeShift>1 || Stoploss1>1 || Stoploss2>1 || Quit>1 Quit1>1 || Quit2>1 íå ìîãóò áûòü áîëüøå 1");}
if(Quit>0 && Quit1>0 || Quit2>0){return("Îøèáêà! Âàðèàíò ñòîï ëîññà ìîæåò áûòü òîëüêî îäèí");}
if(Quit1>0 && Quit>0 || Quit2>0){return("Îøèáêà! Âàðèàíò ñòîï ëîññà ìîæåò áûòü òîëüêî îäèí");}
if(Quit2>0 && Quit>0 || Quit1>0){return("Îøèáêà! Âàðèàíò ñòîï ëîññà ìîæåò áûòü òîëüêî îäèí");}

return("");
}

int exit()
{
double Pivot= (iHigh(Symbol(),1440,1) + iLow(Symbol(),1440,1) +  iClose(Symbol(),1440,1))/3;
double support1 = (2 * Pivot) - iHigh(Symbol(),1440,1);
double resist1 = (2 * Pivot) - iLow(Symbol(),1440,1);
double support2 = Pivot - (iHigh(Symbol(),1440,1) - iLow(Symbol(),1440,1));
double resist2 = Pivot + (iHigh(Symbol(),1440,1) - iLow(Symbol(),1440,1));

double hma=iCustom(Symbol(),0,"HMA",HMAPer,0,TradeShift);
double hma1=iCustom(Symbol(),0,"HMA",HMAPer,1,TradeShift);
double hma2=iCustom(Symbol(),0,"HMA",HMAPer,2,TradeShift);

double vltUP=iMA(NULL,0,ChPer,0,MODE_SMA,PRICE_HIGH,TradeShift);
double vltDW=iMA(NULL,0,ChPer,0,MODE_SMA,PRICE_LOW,TradeShift);

Comment("hma " ,hma, " hma1 " ,hma1," hma2 " ,hma2);


for( int i=1; i<=OrdersTotal(); i++)          
     {
     /*çàêðûòèå ïî ïèâîòó è ñóïåð ëèíèè-------------------------------------------------------------------------------*/
      if (OrderSelect(i-1,SELECT_BY_POS)==true) 
        {                                       
         if(OrderType()==OP_BUY && Bid>resist1 && OrderProfit()>0  && nummodb==0 && OrderSymbol()==Symbol() && Quit==1)
         {  
          OrderClose(OrderTicket(),NormalizeDouble(OrderLots()/2,2),Bid,3,Violet); 
          nummodb++;
         }
        }
        
       if (OrderSelect(i-1,SELECT_BY_POS)==true) // Åñëè åñòü ñëåäóþùèé
        {                                       // À
         if(OrderType()==OP_BUY && hma1!=EMPTY_VALUE && OrderProfit()>0 && OrderSymbol()==Symbol() && nummodb==1 && Quit==1)
         {  
         OrderClose(OrderTicket(),NormalizeDouble(OrderLots(),2),Bid,3,Violet); 
         nummodb++;
         }
        }
        /*çàêðûòèå ïî ïèâîòó -------------------------------------------------------------------------------*/
              if (OrderSelect(i-1,SELECT_BY_POS)==true) 
        {                                       
         if(OrderType()==OP_BUY && Bid>resist1 && OrderProfit()>0  && nummodb==0 && OrderSymbol()==Symbol() && Quit1==1)
         {  
          OrderClose(OrderTicket(),NormalizeDouble(OrderLots()/2,2),Bid,3,Violet); 
          nummodb++;
         }
        }
        
       if (OrderSelect(i-1,SELECT_BY_POS)==true) // Åñëè åñòü ñëåäóþùèé
        {                                       // À
         if(OrderType()==OP_BUY && Bid>resist2 && OrderProfit()>0 && OrderSymbol()==Symbol() && nummodb==1 && Quit1==1)
         {  
         OrderClose(OrderTicket(),NormalizeDouble(OrderLots(),2),Bid,3,Violet); 
         nummodb++;
         }
        }
        /*çàêðûòèå ïî ïèâîòó è êàíàëó âîëàòèëüíîñòè-------------------------------------------------------------------------------*/ 
                     if (OrderSelect(i-1,SELECT_BY_POS)==true) 
        {                                       
         if(OrderType()==OP_BUY && Bid>resist1 && OrderProfit()>0  && nummodb==0 && OrderSymbol()==Symbol() && Quit2==1)
         {  
          OrderClose(OrderTicket(),NormalizeDouble(OrderLots()/2,2),Bid,3,Violet); 
          nummodb++;
         }
        }
        
       if (OrderSelect(i-1,SELECT_BY_POS)==true) // Åñëè åñòü ñëåäóþùèé
        {                                       // À
         if(OrderType()==OP_BUY && Open[1]<vltDW && OrderProfit()>0 && OrderSymbol()==Symbol() && nummodb==1 && Quit2==1)
         {  
         OrderClose(OrderTicket(),NormalizeDouble(OrderLots(),2),Bid,3,Violet); 
         nummodb++;
         }
        }
        
        ///////////////////////////ÏÐÎÄÀÆÈ/////////////////////////////////////////////////////////////////////////////////////////////////////
        if (OrderSelect(i-1,SELECT_BY_POS)==true) 
        {                                       
         if(OrderType()==OP_SELL && Ask<support1 && OrderProfit()>0  && nummodbS==0 && OrderSymbol()==Symbol() && Quit==1)
         {  
          OrderClose(OrderTicket(),NormalizeDouble(OrderLots()/2,2),Ask,3,Violet); 
          nummodbS++;
         }
        }
        
       if (OrderSelect(i-1,SELECT_BY_POS)==true) // Åñëè åñòü ñëåäóþùèé
        {                                       // À
         if(OrderType()==OP_SELL && hma!=EMPTY_VALUE && OrderProfit()>0 && OrderSymbol()==Symbol() && nummodbS==1 && Quit==1)
         {  
         OrderClose(OrderTicket(),NormalizeDouble(OrderLots(),2),Ask,3,Violet); 
         nummodbS++;
         }
        }
        /*çàêðûòèå ïî ïèâîòó -------------------------------------------------------------------------------*/
       if (OrderSelect(i-1,SELECT_BY_POS)==true) 
        {                                       
         if(OrderType()==OP_BUY && Ask<support1 && OrderProfit()>0  && nummodbS==0 && OrderSymbol()==Symbol() && Quit1==1)
         {  
          OrderClose(OrderTicket(),NormalizeDouble(OrderLots()/2,2),Ask,3,Violet); 
          nummodbS++;
         }
        }
        
       if (OrderSelect(i-1,SELECT_BY_POS)==true) // Åñëè åñòü ñëåäóþùèé
        {                                       // À
         if(OrderType()==OP_BUY && Ask<support2 && OrderProfit()>0 && OrderSymbol()==Symbol() && nummodbS==1 && Quit1==1)
         {  
         OrderClose(OrderTicket(),NormalizeDouble(OrderLots(),2),Ask,3,Violet); 
         nummodbS++;
         }
        }
        /*çàêðûòèå ïî ïèâîòó è êàíàëó âîëàòèëüíîñòè-------------------------------------------------------------------------------*/ 
        if (OrderSelect(i-1,SELECT_BY_POS)==true) 
        {                                       
         if(OrderType()==OP_BUY && Ask<support1 && OrderProfit()>0  && nummodbS==0 && OrderSymbol()==Symbol() && Quit2==1)
         {  
          OrderClose(OrderTicket(),NormalizeDouble(OrderLots()/2,2),Ask,3,Violet); 
          nummodbS++;
         }
        }
        
       if (OrderSelect(i-1,SELECT_BY_POS)==true) // Åñëè åñòü ñëåäóþùèé
        {                                       // À
         if(OrderType()==OP_BUY && Open[1]>vltUP && OrderProfit()>0 && OrderSymbol()==Symbol() && nummodbS==1 && Quit2==1)
         {  
         OrderClose(OrderTicket(),NormalizeDouble(OrderLots(),2),Ask,3,Violet); 
         nummodbS++;
         }
        }
      }

return(0);
}

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 ---