Here is an amazing thought for you folks: SPB is only a few days away from his first birthday.
He must be one of the best-tested bots of all time. For sure, it is the longest period of time that
I have ever tested one. Those of us who are testing Thomas' variants at
http://www.stevehopwoodforex.com/phpBB3 ... 63#p162363 have discovered the joys of a whole basket TP of 10,000 pips. I tested basket TP's of 50, 500 and 10,000 pips:
- 50 pips TP: did ok but painfully slowly. I abandoned the test a few weeks ago.
- 500 pips TP: excellent. Account up over 11% with absolutely no stress trading 0.01 lots on a $10,000 USD account.
- 10,000 pips TP: run-away success. Account up over 40% with absolutely no stress trading 0.01 lots on a $10,000 USD account. Thomas, TDesk was the only way you could have excelled yourself after coming up with this beauty.

I have revamped post 1. There are three versions available:
- Slopey Peaky Bob Latest Version: this is just SPB renamed. It is the bells and whistles version. There is a new version with a fix to a bug that Thomas spotted, but I will describe this later.
- Slopey Peaky Bob 10000 pips: this is FXT-SPB-1 from Thomas' thread renamed. There is one more input allowing the user to chose his/her own lot size but otherwise retains Thomas' simplicity. It is the version I recommend for noobs.
- The 1w version that I have left in place simply because a number of you liked it.
I have come to some firm conclusions re lot size related to account size. Details in the updated user guide. I was hoping to develop a bot that would allow noobs to start trading with a tiny starter account. The summer showed that SPB ain't it.
I put SPB 10000 on my live account last week. Here is a snapshot of the open live position late in the day on Friday:
XAUUSDH1.png
Encouraging, to say the least.
Slopey Peaky Bob Latest Version is up to V2 now. Thomas emailed with this on Thursday:
I noticed that SPB deleted trades where it shouldn't. I have made some changes to LookForTradeClosure() in the hope they will fix it.
V2 incorporates his fix. It is an easy DIY:
Do a search for, "bool LookForTradeClosure(int ticket, int PairIndex)" and copy this over the top of the existing function:
Code: Select all
bool LookForTradeClosure(int ticket, int PairIndex)
{
//Close the trade if the close conditions are met.
//Called from within CountOpenTrades(). Returns true if a close is needed and succeeds, so that COT can increment cc,
//else returns false
if (!BetterOrderSelect(ticket, SELECT_BY_TICKET) ) return(true);
if (BetterOrderSelect(ticket, SELECT_BY_TICKET) && OrderCloseTime() > 0) return(true);
bool CloseThisTrade = false;
//I have left the tpsl code in case non GP members need stealth
double take = OrderTakeProfit();
double stop = OrderStopLoss();
bool OppositeColour = false;
///////////////////////////////////////////////////////////////////////////////////////////////////////////
if (OrderType() == OP_BUY || OrderType() == OP_BUYSTOP || OrderType() == OP_BUYLIMIT)
{
//TP
if (bid >= take && !CloseEnough(take, 0) && !CloseEnough(take, OrderTakeProfit()) ) CloseThisTrade = true;
//SL
if (bid <= stop && !CloseEnough(stop, 0) && !CloseEnough(stop, OrderStopLoss())) CloseThisTrade = true;
if (!CloseThisTrade)
if (UsePeaky)
if (PeakyStatus[PairIndex] == peakyshorttradable)
CloseThisTrade = true;
if (!CloseThisTrade)
//SS has closed red
if (HtfSsStatus[PairIndex] == red || MtfSsStatus[PairIndex] == red || LtfSsStatus[PairIndex] == red)
{
//Market trade
if (OrderType() < 2)
{
//Htf
if (!CloseThisTrade)
if (UseHtfSs && HtfCloseMarketTradesOnOppositeSignal)
if (HtfSsVal[PairIndex] < HtfCloseBuysBelow)
CloseThisTrade = true;
//Mtf
if (!CloseThisTrade)
if (UseMtfSs && MtfCloseMarketTradesOnOppositeSignal)
if (MtfSsVal[PairIndex] < MtfCloseBuysBelow)
CloseThisTrade = true;
//Ltf
if (!CloseThisTrade)
if (UseLtfSs && LtfCloseMarketTradesOnOppositeSignal)
if (LtfSsVal[PairIndex] < LtfCloseBuysBelow)
CloseThisTrade = true;
}//if (OrderType() < 2)
//Pending trade
if (OrderType() > 1 && OrderType() < 6)//6 is a deposit into the account
{
//Htf
if (!CloseThisTrade)
if (UseHtfSs && HtfDeletePendingTradesOnOppositeSignal)
if (HtfSsStatus[PairIndex] == red)
CloseThisTrade = true;
//Mtf
if (!CloseThisTrade)
if (UseMtfSs && MtfDeletePendingTradesOnOppositeSignal)
if (MtfSsStatus[PairIndex] == red)
CloseThisTrade = true;
//Ltf
if (!CloseThisTrade)
if (UseLtfSs && LtfDeletePendingTradesOnOppositeSignal)
if (LtfSsStatus[PairIndex] == red)
CloseThisTrade = true;
}//if (OrderType() > 1 && OrderType() < 6)
}//if (HtfSsStatus[PairIndex] == red || MtfSsStatus[PairIndex] == red || LtfSsStatus[PairIndex] == red)
}//if (OrderType() == OP_BUY || OrderType() == OP_BUYSTOP || OrderType() == OP_BUYLIMIT)
///////////////////////////////////////////////////////////////////////////////////////////////////////////
if (OrderType() == OP_SELL || OrderType() == OP_SELLSTOP || OrderType() == OP_SELLLIMIT)
{
//TP
if (bid <= take && !CloseEnough(take, 0) && !CloseEnough(take, OrderTakeProfit()) ) CloseThisTrade = true;
//SL
if (bid >= stop && !CloseEnough(stop, 0) && !CloseEnough(stop, OrderStopLoss())) CloseThisTrade = true;
if (!CloseThisTrade)
if (UsePeaky)
if (PeakyStatus[PairIndex] == peakylongtradable)
CloseThisTrade = true;
if (!CloseThisTrade)
//SS has closed blue
if (HtfSsStatus[PairIndex] == blue || MtfSsStatus[PairIndex] == blue || LtfSsStatus[PairIndex] == blue)
{
//Market trade
if (OrderType() < 2)
{
//Htf
if (!CloseThisTrade)
if (OrderType() < 2)
if (UseHtfSs && HtfCloseMarketTradesOnOppositeSignal)
if (HtfSsVal[PairIndex] > HtfCloseSellsAbove)
CloseThisTrade = true;
//Mtf
if (!CloseThisTrade)
if (OrderType() < 2)
if (UseMtfSs && MtfCloseMarketTradesOnOppositeSignal)
if (MtfSsVal[PairIndex] > MtfCloseSellsAbove)
CloseThisTrade = true;
//Ltf
if (!CloseThisTrade)
if (OrderType() < 2)
if (UseLtfSs && LtfCloseMarketTradesOnOppositeSignal)
if (LtfSsVal[PairIndex] > LtfCloseSellsAbove)
CloseThisTrade = true;
}//if (OrderTyp() < 2)
//Pending trade
if (OrderType() > 1 && OrderType() < 6)//6 is a deposit into the account
{
//Htf
if (!CloseThisTrade)
if (UseHtfSs && HtfDeletePendingTradesOnOppositeSignal)
if (HtfSsStatus[PairIndex] == blue)
CloseThisTrade = true;
//Mtf
if (!CloseThisTrade)
if (UseMtfSs && MtfDeletePendingTradesOnOppositeSignal)
if (MtfSsStatus[PairIndex] == blue)
CloseThisTrade = true;
//Ltf
if (!CloseThisTrade)
if (UseLtfSs && LtfDeletePendingTradesOnOppositeSignal)
if (LtfSsStatus[PairIndex] == blue)
CloseThisTrade = true;
}//if (OrderType() > 1 && OrderType() < 6)
}//if (HtfSsStatus[PairIndex] == blue || MtfSsStatus[PairIndex] == blue || LtfSsStatus[PairIndex] == blue)
}//if (OrderType() == OP_SELL || OrderType() == OP_SELLSTOP || OrderType() == OP_SELLLIMIT)
///////////////////////////////////////////////////////////////////////////////////////////////////////////
if (CloseThisTrade)
{
bool result = false;
if (OrderType() < 2)//Market orders
result = CloseOrder(ticket);
else
result = OrderDelete(ticket, clrNONE);
//Actions when trade close succeeds
if (result)
{
TicketNo = -1;//TicketNo is the most recently trade opened, so this might need editing in a multi-trade EA
OpenTrades--;//Rather than OpenTrades = 0 to cater for multi-trade EA's
return(true);//Makes CountOpenTrades increment cc to avoid missing out ccounting a trade
}//if (result)
//Actions when trade close fails
if (!result)
{
return(false);//Do not increment cc
}//if (!result)
}//if (CloseThisTrade)
//Got this far, so no trade closure
return(false);//Do not increment cc
}//End bool LookForTradeClosure()
The last 12 months at SHF have been mind-bendingly good. I wonder where we will be in 5 years time?

You do not have the required permissions to view the files attached to this post.
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.