Holy Graily Candle Bob

EA's inspired by nanningbob's work here, especially those based on his 240 Moving Average trend detection filter.
User avatar
slipshod
Trader
Posts: 404
Joined: Tue Dec 27, 2011 9:14 am
Location: Australia

Holy Graily Candle Bob

Post by slipshod »

Resistance may not be visible on the H1 timeframe, but here's what EURAUD looks like on the Daily chart...
Capture.PNG
Thing is, this resistance could well prove strong enough to stop the current upsurge. Maybe not the red zone that it's almost worked through, but potentially the pink one above it.

This is a bit of a problem if, on H1 timeframes, there either aren't enough candles to discover the older zones or the library isn't looking back far enough. In this instance it's incorrect to say "there's no resistance" when a glance at longer timeframe charts shows it quite clearly.

Edit: Perhaps something like this could help. On line 262 I added:-

Code: Select all

extern ENUM_TIMEFRAMES SRLongerTimeFrame=PERIOD_D1;
then starting at line 664...

Code: Select all

      SSSR_UpdateZones(false, Symbol(), SRTimeFrame);
   
      double res_hi=0, res_lo=0, sup_hi=0, sup_lo=0;
      int res_strength=0, sup_strength=0;
      int sup_zone, res_zone;
   
      //Finding the support & resistance zones closest to the ask/bid price
      res_zone = SSSR_FindZoneV2(SSSR_UP, true, Bid, res_hi, res_lo, res_strength);
      sup_zone = SSSR_FindZoneV2(SSSR_DN, true, Bid, sup_hi, sup_lo, sup_strength);
      
      if (res_zone == -1 || sup_zone == -1)
      {
         SSSR_UpdateZones(false, Symbol(), SRLongerTimeFrame);
         if (res_zone == -1)
            res_zone = SSSR_FindZoneV2(SSSR_UP, true, Bid, res_hi, res_lo, res_strength);

         if (sup_zone == -1)
            sup_zone = SSSR_FindZoneV2(SSSR_DN, true, Bid, sup_hi, sup_lo, sup_strength);
      }
I added the if () block, where if a res or sup zone wasn't found, it goes looking for one using the longer timeframe. The same code needs to be added at line 2315 as well.

I haven't tested this so I have no idea if it works, but in theory it might provide a solution ... ?
You do not have the required permissions to view the files attached to this post.
User avatar
Ehrenmat
Trader
Posts: 89
Joined: Thu Jul 26, 2018 7:08 am

Holy Graily Candle Bob

Post by Ehrenmat »

Hey Steve, Hey Andrew

That were exactly my thoughts, too. I just didn't have the time to write everything down before my holydays (next three weeks from now on). The jump on the next higher TF of the S/R indi was my solution, too. I simply didn't have the time.

Before my departure, I implemented the following before leaving:

It's called CloseOnHGIMixedSignal or sth like that and it was already included in my "draft" I've sent you, Steve. It closes trades if HGI goes from a full "Down" or "Up" to a "Mixed" signal. Maybe that's a second option for a falling rope if there is no support or resistance zone for TP or SL. In my modulation of the EA, this control point seems to work but I also don't get the full TP eventually since the robot checks the CloseOnHGIMixedSignal permanently and not only in the case of missing S/R zones.


More to come in three weeks from my side... I have some ideas for an eventual entry "zone" :D

Cheers

Mat
Remember: A few hours of trial and error can save you minutes of looking at the README
User avatar
slipshod
Trader
Posts: 404
Joined: Tue Dec 27, 2011 9:14 am
Location: Australia

Holy Graily Candle Bob

Post by slipshod »

I've noticed the EA is repeatedly entering orders on the same pair, regardless of whether there's existing entries. Here are its AUDUSD trades yesterday:-
Capture.PNG
All entered at a very similar price. I imagine if it keeps getting sell signals it'll just keep stacking up the entries, which is increasing the risk if the price decides it wants to reverse & start rising.

I've also noticed that Empty4 is going beserk, using most of the CPU, to the point where it could barely manage a Remote Desktop connection...
Capture.PNG
I eliminated all indicators from charts, so it was just the EA running, and it was still burning lots of cycles. I removed the EAs, and the CPU use dropped to 0-5%. Adding one instance of the EA bumped it back to 50%, so it's the EA responsible. Note that I'm running this on an Amazon EC2 T1.Micro machine, not very powerful, but capable of running EAs if they're nice & efficient.

To get around this I've introduced a couple of changes in my local copy of the EA. Firstly I created a new user option:-

Code: Select all

extern int RecalcDelaySeconds = 15;
then in the OnTick() function...

Code: Select all

   
   //cpu saving
   static datetime CurrentTime = 0;
   static datetime RecalcNow = 0;
   if (TimeCurrent() < RecalcNow )
      return;
   CurrentTime = TimeCurrent();
   RecalcNow = CurrentTime + RecalcDelaySeconds;
This is a pretty crude, but it restricts the EA to only recalculating every 15 seconds, rather than every tick - I'm sure there'd be a better way of doing this, but I don't have a lot of time to focus on EA work right now hence just needed a quick & dirty solution. I also set ChartRefreshDelaySeconds to 90 (by default it's 3) as it does quite a lot of recalculating as well, and as I have it running in the background that's simply not needed from my point of view.

These changes succeeded in dropping the CPU usage down to around 0-10% with spikes up to 60% every now & then, which is ok.
You do not have the required permissions to view the files attached to this post.
User avatar
SteveHopwood
Owner
Posts: 9754
Joined: Tue Nov 15, 2011 8:43 am
Location: Misterton - an insignificant village in England. Very pleasant to live in.

Holy Graily Candle Bob

Post by SteveHopwood »

V 1i is in post 1.
  • The bot will no longer delete the TDesk signals if you change time frames.
  • Removed the function that caused take profit and stop loss errors when using SR for this.
  • Added functions that will look for SR zones on higher time frames when there are none on the current tf. If the function reaches the MN1 and still finds no resistance, then there will be no buy trades sent, and vice versa if no support. This code probably has some bugs.
  • Tidied up the indi reading code so it is not called so often.
:xm: :rocket:
Read the effing manual, ok?

Afterprime is the official SHF broker. Read about them at https://www.stevehopwoodforex.com/phpBB3/viewtopic.php?p=175790#p175790.

I still suffer from OCCD. Good thing, really.

Anyone here feeling generous? My paypal account is always in the market for a tiny donation. [email protected] is the account.

To see The Weekly Roundup of stuff you guys might have missed Click here

My special thanks to Thomas (tomele) for all the incredible work he does here.
User avatar
slipshod
Trader
Posts: 404
Joined: Tue Dec 27, 2011 9:14 am
Location: Australia

Holy Graily Candle Bob

Post by slipshod »

Sorry Steve, I started this long post right before you added yours above but it took me a while to finish, hence I'm unfortunately saying all this right after you've created a new version. Nevermind, there's no point rushing this stuff...

EDIT: Actually hold fire on making any of the following changes - the reason it's running fast for me now is that it's no longer finding _any_ zones. I'll need to look into this a bit deeper.

Ok, so another thing that's very inefficient about the EA right now is its use of SSSR_UpdateZones(). On every occasion its called, the first parameter is "false", which means the library will recalculate all the S/R zones - a very expensive operation and a completely unnecessary one if it just did the same thing the previous tick.

I'd suggest adding the following function:-

Code: Select all

void CheckSRZones( bool avoidRecalc, 
                   int &res_zone, 
                   int &sup_zone, 
                   int &res_strength, 
                   int &sup_strength, 
                   double &res_hi, 
                   double &res_lo, 
                   double &sup_hi, 
                   double &sup_lo, 
                   bool &InsideResistance, 
                   bool &InsideSupport )
{
   //////////////////////////////////////////////////////////////
   //    Reading the SS_SupportResistance Indi                 //
   //////////////////////////////////////////////////////////////
   if(UseSuppRes)
   {   
      //This is an implementation of Andrew Sumner's Support/Resistance Indicator
      //To be found at http://www.stevehopwoodforex.com/phpBB3/viewtopic.php?f=27&t=514
      SSSR_UpdateZones(avoidRecalc, Symbol(), SRTimeFrame);

      res_hi=0; res_lo=0; sup_hi=0; sup_lo=0;

      //Finding the support & resistance zones closest to the ask/bid price
      res_zone = SSSR_FindZoneV2(SSSR_UP, true, Bid, res_hi, res_lo, res_strength);
      sup_zone = SSSR_FindZoneV2(SSSR_DN, true, Bid, sup_hi, sup_lo, sup_strength);

      if (res_zone == -1 || sup_zone == -1)
      {
         SSSR_UpdateZones(true, Symbol(), SRLongerTimeFrame);
         if (res_zone == -1)
            res_zone = SSSR_FindZoneV2(SSSR_UP, true, Bid, res_hi, res_lo, res_strength);

         if (sup_zone == -1)
            sup_zone = SSSR_FindZoneV2(SSSR_DN, true, Bid, sup_hi, sup_lo, sup_strength);
      }

      //Test for being inside a zone.
      //Resistance zone cancels buys.
      InsideSupport = false;
      InsideResistance = false;

      if (Bid <= NormalizeDouble(res_hi, Digits) && Bid >= NormalizeDouble(res_lo, Digits))
         InsideResistance = true;
      //Support zone cancels sells
      else if (Bid <= NormalizeDouble(sup_hi, Digits) && Bid >= NormalizeDouble(sup_lo, Digits))
         InsideSupport = true;

      //Test the Ask
      if (Ask <= NormalizeDouble(res_hi, Digits) && Ask >= NormalizeDouble(res_lo, Digits)) 
         InsideResistance = true;
      else if (Ask <= NormalizeDouble(sup_hi, Digits) && Ask >= NormalizeDouble(sup_lo, Digits))
         InsideSupport = true;
   }//if(UseSuppRes)
}
In the places where SSSR_UpdateZones is called, in ReadIndicatorValues() and DisplayUserFeedback(), replace that code with a call to CheckSRZones as follows:-

Code: Select all

      //Test for being inside a SR zone.
      if (UseSuppRes)
      {
         double res_hi=0, res_lo=0, sup_hi=0, sup_lo=0;
         bool InsideSupport=false, InsideResistance=false, InsideZone=false;
         int sup_zone = -1, res_zone = -1, res_strength = 0, sup_strength = 0;
            
         CheckSRZones(true, res_zone, sup_zone, res_strength, sup_strength, res_hi, res_lo, sup_hi, sup_lo, InsideResistance, InsideSupport);
Note that I'm calling it with "true" as the first parameter, which it passes on to the SSSR library telling it not to recalculate the zones unless a new candle has been created since it was previously called.

There is one instance where you may want the EA to call it with a "false" parameter, forcing a zone recalc, and that's right before a new trade is to be sent. I suggest the following in the LookForTradingOpportunities function:-

Code: Select all

      }//if (SendShort)
      
   }//if (!SendLong)
     
////////////////////////////////////////////////////////////////////////////////////////

   if (UseSuppRes)
   {
      if (SendLong || SendShort)
      {
         double res_hi=0, res_lo=0, sup_hi=0, sup_lo=0;
         bool InsideSupport=false, InsideResistance=false, InsideZone=false;
         int sup_zone = -1, res_zone = -1, res_strength = 0, sup_strength = 0;
            
         CheckSRZones(false, res_zone, sup_zone, res_strength, sup_strength, res_hi, res_lo, sup_hi, sup_lo, InsideResistance, InsideSupport);

         // NOTE: The following lines are called almost exactly in ReadIndicatorValues(), so I suggest
         //            splitting it off into its own function rather than duplicating it as I've done here.
         if (InsideSupport || InsideResistance)
            InsideZone = true;
            
         if (DontOpenTradesInsideSRZones && InsideZone)
         {
            SendLong = false;
            SendShort = false;
         }
            
         if (OpenSomeTradesInsideSRZones)
         {
            if (SendLong)
               if (Bid <= NormalizeDouble(res_hi, Digits) && Bid >= NormalizeDouble(res_lo, Digits))
                  SendLong = false;
         
            if (SendShort)
               if (Ask <= NormalizeDouble(sup_hi, Digits) && Ask >= NormalizeDouble(sup_lo, Digits))
                  SendShort = false;
         }            
      }
   }//if (UseSuppRes)
   
////////////////////////////////////////////////////////////////////////////////////////     
   
   //Long 
   if (SendLong)
   {
 


This will force the zones to be recalculated and double-checked before any trades are sent to market. Once I implemented the above in my version, Empty4's CPU usage has dropped to negligible levels except for when the candle changes on the hour, or on the odd occasion when the EA wants to place a trade.
Last edited by slipshod on Wed Sep 12, 2018 3:21 pm, edited 1 time in total.
User avatar
SteveHopwood
Owner
Posts: 9754
Joined: Tue Nov 15, 2011 8:43 am
Location: Misterton - an insignificant village in England. Very pleasant to live in.

Holy Graily Candle Bob

Post by SteveHopwood »

slipshod » Wed Sep 12, 2018 2:10 pm wrote:Sorry Steve, I started this long post right before you added yours above but it took me a while to finish, hence I'm unfortunately saying all this right after you've created a new version. Nevermind, there's no point rushing this stuff...

Anyway, another thing that's very inefficient about the EA right now is its use of SSSR_UpdateZones(). On every occasion its called, the first parameter is "false", which means the library will recalculate all the S/R zones - a very expensive operation and a completely unnecessary one if it just did the same thing the previous tick.

I'd suggest adding the following function:-

Code: Select all

void CheckSRZones( bool avoidRecalc, 
                   int &res_zone, 
                   int &sup_zone, 
                   int &res_strength, 
                   int &sup_strength, 
                   double &res_hi, 
                   double &res_lo, 
                   double &sup_hi, 
                   double &sup_lo, 
                   bool &InsideResistance, 
                   bool &InsideSupport )
{
   //////////////////////////////////////////////////////////////
   //    Reading the SS_SupportResistance Indi                 //
   //////////////////////////////////////////////////////////////
   if(UseSuppRes)
   {   
      //This is an implementation of Andrew Sumner's Support/Resistance Indicator
      //To be found at http://www.stevehopwoodforex.com/phpBB3/viewtopic.php?f=27&t=514
      SSSR_UpdateZones(avoidRecalc, Symbol(), SRTimeFrame);

      res_hi=0; res_lo=0; sup_hi=0; sup_lo=0;

      //Finding the support & resistance zones closest to the ask/bid price
      res_zone = SSSR_FindZoneV2(SSSR_UP, true, Bid, res_hi, res_lo, res_strength);
      sup_zone = SSSR_FindZoneV2(SSSR_DN, true, Bid, sup_hi, sup_lo, sup_strength);

      if (res_zone == -1 || sup_zone == -1)
      {
         SSSR_UpdateZones(true, Symbol(), SRLongerTimeFrame);
         if (res_zone == -1)
            res_zone = SSSR_FindZoneV2(SSSR_UP, true, Bid, res_hi, res_lo, res_strength);

         if (sup_zone == -1)
            sup_zone = SSSR_FindZoneV2(SSSR_DN, true, Bid, sup_hi, sup_lo, sup_strength);
      }

      //Test for being inside a zone.
      //Resistance zone cancels buys.
      InsideSupport = false;
      InsideResistance = false;

      if (Bid <= NormalizeDouble(res_hi, Digits) && Bid >= NormalizeDouble(res_lo, Digits))
         InsideResistance = true;
      //Support zone cancels sells
      else if (Bid <= NormalizeDouble(sup_hi, Digits) && Bid >= NormalizeDouble(sup_lo, Digits))
         InsideSupport = true;

      //Test the Ask
      if (Ask <= NormalizeDouble(res_hi, Digits) && Ask >= NormalizeDouble(res_lo, Digits)) 
         InsideResistance = true;
      else if (Ask <= NormalizeDouble(sup_hi, Digits) && Ask >= NormalizeDouble(sup_lo, Digits))
         InsideSupport = true;
   }//if(UseSuppRes)
}
In the places where SSSR_UpdateZones is called, in ReadIndicatorValues() and DisplayUserFeedback(), replace that code with a call to CheckSRZones as follows:-

Code: Select all

      //Test for being inside a SR zone.
      if (UseSuppRes)
      {
         double res_hi=0, res_lo=0, sup_hi=0, sup_lo=0;
         bool InsideSupport=false, InsideResistance=false, InsideZone=false;
         int sup_zone = -1, res_zone = -1, res_strength = 0, sup_strength = 0;
            
         CheckSRZones(true, res_zone, sup_zone, res_strength, sup_strength, res_hi, res_lo, sup_hi, sup_lo, InsideResistance, InsideSupport);
Note that I'm calling it with "true" as the first parameter, which it passes on to the SSSR library telling it not to recalculate the zones unless a new candle has been created since it was previously called.

There is one instance where you may want the EA to call it with a "false" parameter, forcing a zone recalc, and that's right before a new trade is to be sent. I suggest the following in the LookForTradingOpportunities function:-

Code: Select all

      }//if (SendShort)
      
   }//if (!SendLong)
     
////////////////////////////////////////////////////////////////////////////////////////

   if (UseSuppRes)
   {
      if (SendLong || SendShort)
      {
         double res_hi=0, res_lo=0, sup_hi=0, sup_lo=0;
         bool InsideSupport=false, InsideResistance=false, InsideZone=false;
         int sup_zone = -1, res_zone = -1, res_strength = 0, sup_strength = 0;
            
         CheckSRZones(false, res_zone, sup_zone, res_strength, sup_strength, res_hi, res_lo, sup_hi, sup_lo, InsideResistance, InsideSupport);

         // NOTE: The following lines are called almost exactly in ReadIndicatorValues(), so I suggest
         //            splitting it off into its own function rather than duplicating it as I've done here.
         if (InsideSupport || InsideResistance)
            InsideZone = true;
            
         if (DontOpenTradesInsideSRZones && InsideZone)
         {
            SendLong = false;
            SendShort = false;
         }
            
         if (OpenSomeTradesInsideSRZones)
         {
            if (SendLong)
               if (Bid <= NormalizeDouble(res_hi, Digits) && Bid >= NormalizeDouble(res_lo, Digits))
                  SendLong = false;
         
            if (SendShort)
               if (Ask <= NormalizeDouble(sup_hi, Digits) && Ask >= NormalizeDouble(sup_lo, Digits))
                  SendShort = false;
         }            
      }
   }//if (UseSuppRes)
   
////////////////////////////////////////////////////////////////////////////////////////     
   
   //Long 
   if (SendLong)
   {
 


This will force the zones to be recalculated and double-checked before any trades are sent to market. Once I implemented the above in my version, Empty4's CPU usage has dropped to negligible levels except for when the candle changes on the hour, or on the odd occasion when the EA wants to place a trade.
Thanks Andrew. My cpu usage dropped right down the moment I changed SSSR_UpdateZones(false, Symbol(), NewTf); to SSSR_UpdateZones(true, Symbol(), NewTf);

About the rest of this. My code cycles through time frames to find zones if there is one missing on the chosen time frame. Does yours do this without being so long-winded?

:xm: :rocket:
Read the effing manual, ok?

Afterprime is the official SHF broker. Read about them at https://www.stevehopwoodforex.com/phpBB3/viewtopic.php?p=175790#p175790.

I still suffer from OCCD. Good thing, really.

Anyone here feeling generous? My paypal account is always in the market for a tiny donation. [email protected] is the account.

To see The Weekly Roundup of stuff you guys might have missed Click here

My special thanks to Thomas (tomele) for all the incredible work he does here.
User avatar
slipshod
Trader
Posts: 404
Joined: Tue Dec 27, 2011 9:14 am
Location: Australia

Holy Graily Candle Bob

Post by slipshod »

Hi Steve, I haven't yet had a chance to look at the new version of the EA. As soon as I do I'll get back to you on the timezone cycling. My suggestion was to allow the user to choose a higher timeframe, so that's all the code checks - one extra call. Walking up through the all timeframes until a zone is found ... could be quite expensive.

This discussion has however revealed a shortcoming in LibSSSR - it only caches the zones for the last symbol+period it was called to update, so if the EA wants to look for other timeframes it will force a recalc - not good. Hence this calls for a new version of the library, which I'll get onto asap, hopefully without breaking anything!
User avatar
SteveHopwood
Owner
Posts: 9754
Joined: Tue Nov 15, 2011 8:43 am
Location: Misterton - an insignificant village in England. Very pleasant to live in.

Holy Graily Candle Bob

Post by SteveHopwood »

V 1j is in post 1.

The code to spot when the market is within a zone and so close the trades was in the wrong place, so it was only being checked at the open of a new TradingTimeFrame candle.

DIYers, do a search for "//SR closure" and move the entire block to underneath the OldCcaReadTime block, like this:

Code: Select all

   }//if (OldCcaReadTime != iTime(Symbol(), TradingTimeFrame, 0) )   
         
   //SR closure   
   if (UseSuppRes)
   {
      //////////////////////////////////////////////////////////////
      //    BuyClose on SS_SupportResistance Indi dependencies    //
      //////////////////////////////////////////////////////////////
      //This function is called before CountOpenTrades(), so we need to know ig trades are open to 
      //avoid multiple alerts.
      CountOpenTrades();

      if (BuyOpen)
      {
         if (!BuyCloseSignal)
            if (UseResHighforBuyTP)
                if (!CloseEnough(res_hi, 0) )
                  if (Bid >= res_hi)
                  {
                     BuyCloseSignal = true;
                     if (ShowAlertWenTradeCloses)
                        Alert(Symbol(), " market is within a resistance zone. All buy trades should have closed at TP.");
                  }//if (Bid >= NormalizeDouble(res_hi, Digits))
                  
         if (!BuyCloseSignal)
            if (UseResLowforBuyTP)
               if (!CloseEnough(res_lo, 0) )
                  if (Bid >= res_lo)
                  {
                     BuyCloseSignal = true;
                     if (ShowAlertWenTradeCloses)
                        Alert(Symbol(), " market is within a resistance zone. All buy trades should have closed at TP.");
                  }//if (Bid >= NormalizeDouble(res_lo, Digits))
      
         if (!BuyCloseSignal)
            if (UseSupLowforBuySL)
               if (!CloseEnough(sup_lo, 0) )
                 if (Bid <= sup_lo)
                 {
                     BuyCloseSignal = true;
                     if (ShowAlertWenTradeCloses)
                     Alert(Symbol(), " market is within a resistance zone. All buy trades should have closed at SL.");
                 }//if (Bid <= NormalizeDouble(sup_lo, Digits))
                     
         if (!BuyCloseSignal)
            if (UseSupHighforBuySL)
               if (!CloseEnough(sup_hi, 0) )
                  if (Bid <= sup_hi)
                  {
                     BuyCloseSignal = true;
                     if (ShowAlertWenTradeCloses)
                     Alert(Symbol(), " market is within a resistance zone. All buy trades should have closed at SL.");
                  }//if (Bid <= NormalizeDouble(sup_hi, Digits))
                  
      }//if (BuyOpen)
                           
      ///////////////////////////////////////////////////////////
      //  SellClose on SS_SupportResistance Indi dependencies  //
      ///////////////////////////////////////////////////////////
      if (SellOpen)
      {
         if (!SellCloseSignal)
            if (UseSupHighforSellTP)
               if (!CloseEnough(sup_hi, 0) )
                  if (Ask <= sup_hi)
                  {
                     SellCloseSignal = true;
                     if (ShowAlertWenTradeCloses)
                        Alert(Symbol(), " market is within a support zone. All sell trades should have closed at TP.");
                  }//if (Ask <= NormalizeDouble(sup_hi, Digits))
                  
         if (!SellCloseSignal)
            if (UseSupLowforSellTP)
               if (!CloseEnough(sup_lo, 0) )
                  if (Ask <= sup_lo)
                  {
                     SellCloseSignal = true;
                     if (ShowAlertWenTradeCloses)
                        Alert(Symbol(), " market is within a support zone. All sell trades should have closed at TP.");
                  }//if (Ask <= NormalizeDouble(sup_lo, Digits))
                  
         if (!SellCloseSignal)
            if (UseResHighforSellSL)
               if (!CloseEnough(res_hi, 0) )
                  if (Ask >= res_hi)
                  {
                     SellCloseSignal = true;
                     if (ShowAlertWenTradeCloses)
                        Alert(Symbol(), " market is within a resistance zone. All sell trades should have closed at SL.");
                  }//if (Ask >= NormalizeDouble(res_hi, Digits))
                  
         if (!SellCloseSignal)
            if (UseResLowforSellSL)
               if (!CloseEnough(res_lo, 0) )
                  if (Ask >= res_lo)
                  {
                     SellCloseSignal = true;
                     if (ShowAlertWenTradeCloses)
                        Alert(Symbol(), " market is within a resistance zone. All sell trades should have closed at SL.");
                  }//if (Ask >= NormalizeDouble(res_lo, Digits))
   
      }//if (SellOpen)
                     
   }//if (UseSuppRes)
      
It becomes the final block of code within the function.

:xm: :rocket:
Read the effing manual, ok?

Afterprime is the official SHF broker. Read about them at https://www.stevehopwoodforex.com/phpBB3/viewtopic.php?p=175790#p175790.

I still suffer from OCCD. Good thing, really.

Anyone here feeling generous? My paypal account is always in the market for a tiny donation. [email protected] is the account.

To see The Weekly Roundup of stuff you guys might have missed Click here

My special thanks to Thomas (tomele) for all the incredible work he does here.
User avatar
SteveHopwood
Owner
Posts: 9754
Joined: Tue Nov 15, 2011 8:43 am
Location: Misterton - an insignificant village in England. Very pleasant to live in.

Holy Graily Candle Bob

Post by SteveHopwood »

slipshod » Wed Sep 12, 2018 3:24 pm wrote:Hi Steve, I haven't yet had a chance to look at the new version of the EA. As soon as I do I'll get back to you on the timezone cycling. My suggestion was to allow the user to choose a higher timeframe, so that's all the code checks - one extra call. Walking up through the all timeframes until a zone is found ... could be quite expensive.

This discussion has however revealed a shortcoming in LibSSSR - it only caches the zones for the last symbol+period it was called to update, so if the EA wants to look for other timeframes it will force a recalc - not good. Hence this calls for a new version of the library, which I'll get onto asap, hopefully without breaking anything!
Thanks Andrew.

:xm: :!!:
Read the effing manual, ok?

Afterprime is the official SHF broker. Read about them at https://www.stevehopwoodforex.com/phpBB3/viewtopic.php?p=175790#p175790.

I still suffer from OCCD. Good thing, really.

Anyone here feeling generous? My paypal account is always in the market for a tiny donation. [email protected] is the account.

To see The Weekly Roundup of stuff you guys might have missed Click here

My special thanks to Thomas (tomele) for all the incredible work he does here.
User avatar
SteveHopwood
Owner
Posts: 9754
Joined: Tue Nov 15, 2011 8:43 am
Location: Misterton - an insignificant village in England. Very pleasant to live in.

Holy Graily Candle Bob

Post by SteveHopwood »

I see the stop loss insertion error still exists. I will sort this out eventually. Not sure when. Or how. :arrrg:

:xm: :rocket:
Read the effing manual, ok?

Afterprime is the official SHF broker. Read about them at https://www.stevehopwoodforex.com/phpBB3/viewtopic.php?p=175790#p175790.

I still suffer from OCCD. Good thing, really.

Anyone here feeling generous? My paypal account is always in the market for a tiny donation. [email protected] is the account.

To see The Weekly Roundup of stuff you guys might have missed Click here

My special thanks to Thomas (tomele) for all the incredible work he does here.
Post Reply

Return to “Thingy Bob EA's”