I am beginner of MQL4 :) .. Indicators not bad but rather poor return on expert why? What are my mistakes? How can I solve the problem?

 
//+------------------------------------------------------------------+
//|                                                        Genie.mq4 |
//|                                                   Genaro Gravoso |
//|                          http://www.oocities.org/ggravoso/b.html |
//+------------------------------------------------------------------+
#property copyright "Genaro Gravoso"
#property link      "http://www.oocities.org/ggravoso/b.html"
#property description "Pivot Point Reversal scalping expert advisor"
#property version   "1.00"
#property strict

//--- Inputs
input double TakeProfit    =500;
input double Lots          =0.1;
input double TrailingStop  =200;
input double MaximumRisk   =0.02;
input double DecreaseFactor=3;
bool al=false;
bool kalem=false;
 int    total,res,alim,satim,t,i,m;
   double a,b,c,d,e,f,g,h;
   bool mkl,mkl1;


void CheckForOpen()
  {
  
//--- go trading only for first tiks of new bar
  
   total=OrdersTotal();
  
         a=iMA(NULL,0,15,0,MODE_SMA,PRICE_CLOSE,i);//3.bölüm kaç bar alınacağı,4.bölümişlemin kaçıncı bardan başlanacağını,5.bölüm hangi matematiksel işlemin olacağını.6.bölüm uygulanması istenen fiyatın türünü ifade etmektedir.son bölümü 0 almakta fayda var...
         b=iMA(NULL,0,1,0,MODE_SMA,PRICE_CLOSE,i);//3.bölüm kaç bar alınacağı,4.bölümişlemin kaçıncı bardan başlanacağını,5.bölüm hangi matematiksel işlemin olacağını.6.bölüm uygulanması istenen fiyatın türünü ifade etmektedir.son bölümü 0 almakta fayda var...
         c=iMA(NULL,0,7,0,MODE_SMA,PRICE_CLOSE,i);//3.bölüm kaç bar alınacağı,4.bölümişlemin kaçıncı bardan başlanacağını,5.bölüm hangi matematiksel işlemin olacağını.6.bölüm uygulanması istenen fiyatın türünü ifade etmektedir.son bölümü 0 almakta fayda var...
         d=iMA(NULL,0,17,0,MODE_SMA,PRICE_CLOSE,i);//3.bölüm kaç bar alınacağı,4.bölümişlemin kaçıncı bardan başlanacağını,5.bölüm hangi matematiksel işlemin olacağını.6.bölüm uygulanması istenen fiyatın türünü ifade etmektedir.son bölümü 0 almakta fayda var...
         e=iMA(NULL,0,15,0,MODE_SMA,PRICE_CLOSE,i);//3.bölüm kaç bar alınacağı,4.bölümişlemin kaçıncı bardan başlanacağını,5.bölüm hangi matematiksel işlemin olacağını.6.bölüm uygulanması istenen fiyatın türünü ifade etmektedir.son bölümü 0 almakta fayda var...
         f=iMA(NULL,0,1,0,MODE_SMA,PRICE_CLOSE,i);//3.bölüm kaç bar alınacağı,4.bölümişlemin kaçıncı bardan başlanacağını,5.bölüm hangi matematiksel işlemin olacağını.6.bölüm uygulanması istenen fiyatın türünü ifade etmektedir.son bölümü 0 almakta fayda var...
         g=iMA(NULL,0,7,0,MODE_SMA,PRICE_CLOSE,i);//3.bölüm kaç bar alınacağı,4.bölümişlemin kaçıncı bardan başlanacağını,5.bölüm hangi matematiksel işlemin olacağını.6.bölüm uygulanması istenen fiyatın türünü ifade etmektedir.son bölümü 0 almakta fayda var...
         h=iMA(NULL,0,17,0,MODE_SMA,PRICE_CLOSE,i);//3.bölüm kaç bar alınacağı,4.bölümişlemin kaçıncı bardan başlanacağını,5.bölüm hangi matematiksel işlemin olacağını.6.bölüm uygulanması istenen fiyatın türünü ifade etmektedir.son bölümü 0 almakta fayda var...
 
   if( b>a && c>d && al==true )
    
      {
    
     
     
           mkl1=OrderClose(alim,1,Bid,3,Red);
    satim=OrderSend(Symbol(),OP_SELL,1,Bid,3,0,0,"Genie",0,0,Yellow);
    al=false;
       
    } 
   
      
      
       if( e>f && h>g&& al==false )
       
    {
   
       
          mkl=OrderClose(satim,1,Ask,3,Yellow);
     alim=OrderSend(Symbol(),OP_BUY,1,Ask,3,0,0,"Genie",0,0,Blue);
      al=true;
     
       
    }  
      
  
     
//---
  }
//+------------------------------------------------------------------+
//| Check for close order conditions                                 |
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
void OnTick()
 {
//--- check for history and trading
   if(Bars<100 || IsTradeAllowed()==false)
      return;
//--- calculate open orders by current symbol
   //if(CalculateCurrentOrders(Symbol())==0) 
   CheckForOpen();
 //  else                                    CheckForClose();
//---
 
 }
//+------------------------------------------------------------------+
Reason: