stevehopwoodforex.com
https://www.stevehopwoodforex.com/phpBB3/
Print view

Old and defunct Holy Graily Bob
https://www.stevehopwoodforex.com/phpBB3/viewtopic.php?t=3966
Page 2 of 129
Author:  Sgt.Forex [ Sun Nov 30, 2014 8:41 pm ]
Post subject:  Holy Graily Bob

Wow, absolutely great guys!!! The Booklet is really worth the read. Demo is up and running :-)
I wish All of you a great Christmas time!
Cheers
Author:  Aussiedoc [ Sun Nov 30, 2014 10:18 pm ]
Post subject:  Holy Graily Bob

Nanningbob, Steve, Ellixe, Milanese, Baluda et al... Many thanks. Mille Grazie. Merci beaucoup. Heel erg bedankt..... :good: :good:
Author:  hughmac [ Mon Dec 01, 2014 1:28 am ]
Post subject:  Holy Graily Bob

Holy Graily Bob is an attempted automation of trading with Bob's Holy Grail Indicator. Download Bob's zipfile from http://www.stevehopwoodforex.com/phpBB3 ... 45#p105045.


Looks amazing! Thank You!
:clap:
Author:  xfactornos [ Mon Dec 01, 2014 2:03 am ]
Post subject:  Holy Graily Bob

Has anyone fired this up yet? I am getting the following error on all pairs so far
"2014.11.30 21:01:02.442 Holy Graily Bob USDCAD,H4: USDCAD Holy Graily Bob OP_BUY order send failed with error(4051): invalid function parameter value"

I believe the error occurred when trying to open Rad buys and Rad sells. not sure if that helps or not.
Author:  FxFoil [ Mon Dec 01, 2014 2:12 am ]
Post subject:  Holy Graily Bob

Same error as above as well as
invalid lots amount for OrderSend function
when lot is .01 ootb
occurs when ecn is either true or false

Edit: New version 14.2 available at Bob's house.
Author:  BobbyT [ Mon Dec 01, 2014 2:18 am ]
Post subject:  Holy Graily Bob

I am also getting the 4051 error on a number of pairs.
EA is set up ootb with the exception of some ridiculous TP on trend and RAD trading to allow the wavy lines to do their thing.
I do however have an order open on NZDCAD :clap:
Author:  renexxxx [ Mon Dec 01, 2014 2:44 am ]
Post subject:  Holy Graily Bob

Same here with error 4051 and invalid lots amount for OrderSend function.

By looking at the code (lines 1703-1731, for a SendLong, and lines 1734-1762, for a SendShort) it appears that SendLots is only set if TradeComment == TrendTradeComment. So, in other words, Trend Trades are working well but for Range Trades and Rad Trades, the SendLots value is never set and would default to 0.0.
Author:  BobbyT [ Mon Dec 01, 2014 2:52 am ]
Post subject:  Holy Graily Bob

That would fit the bill. All my errors have been on range and RAD trades. The open NZDCAD was posted as a trend trade

Edit: Elixes update has cleared up the zero divide error that was occuring. The order send error is a different problem
Author:  renexxxx [ Mon Dec 01, 2014 3:14 am ]
Post subject:  Holy Graily Bob

For those of you who can't wait for master Steve to wake up from his well deserved sleep and add the missing lines, you can temporarily do what I've done:

I changed lines 1715-1723:

Code: Select all

         if (TradeComment == TrendTradeComment)
         {
            stop = CalculateStopLoss(OP_BUY, price, TradeComment);
            take = CalculateTakeProfit(OP_BUY, price, TradeComment);
            SendLots = TrendLot;
            //Lot size calculated by risk         
            if (!CloseEnough(TrendRiskPercent, 0) ) 
               SendLots = CalculateLotSize(price, NormalizeDouble(stop + (HiddenPips / factor), Digits), TrendRiskPercent);         
         }//if (TradeComment == TrendTradeComment)
To

Code: Select all

         if (TradeComment == TrendTradeComment) {
            stop = CalculateStopLoss(OP_BUY, price, TradeComment);
            take = CalculateTakeProfit(OP_BUY, price, TradeComment);
            SendLots = TrendLot;
            //Lot size calculated by risk         
            if (!CloseEnough(TrendRiskPercent, 0) ) 
               SendLots = CalculateLotSize(price, NormalizeDouble(stop + (HiddenPips / factor), Digits), TrendRiskPercent);         
         }
         else if ( TradeComment == RangeTradeComment ) {
            stop = CalculateStopLoss(OP_BUY, price, TradeComment);
            take = CalculateTakeProfit(OP_BUY, price, TradeComment);
            SendLots = RangeLot;
            //Lot size calculated by risk         
            if (!CloseEnough(RangeRiskPercent, 0) ) 
               SendLots = CalculateLotSize(price, NormalizeDouble(stop + (HiddenPips / factor), Digits), RangeRiskPercent);         
         }
         else if ( TradeComment == RadTradeComment ) {
            stop = CalculateStopLoss(OP_BUY, price, TradeComment);
            take = CalculateTakeProfit(OP_BUY, price, TradeComment);
            SendLots = RadLot;
            //Lot size calculated by risk         
            if (!CloseEnough(RadRiskPercent, 0) ) 
               SendLots = CalculateLotSize(price, NormalizeDouble(stop + (HiddenPips / factor), Digits), RadRiskPercent);         
         }
And I changed lines 1746-1754:

Code: Select all

         if (TradeComment == TrendTradeComment)
         {
            stop = CalculateStopLoss(OP_SELL, price, TradeComment);
            take = CalculateTakeProfit(OP_SELL, price, TradeComment);
            SendLots = TrendLot;
            //Lot size calculated by risk         
            if (!CloseEnough(TrendRiskPercent, 0) ) 
               SendLots = CalculateLotSize(price, NormalizeDouble(stop - (HiddenPips / factor), Digits), TrendRiskPercent);         
         }//if (TradeComment == TrendTradeComment)
To:

Code: Select all

         if (TradeComment == TrendTradeComment) {
            stop = CalculateStopLoss(OP_SELL, price, TradeComment);
            take = CalculateTakeProfit(OP_SELL, price, TradeComment);
            SendLots = TrendLot;
            //Lot size calculated by risk         
            if (!CloseEnough(TrendRiskPercent, 0) ) 
               SendLots = CalculateLotSize(price, NormalizeDouble(stop - (HiddenPips / factor), Digits), TrendRiskPercent);         
         }//if (TradeComment == TrendTradeComment)
         else if ( TradeComment == RangeTradeComment ) {
            stop = CalculateStopLoss(OP_SELL, price, TradeComment);
            take = CalculateTakeProfit(OP_SELL, price, TradeComment);
            SendLots = RangeLot;
            //Lot size calculated by risk         
            if (!CloseEnough(RangeRiskPercent, 0) ) 
               SendLots = CalculateLotSize(price, NormalizeDouble(stop - (HiddenPips / factor), Digits), RangeRiskPercent);         
         }
         else if ( TradeComment == RadTradeComment ) {
            stop = CalculateStopLoss(OP_SELL, price, TradeComment);
            take = CalculateTakeProfit(OP_SELL, price, TradeComment);
            SendLots = RadLot;
            //Lot size calculated by risk         
            if (!CloseEnough(RadRiskPercent, 0) ) 
               SendLots = CalculateLotSize(price, NormalizeDouble(stop - (HiddenPips / factor), Digits), RadRiskPercent);         
         }
Mine is now opening Range Trades and Rad Trades without problems.

Of course you can also wait for the Master to do this properly.
Author:  oliverjp [ Mon Dec 01, 2014 3:25 am ]
Post subject:  Holy Graily Bob

Even quicker and dirtier. Just changed one line twice and it seems to place a fixed lot order of any type fine now. Not the SL or TP though. Don't really want to hack about Steve's new toy too much. Time for bed and await the master's breath tomorrow:

//jpo hack
//old if (TradeComment == TrendTradeComment)
if (TradeComment != "") // new

PS This indicator and EA looks blinding. Many thanks to all the team who invented and crafted it! :clap:
All times are UTC Page 2 of 129