Holy Graily Bob 'n Dotty

EA's inspired by nanningbob's work here, especially those based on his 240 Moving Average trend detection filter.
Post Reply
User avatar
SteveHopwood
Owner
Posts: 9904
Joined: Tue Nov 15, 2011 8:43 am
Location: Misterton - an insignificant village in England. Very pleasant to live in.

Holy Graily Bob 'n Dotty

Post by SteveHopwood »

I have updated HGBnD with the new peak hilo code I developed over the weekend. It has the same four time frames available for the buy low sell high filter, so play with them to your heart's content. The defaults are those I am trying on demo first.

You do not need the update if you do not plan to use the new filters. Just remember to do a fresh download if you do decide to experiment with them.

: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. pianodoodler@hotmail.com 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.
kennychua
Posts: 7
Joined: Sat Feb 27, 2016 6:12 am

Holy Graily Bob 'n Dotty

Post by kennychua »

Hi All

Just some of my observation of the latest HGBnD.

The BuyLowSellHigh display on the right of the chart is wrong from the first time the EA is loaded, until the change to the next bar for the respective timeframe. For example, for H4, it would be wrong from start of EA, until the next H4 bar, regardless of the timeframe of the chart.

But don't worry, the display is wrong, but the code is not. It is working well.

You can add the following code to DisplayUserFeedback() function to view the status of the BuyLowSellHigh

Code: Select all

if (UseBuyLowSellHigh) SM("Combined BuyLowSellHigh status: " + combinedBlshStatus + NL);
You will notice that sometime the BuyLowSellHigh status doesnt match what is shown on the right of the chart.

The chart on the right will always show "Long" for all timeframe, from the start of the EA, until the change of the next bar for that timeframe.

The reason for this is because when ReadIndicatorValues() call GetSixths() which in turn call DrawPeaks(), it remember the time of the bar when the peaks is drawn, and will not redraw it again until the next bar.

The reason the display is wrong is because, in the OnInit() functions, ReadIndicatorValues() is called at least once or twice if DistanceBetweenTradesPips <= 0

After the first call of the ReadIndicatorValues() the proper BuyLowSellHigh values is stored and drawn on the chart. However, further down the OnInit function, there is a bunch of code to create label to display the BuyLowSellHigh and this default to showing it as "Long".

Code: Select all

   //Create the labels
   string tfDisplay = "";
   string text = longdirection;
   DisplayCount = 1;
This override all the BuyLowSellHigh object that was properly drawn previously from ReadIndicatorValues to "Long", however, code wise, the combinedBlshStatus is still correct and the code would work properly regardless of the wrong display.

For me, I am using the following workarounds, by having ReadIndicatorValues() called last, before the end of the OnInit function. Calling it earlier and twice sometime seem unnecessary for me.

If you want to try this workaround, go to OnInit() and comment out the following code

Code: Select all

   if (DistanceBetweenTradesPips > 0)
      DistanceBetweenTrades = DistanceBetweenTradesPips;
   //else
   //   ReadIndicatorValues();
and also further down after this at

Code: Select all

   OldBars = Bars;
   TicketNo = -1;
   //ReadIndicatorValues();//For initial display in case user has turned of constant re-display
   GetSwap(Symbol());//This will need editing/removing in a multi-pair ea.
   TradeDirectionBySwap();
And then add the following to the last line of OnInit() just before the return

Code: Select all

   //Call sq's show trades indi
   //iCustom(NULL, 0, "SQ_showTrades",Magic, 0,0);

   ReadIndicatorValues();
//----
   return(0);
}
The display will show correctly now.
User avatar
SteveHopwood
Owner
Posts: 9904
Joined: Tue Nov 15, 2011 8:43 am
Location: Misterton - an insignificant village in England. Very pleasant to live in.

Holy Graily Bob 'n Dotty

Post by SteveHopwood »

Thanks kennychua. :clap: :clap: :clap:

I have uploaded the fixed version to post 1. The easiest way to make the changes yourselves is to copy this over the top of the existing int OnInit() function:

Code: Select all

int OnInit()
{
//----

   //Zoom the chart out as soon as possible. I do this at the start
   //of GetSixths() as well - does no harm.
   int scale = ChartScaleGet();
   if (scale != 0)
   {
      ChartScaleSet(0);
      //A quick time frame change to force accurate display
      per = ChartPeriod(0);
      int nextPer = GetNextPeriod(per);
      ChartSetSymbolPeriod(0, Symbol(), nextPer);//Change time frame
      ChartSetSymbolPeriod(0, Symbol(), per);//reset time frame      
   }//if (scale != 0)
   

   
   if (UseChandelierExit)
      if (!indiExists( "chandelier-exit" ))
      {
         Alert("");
         Alert("Download the indi from the Dottybot thread");
         Alert("The required indicator 'chandelier-exit' does not exist on your platform. I am removing myself from your chart.");
         RemoveExpert = true;
         ExpertRemove();
         return(0);
      }//if (! indiExists( "IndiName" ))
      
      //Adapt this to suit the indi you are using
      /*if (!indiExists( HGI_Name ))
      {
         Alert("");
         Alert("Download the indi from Bob's HGI thread and adit the HGI_Name input");
         Alert("The required indicator ", HGI_Name, " does not exist on your platform. I am removing myself from your chart.");
         RemoveExpert = true;
         ExpertRemove();
         return(0);
      }//if (! indiExists( "IndiName" ))
      */

   //~ Set up the pips factor. tp and sl etc.
   //~ The EA uses doubles and assume the value of the integer user inputs. This: 
   //~    1) minimises the danger of the inputs becoming corrupted by restarts; 
   //~    2) the integer inputs cannot be divided by factor - doing so results in zero.
   
   factor = GetPipFactor(Symbol());
   StopLoss = StopLossPips;
   TakeProfit = TakeProfitPips;
   BreakEvenPips = BreakEvenTargetPips;
   BreakEvenProfit = BreakEvenTargetProfit;
   JumpingStopPips = JumpingStopTargetPips;
   TrailingStopPips = TrailingStopTargetPips;
   HiddenPips = PipsHiddenFromCriminal;
   BasketTakeProfit = BasketTakeProfitPips;

   //Adjust the right side margin
   double mar = ChartShiftSizeGet(0);
   if (!CloseEnough(mar, 10))
      ChartShiftSizeSet(10, 0);
   

   
   if (DistanceBetweenTradesPips > 0)
      DistanceBetweenTrades = DistanceBetweenTradesPips;
   else
      ReadIndicatorValues();
   
   while (IsConnected()==false)
   {
      Comment("Waiting for Empty4 connection...");
      Sleep(1000);
   }//while (IsConnected()==false)

   //MaxTradesAllowed needs to be 1 if we are using the grid and
   //ImmediateMarketOrders is enabled to avoid sending a new trade
   //on every new signal.
   if (UseGrid)
      MaxTradesAllowed = 1;

   

   //Lot size and part-close idiot check for the cretins. Code provided by phil_trade. Many thanks, Philippe.
   //adjust Min_lot
   if (CloseEnough(RiskPercent, 0) )
      if(Lot<MarketInfo(Symbol(),MODE_MINLOT))
      {
         Alert(Symbol()+" Lot was adjusted to Minlot = "+DoubleToStr(MarketInfo(Symbol(),MODE_MINLOT),Digits));
         Lot=MarketInfo(Symbol(),MODE_MINLOT);
      }//if (Lot < MarketInfo(Symbol(), MODE_MINLOT)) 
   /*
   //check Partial close parameters
   if (PartCloseEnabled == true)
   {
      if (Lot < Close_Lots + Preserve_Lots || Lot < MarketInfo(Symbol(), MODE_MINLOT) + Close_Lots )
      {
         Alert(Symbol()+" PartCloseEnabled is disabled because Lot < Close_Lots + Preserve_Lots or Lot < MarketInfo(Symbol(), MODE_MINLOT) + Close_Lots !");
         PartCloseEnabled = false;
      }//if (Lot < Close_Lots + Preserve_Lots || Lot < MarketInfo(Symbol(), MODE_MINLOT) + Close_Lots )
   }//if (PartCloseEnabled == true)
   */

   //Jumping/trailing stops need breakeven set before they work properly
   if ((JumpingStop || TrailingStop) && !BreakEven) 
   {
      BreakEven = true;
      if (JumpingStop) BreakEvenPips = JumpingStopPips;
      if (TrailingStop) BreakEvenPips = TrailingStopPips;
   }//if (JumpingStop || TrailingStop) 
   
   Gap="";
   if (DisplayGapSize >0)
   {
      for (int cc=0; cc< DisplayGapSize; cc++)
      {
         Gap = StringConcatenate(Gap, " ");
      }   
   }//if (DisplayGapSize >0)
   
   //Reset CriminIsECN if crim is Cowboy IBFX and the punter does not know or, like me, keeps on forgetting
   string name = TerminalCompany();
   int ispart = StringFind(name, "Cowboy IBFX", 0);
   if (ispart < 0) ispart = StringFind(name, "Interbank FX", 0);
   if (ispart > -1) IsGlobalPrimeOrECNCriminal = true;   
   ispart = StringFind(name, "Global Prime", 0);
   if (ispart > -1) IsGlobalPrimeOrECNCriminal = true;   
   
   //Set up the trading hours
   tradingHoursDisplay = tradingHours;//For display
   initTradingHours();//Sets up the trading hours array

   // Initialize libCSS
   if (UseCSS) libCSSinit();

   if (TradeComment == "") TradeComment = " ";
   OldBars = Bars;
   TicketNo = -1;
   if (DistanceBetweenTradesPips == 0)//RIV is called higher up if DistanceBetweenTradesPips > 0
      ReadIndicatorValues();//For initial display in case user has turned of constant re-display
   GetSwap(Symbol());//This will need editing/removing in a multi-pair ea.
   TradeDirectionBySwap();
   TooClose();
   CountOpenTrades();
   OldOpenTrades = OpenTrades;
   TradeTimeOk = CheckTradingTimes();   
   
   if (!IsTesting() )
   {   
      //Changed by tomele
      //The spread global variable
      SpreadGvName = Symbol() + " average spread";
      AverageSpread = GlobalVariableGet(SpreadGvName);//If no gv, then the value will be left at zero.
   }//if (!IsTesting() )
   
    
   //Chart display
   if (DisplayAsText)
      if (KeepTextOnTop)
         ChartForegroundSet(false,0);// change chart to background

   //Ensure that an ea depending on Close[1] for its values does not immediately fire a trade.
   if (!EveryTickMode) OldBarsTime = iTime(Symbol(), TradingTimeFrame, 0);

   //Lot size based on account size
   if (!CloseEnough(LotsPerDollopOfCash, 0))
      CalculateLotAsAmountPerCashDollops();

   //Time frame display
   TradingTimeFrameDisplay = GetTimeFrameDisplay(TradingTimeFrame);
   TrendTimeFrameDisplay = GetTimeFrameDisplay(TrendTimeFrame);
   
   //Detect the previous trend
   TrendGvName = "HGBnD " + Symbol() + " trend ";
   if(!GlobalVariableCheck(TrendGvName) )
   {
      GlobalVariableSet(TrendGvName, notrend);
   }//if(!GlobalVariableCheck(TrendGvName) )
   OldLongTrendDetected = false;
   OldShortTrendDetected = false;
   int t = GlobalVariableGet(TrendGvName);
   if (t == longtrend)
      OldLongTrendDetected = true;
   if (t == shorttrend)
      OldShortTrendDetected = true;
      
   
   DisplayUserFeedback();

   //Create the labels
   string tfDisplay = "";
   DisplayCount = 1;
   
   if (UseBuyLowSellHigh)
   {
      if (UseHighestTimeFrame)
      {
         if (ObjectFind(highestTimeFrameLabelName) < 0)
         {
            ObjectCreate(highestTimeFrameLabelName, OBJ_LABEL, 0, 0, 0); 
            ObjectSet(highestTimeFrameLabelName, OBJPROP_CORNER, 0);
            //ObjectSet(highestTimeFrameLabelName, OBJPROP_XDISTANCE, BlshDisplayX + ofset); 
            ObjectSet(highestTimeFrameLabelName, OBJPROP_XDISTANCE, BlshDisplayX); 
            ObjectSet(highestTimeFrameLabelName, OBJPROP_YDISTANCE, BlshDisplayY+DisplayCount*(BlshfontSise+4)); 
            ObjectSet(highestTimeFrameLabelName, OBJPROP_BACK, false);
            tfDisplay = GetTimeFrameDisplay(HighestTimeFrame);
            ObjectSetText(highestTimeFrameLabelName, tfDisplay, BlshfontSise, BlshfontName, HighestTimeFrameLineColour);
         }//if (ObjectFind(highestTimeFrameLabelName) < 0)
         
         
         if (ObjectFind(highestTimeFrameLabelDirection) < 0)
         {
            ObjectCreate(highestTimeFrameLabelDirection, OBJ_LABEL, 0, 0, 0); 
            ObjectSet(highestTimeFrameLabelDirection, OBJPROP_CORNER, 0);
            ObjectSet(highestTimeFrameLabelDirection, OBJPROP_XDISTANCE, BlshDisplayX + 50); 
            ObjectSet(highestTimeFrameLabelDirection, OBJPROP_YDISTANCE, BlshDisplayY+DisplayCount*(BlshfontSise+4)); 
            ObjectSet(highestTimeFrameLabelDirection, OBJPROP_BACK, false);
            ObjectSetText(highestTimeFrameLabelDirection, highestBlshStatus, BlshfontSise, BlshfontName, BuyColour);
         }//if (ObjectFind(highestTimeFrameLabelDirection) < 0)
         
         DisplayCount++;     
         
      }//if (UseHighestTimeFrame)
      
      if (UseHighTimeFrame)
      {
         if (ObjectFind(highTimeFrameLabelName) < 0)
         {
            ObjectCreate(highTimeFrameLabelName, OBJ_LABEL, 0, 0, 0); 
            ObjectSet(highTimeFrameLabelName, OBJPROP_CORNER, 0);
            //ObjectSet(highTimeFrameLabelName, OBJPROP_XDISTANCE, BlshDisplayX + ofset); 
            ObjectSet(highTimeFrameLabelName, OBJPROP_XDISTANCE, BlshDisplayX); 
            ObjectSet(highTimeFrameLabelName, OBJPROP_YDISTANCE, BlshDisplayY+DisplayCount*(BlshfontSise+10)); 
            ObjectSet(highTimeFrameLabelName, OBJPROP_BACK, false);
            tfDisplay = GetTimeFrameDisplay(HighTimeFrame);
            ObjectSetText(highTimeFrameLabelName, tfDisplay, BlshfontSise, BlshfontName, HighTimeFrameLineColour);
         }//if (ObjectFind(highTimeFrameLabelName) < 0)
         
         
         if (ObjectFind(highTimeFrameLabelDirection) < 0)
         {
            ObjectCreate(highTimeFrameLabelDirection, OBJ_LABEL, 0, 0, 0); 
            ObjectSet(highTimeFrameLabelDirection, OBJPROP_CORNER, 0);
            //ObjectSet(highTimeFrameLabelDirection, OBJPROP_XDISTANCE, BlshDisplayX + ofset); 
            ObjectSet(highTimeFrameLabelDirection, OBJPROP_XDISTANCE, BlshDisplayX + 50); 
            ObjectSet(highTimeFrameLabelDirection, OBJPROP_YDISTANCE, BlshDisplayY+DisplayCount*(BlshfontSise+10)); 
            ObjectSet(highTimeFrameLabelDirection, OBJPROP_BACK, false);
            ObjectSetText(highTimeFrameLabelDirection, highBlshStatus, BlshfontSise, BlshfontName, BuyColour);
         }//if (ObjectFind(highestTimeFrameLabelDirection) < 0)
         
         DisplayCount++;     
         
      }//if (UseHighTimeFrame)
      
      if (UseMediumTimeFrame)
      {
         if (ObjectFind(mediumTimeFrameLabelName) < 0)
         {
            ObjectCreate(mediumTimeFrameLabelName, OBJ_LABEL, 0, 0, 0); 
            ObjectSet(mediumTimeFrameLabelName, OBJPROP_CORNER, 0);
            //ObjectSet(mediumTimeFrameLabelName, OBJPROP_XDISTANCE, BlshDisplayX + ofset); 
            ObjectSet(mediumTimeFrameLabelName, OBJPROP_XDISTANCE, BlshDisplayX); 
            ObjectSet(mediumTimeFrameLabelName, OBJPROP_YDISTANCE, BlshDisplayY+DisplayCount*(BlshfontSise+10)); 
            ObjectSet(mediumTimeFrameLabelName, OBJPROP_BACK, false);
            tfDisplay = GetTimeFrameDisplay(MediumTimeFrame);
            ObjectSetText(mediumTimeFrameLabelName, tfDisplay, BlshfontSise, BlshfontName, MediumTimeFrameLineColour);
         }//if (ObjectFind(mediumTimeFrameLabelName) < 0)
         
         
         if (ObjectFind(mediumTimeFrameLabelDirection) < 0)
         {
            ObjectCreate(mediumTimeFrameLabelDirection, OBJ_LABEL, 0, 0, 0); 
            ObjectSet(mediumTimeFrameLabelDirection, OBJPROP_CORNER, 0);
            //ObjectSet(mediumTimeFrameLabelDirection, OBJPROP_XDISTANCE, BlshDisplayX + ofset); 
            ObjectSet(mediumTimeFrameLabelDirection, OBJPROP_XDISTANCE, BlshDisplayX + 50); 
            ObjectSet(mediumTimeFrameLabelDirection, OBJPROP_YDISTANCE, BlshDisplayY+DisplayCount*(BlshfontSise+10)); 
            ObjectSet(mediumTimeFrameLabelDirection, OBJPROP_BACK, false);
            ObjectSetText(mediumTimeFrameLabelDirection, mediumBlshStatus, BlshfontSise, BlshfontName, BuyColour);
         }//if (ObjectFind(mediumestTimeFrameLabelDirection) < 0)
         
         DisplayCount++;     
         
      }//if (UseHighTimeFrame)
      
      if (ObjectFind(tradingTimeFrameLabelName) < 0)
      {
         ObjectCreate(tradingTimeFrameLabelName, OBJ_LABEL, 0, 0, 0); 
         ObjectSet(tradingTimeFrameLabelName, OBJPROP_CORNER, 0);
         //ObjectSet(tradingTimeFrameLabelName, OBJPROP_XDISTANCE, BlshDisplayX + ofset); 
         ObjectSet(tradingTimeFrameLabelName, OBJPROP_XDISTANCE, BlshDisplayX); 
         ObjectSet(tradingTimeFrameLabelName, OBJPROP_YDISTANCE, BlshDisplayY+DisplayCount*(BlshfontSise+10)); 
         ObjectSet(tradingTimeFrameLabelName, OBJPROP_BACK, false);
         tfDisplay = GetTimeFrameDisplay(TradingTimeFrame);
         ObjectSetText(tradingTimeFrameLabelName, tfDisplay, BlshfontSise, BlshfontName, TradingTimeFrameLineColour);
      }//if (ObjectFind(tradingTimeFrameLabelName) < 0)
      
      
      if (ObjectFind(tradingTimeFrameLabelDirection) < 0)
      {
         ObjectCreate(tradingTimeFrameLabelDirection, OBJ_LABEL, 0, 0, 0); 
         ObjectSet(tradingTimeFrameLabelDirection, OBJPROP_CORNER, 0);
         //ObjectSet(tradingTimeFrameLabelDirection, OBJPROP_XDISTANCE, BlshDisplayX + ofset); 
         ObjectSet(tradingTimeFrameLabelDirection, OBJPROP_XDISTANCE, BlshDisplayX + 50); 
         ObjectSet(tradingTimeFrameLabelDirection, OBJPROP_YDISTANCE, BlshDisplayY+DisplayCount*(BlshfontSise+10)); 
         ObjectSet(tradingTimeFrameLabelDirection, OBJPROP_BACK, false);
         ObjectSetText(tradingTimeFrameLabelDirection, tradingBlshStatus, BlshfontSise, BlshfontName, BuyColour);
      }//if (ObjectFind(tradingestTimeFrameLabelDirection) < 0)
         
   }//if (UseBuyLowSellHigh)
   
   //Call sq's show trades indi
   //iCustom(NULL, 0, "SQ_showTrades",Magic, 0,0);

   
//----
   return(0);
}
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. pianodoodler@hotmail.com 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: 9904
Joined: Tue Nov 15, 2011 8:43 am
Location: Misterton - an insignificant village in England. Very pleasant to live in.

Holy Graily Bob 'n Dotty

Post by SteveHopwood »

You folks may care to hang on before downloading the latest both here and the shell. I loaded the bot onto a dedicated Sixths demo and noticed some bits and bats that need a bit of attention - both to the sixths thingy which will not trade at all just yet, and the buy low sell high stuff. Nothing dramatic but needs fixing. I shall add the fixes this afternoon.

: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. pianodoodler@hotmail.com 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: 9904
Joined: Tue Nov 15, 2011 8:43 am
Location: Misterton - an insignificant village in England. Very pleasant to live in.

Holy Graily Bob 'n Dotty

Post by SteveHopwood »

Fixes uploaded to post 1.

: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. pianodoodler@hotmail.com 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: 9904
Joined: Tue Nov 15, 2011 8:43 am
Location: Misterton - an insignificant village in England. Very pleasant to live in.

Holy Graily Bob 'n Dotty

Post by SteveHopwood »

My sixths demo version just took some sells when trend time frame HGI is showing long.

I missed a couple of '!' out. Fixed in post 1 or easy changes to make yourselves:
line 3031:
if (UseTrendHGI || ShortTrendDetected)
should be:
if (!UseTrendHGI || ShortTrendDetected)

Line 3032:
if (UseTradingTimeFrameHGI || ShortTradeTrigger)

should be
if (!UseTradingTimeFrameHGI || ShortTradeTrigger)

Smae if you are using the shell.

: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. pianodoodler@hotmail.com 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.
Maximilian
Trader
Posts: 150
Joined: Sat Sep 06, 2014 2:43 pm

Holy Graily Bob 'n Dotty

Post by Maximilian »

Hi Steve,
I did some tests with the input "CloseOnYellowRangeWave" and realised that it had no effect. So I did search the source code: the extern is not linked to any other code. I would love to test this function with the stacking trading mode. Any chance you can implement it back?
Thanks again for all your hard work,
Cheers Max
User avatar
SteveHopwood
Owner
Posts: 9904
Joined: Tue Nov 15, 2011 8:43 am
Location: Misterton - an insignificant village in England. Very pleasant to live in.

Holy Graily Bob 'n Dotty

Post by SteveHopwood »

Maximilian » Wed Feb 22, 2017 7:17 pm wrote:Hi Steve,
I did some tests with the input "CloseOnYellowRangeWave" and realised that it had no effect. So I did search the source code: the extern is not linked to any other code. I would love to test this function with the stacking trading mode. Any chance you can implement it back?
Thanks again for all your hard work,
Cheers Max
I noticed this earlier as well. It is on my to do list.

: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. pianodoodler@hotmail.com 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.
Maximilian
Trader
Posts: 150
Joined: Sat Sep 06, 2014 2:43 pm

Holy Graily Bob 'n Dotty

Post by Maximilian »

:good: :clap:
Thx Steve
User avatar
SteveHopwood
Owner
Posts: 9904
Joined: Tue Nov 15, 2011 8:43 am
Location: Misterton - an insignificant village in England. Very pleasant to live in.

Holy Graily Bob 'n Dotty

Post by SteveHopwood »

Maximilian » Wed Feb 22, 2017 7:17 pm wrote:Hi Steve,
I did some tests with the input "CloseOnYellowRangeWave" and realised that it had no effect. So I did search the source code: the extern is not linked to any other code. I would love to test this function with the stacking trading mode. Any chance you can implement it back?
Thanks again for all your hard work,
Cheers Max
Done. Post 1.

HGBnD and HGBnD shell are the same bots, so the HGI inputs are how preceded by 'Hgi'. Their functions have not changed.

: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. pianodoodler@hotmail.com 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”