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();
//---
 
 }
//+------------------------------------------------------------------+
 

That is somehow a human problem (not ony yours!): You see what you like to see and you don't see where your ideas fail.

 
gooly:

That is somehow a human problem (not ony yours!): You see what you like to see and you don't see where your ideas fail.


What should I do?

Buy 

a:=if(Cross(Mov(C,1,S),Mov(C,15,S)),1,0);

if(a=1 , Cross(Mov(C,7,S),Mov(C,17,S)),0) 

 

sell

a:=if(Cross(Mov(C,15,S),Mov(C,1,S)),1,0);

if(a=1 , Cross(Mov(C,17,S),Mov(C,7,S)),0) 

this metastocks formul convertto metatraders..

help me!!! 

 
alisahin:

What should I do?

Buy 
 sell
a:=if(Cross(Mov(C,1,S),Mov(C,15,S)),1,0);

if(a=1 , Cross(Mov(C,7,S),Mov(C,17,S)),0)

a:=if(Cross(Mov(C,15,S),Mov(C,1,S)),1,0);

if(a=1 , Cross(Mov(C,17,S),Mov(C,7,S)),0)


help me!!!

  1. You need to decide what your entry criteria is. Your post has identical for both. (MA can cross in either direction.)
  2. You need to decide what your entry criteria is. Your code says sell when the two short SMAs are above the long SMAs. Do you really want counter-trend?
  3. E, f, g, h are identical to a, b, c, d. Why do you have them?
  4. Help you how? You don't state a problem with your code. All you state is a "poor return."
  5. Perhaps your strategy is poor and that is something we can't help you with.
Reason: