Jump to content

petewright

Members
  • Posts

    21
  • Joined

  • Last visited

Posts posted by petewright

  1. Re: Indicator Help

     

    Hello again,

     

    I am using iCustom as I am totally unsure how to write the indicator into the EAi had a quick look into it and got lost within 5 minutes :P

     

    I will try reducing the calculated bars from 500 to 100 and see if it makes a difference. Thanks again :)))

     

    -- EDIT -- I'm not sure it really speeds up the backtest much. It seems to take just as long :(

    Although.. I seem to be getting better results with the bars set at 100 than 500! And I think the backtest is faster so ignore previous statement :)

    But not fast enough for optimization

  2. Re: Indicator Help

     

    Hi Scarface,

     

    Thanks for getting back to me.

     

    Initially I had my EA trading on the cross of the lines, but now using the indicator buffers I have managed to get it to trade as soon as the arrow appears.

     

    So although the signal is late, is it not a whole extra bar late if you get me.

     

    Arrow appears = Enters trade straight away. It doesn't enter trade on the bar after the arrow, so all seems to be working quite well.

     

    I have been backtesting my EA using a trailing stop, and it seems to be working quite well on most currency pairs.

     

    I have been using H4 for my testing with 0 stoploss and for it to cancel / open a new trade on signal reversal.

     

    It seems to take over 3 hours for a one year backtest thought on H4 timeframe :S. I think this has a lot to do with the indicator coding. I am not sure how to speed this up, so it is very slow going and I cannot really optimize it using the optimizer in MT4.

     

    So far I have tested EURUSD on H4 and I am getting about 20% drawdown with a 100% profit.

    So nothing amazing but I would much prefer to use this indicator on lower timeframes such as M30. I think that it seems to enter the trades slightly late. Again, if only backtesting was faster then I could try and optimize stoplosses and trailing stops.

     

    Do you have any idea how to speed it up at all?

     

    Again, thanks for your responses you have been very helpful.

     

    Regards

  3. Hi,

     

    I am not the best at mql4 programming but I have a question.

     

    I am using an indicator called N_StepMA_1 - attached

     

    Now i have an EA that opens trades when the yellow line crosses the teal line of the indicator. I have that all working fine.

     

    The problem is, afterthis happens and the next bar comes, you get a beep and then either a blue arrow or red arrow confirming this. When my EA trades, sometimes during a bar the lines can cross, but the bar closes without a signal (an arrow) to confirm it, which gives me a lot of false signals and I end up entering in the wrong direction.

     

    I don't know the code to make sure there is a blue or red arrow to enter the trade. Is there a way I can trade on the arrow signals rather than the crossing of the lines?

     

    Any help would be greatly appreciated

     

    FOR SOME REASON I CAN'T UPLOAD THE ATTACHMENT

     

    I will post the Indicator Code Here:

     

    //+------------------------------------------------------------------+
    //|                                                Nina_StepMA_1.mq4 |
    //+------------------------------------------------------------------+
    #property indicator_separate_window
    
    #property indicator_buffers 4
    #property indicator_color1 Yellow
    #property indicator_color2 Aqua
    #property indicator_color3 Blue
    #property indicator_color4 Red
    
    #property indicator_minimum 0
    #property indicator_maximum 1
    
    //----input parameters
    extern int PeriodWATR=10;
    extern double Kwatr=1.0000;
    extern int HighLow=0;
    extern int CalculatedBars = 500;
    extern bool alert_ON=true; // ON=true, OFF=false
    
    //---- indicator buffers
    double LineMinBuffer[];
    double LineMidBuffer[];
    double LineBuyBuffer[];
    double LineSellBuffer[];
    
    //+------------------------------------------------------------------+
    //| Custom indicator initialization function                         |
    //+------------------------------------------------------------------+
    int init()
     {
     string short_name;
     IndicatorBuffers(4);
    //---- indicator line
      SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1);
      SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1);
      SetIndexStyle(2,DRAW_ARROW,STYLE_SOLID,1);
      SetIndexStyle(3,DRAW_ARROW,STYLE_SOLID,1);
      
      SetIndexEmptyValue(2,0);
      SetIndexArrow(2,233);
      SetIndexEmptyValue(3,0);
      SetIndexArrow(3,234);
      
      SetIndexBuffer(0,LineMinBuffer);
      SetIndexBuffer(1,LineMidBuffer);
      SetIndexBuffer(2,LineBuyBuffer);
      SetIndexBuffer(3,LineSellBuffer);
    
      IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
    //---- name for DataWindow and indicator subwindow label
      short_name="StepMA_Stoch("+PeriodWATR+","+Kwatr+","+HighLow+")";
      IndicatorShortName(short_name);
    //----
      SetIndexDrawBegin(0,PeriodWATR);
      SetIndexDrawBegin(1,PeriodWATR);
    //----
      return(0);
     }
    //+------------------------------------------------------------------+
    //| Custom indicator deinitialization function                       |
    //+------------------------------------------------------------------+
    int deinit()
     {
    //----
      
    //----
      return(0);
     }
    //+------------------------------------------------------------------+
    //| Custom indicator iteration function                              |
    //+------------------------------------------------------------------+
    int start()
     {
      int      i,shift,TrendMin,TrendMax,TrendMid;
      double   SminMin0,SmaxMin0,SminMin1,SmaxMin1,SumRange,dK,WATR0,WATRmax,WATRmin,WATRmid;
      double   SminMax0,SmaxMax0,SminMax1,SmaxMax1,SminMid0,SmaxMid0,SminMid1,SmaxMid1;
      double   linemin,linemax,linemid,Stoch1,Stoch2,bsmin,bsmax;
      static bool turn_alarm = true;
      	
      int StepSizeMin,StepSizeMax,StepSizeMid;
      double min,max,mid,h,l,c;
      int position_ind0=0, position_ind1=0;
      // position_ind0 = -1, below
      //               =  1, up
      	
      ArrayInitialize(LineBuyBuffer,0);
      ArrayInitialize(LineSellBuffer,0);
     
      if(CalculatedBars>Bars || CalculatedBars == 0 ) CalculatedBars = Bars;
    
      for(shift=CalculatedBars-1;shift>=0;shift--){	
      SumRange=0;
      for (i=PeriodWATR-1;i>=0;i--){ 
            dK = 1+1.0*(PeriodWATR-i)/PeriodWATR;
            SumRange+= dK*MathAbs(High[i+shift]-Low[i+shift]);
            }
      WATR0 = SumRange/PeriodWATR;
    
      WATRmax=MathMax(WATR0,WATRmax);
      if (shift==CalculatedBars-1-PeriodWATR) WATRmin=WATR0;
      WATRmin=MathMin(WATR0,WATRmin);
    
      StepSizeMin=MathRound(Kwatr*WATRmin/Point);
      StepSizeMax=MathRound(Kwatr*WATRmax/Point);
      StepSizeMid=MathRound(Kwatr*0.5*(WATRmax+WATRmin)/Point);
      
        min = Kwatr*WATRmin;
        max = Kwatr*WATRmax;
        mid = Kwatr*0.5*(WATRmax+WATRmin);
      
      //b = iBarShift(Symbol(),tPeriod,Time[shift]);
      c = Close[shift];//iClose(Symbol(),tPeriod,b);
      h = High[shift];//iHigh(Symbol(),tPeriod,b)
      l = Low[shift];//iLow(Symbol(),tPeriod,b)
      
      if (HighLow>0){
        SmaxMin0=l+2*min;
        SminMin0=h-2*min;
      
        SmaxMax0=l+2*max;
        SminMax0=h-2*max;
      
        SmaxMid0=l+2*mid;
        SminMid0=h-2*mid;
      
        if(c>SmaxMin1) TrendMin=1; 
        if(c<SminMin1) TrendMin=-1;
      
        if(c>SmaxMax1) TrendMax=1; 
        if(c<SminMax1) TrendMax=-1;
      
        if(c>SmaxMid1) TrendMid=1; 
        if(c<SminMid1) TrendMid=-1;
        }
     
      if (HighLow == 0){
        SmaxMin0=c+2*min;
        SminMin0=c-2*min;
      
        SmaxMax0=c+2*max;
        SminMax0=c-2*max;
      
        SmaxMid0=c+2*mid;
        SminMid0=c-2*mid;
      
        if(c>SmaxMin1) TrendMin=1; 
        if(c<SminMin1) TrendMin=-1;
      
        if(c>SmaxMax1) TrendMax=1; 
        if(c<SminMax1) TrendMax=-1;
      
        if(c>SmaxMid1) TrendMid=1; 
        if(c<SminMid1) TrendMid=-1;
        }
     	
      if(TrendMin>0 && SminMin0<SminMin1) SminMin0=SminMin1;
      if(TrendMin<0 && SmaxMin0>SmaxMin1) SmaxMin0=SmaxMin1;
    	
      if(TrendMax>0 && SminMax0<SminMax1) SminMax0=SminMax1;
      if(TrendMax<0 && SmaxMax0>SmaxMax1) SmaxMax0=SmaxMax1;
      
      if(TrendMid>0 && SminMid0<SminMid1) SminMid0=SminMid1;
      if(TrendMid<0 && SmaxMid0>SmaxMid1) SmaxMid0=SmaxMid1;
      
      
      if (TrendMin>0) linemin=SminMin0+min;
      if (TrendMin<0) linemin=SmaxMin0-min;
      
      if (TrendMax>0) linemax=SminMax0+max;
      if (TrendMax<0) linemax=SmaxMax0-max;
      
      if (TrendMid>0) linemid=SminMid0+mid;
      if (TrendMid<0) linemid=SmaxMid0-mid;
      
      bsmin=linemax-max;
      bsmax=linemax+max;
      Stoch1=(linemin-bsmin)/(bsmax-bsmin);
      Stoch2=(linemid-bsmin)/(bsmax-bsmin);
      
      LineMinBuffer[shift]=Stoch1;
      LineMidBuffer[shift]=Stoch2;
      
      
      SminMin1=SminMin0;
      SmaxMin1=SmaxMin0;
      
      SminMax1=SminMax0;
      SmaxMax1=SmaxMax0;
      
      SminMid1=SminMid0;
      SmaxMid1=SmaxMid0;
      
      // don't do anything for current bar since it is keeping changing.
      if(shift != 0) {  
      	  position_ind0 = position_ind1;
      	  if(LineMinBuffer[shift]>LineMidBuffer[shift]){
      	     position_ind1=1;
      	  }
      	  else {
      	     position_ind1=-1;
      	  }
      // current bar is keeping on changing
      // so don't put arrow on it
      // that means we only set on signal for confirmed bar
         if((position_ind0==-1) && (position_ind1==1)) {
         // cross up
            LineBuyBuffer[shift] = LineMidBuffer[shift];
         }
         if((position_ind0==1) && (position_ind1==-1)) {
         // cross down
            LineSellBuffer[shift] = LineMidBuffer[shift];
         }
       }
      }
    
    if(Volume[0]>1) return(0);
    // for the current crossing, make the sound
    // still have problem for this mechanism, leave it for later modification	   
    if(alert_ON) {   
         if(position_ind0*position_ind1<0) {  // time for alarm
            PlaySound("clock-alarm3.wav");
            turn_alarm=false;
         }
      }
         
    return(0);	
    }
    //+------------------------------------------------------------------+
    

     

    Regards

     

    pete

  4. Re: [REQ]The L.M.T Forex Formula

     

    well what i meant is it says in the guide to move the stoploss to "break even" point which is fine. But how am i meant to figure out what stoploss to set it at for breakeven? is there a calculation or something.

     

    Like.. My trade might be in profit by +$50 once it reaches it's "first target" so this is when i change my stoploss so that I can no longer lose money in the trade. But then i don't know how to figure out at what decimals the stoploss would be to be "break even" or "0.00"

  5. Re: [REQ]The L.M.T Forex Formula

     

    hi, thanks for this, it's great.

     

    I'm just having a few issues though like. I'm trading H4 on 9 currencies and am doing quite well, however I can't figure out what to set the stop loss at once is pasts the "First Target". So... i'm in profit it reaches x and x pips profit (first target) then it says I need to set the stoploss to "Break Even" but i can't figure out what it should be so i end up setting it to the first target and then if it drops below that it closes the order (obviously i'm in profit) but I could possibly have much larger profit trades.

     

    I've read through the guide many times but it doesn't really help here.

     

    I really need to look at the videos but the link that was posted earlier in the thread no longer works so I can't see the videos.

     

    Any ideas how I can get hold of these or anyone has them?

     

    Thanks again

×
×
  • Create New...