I corrected your post..
Cheers
Tommaso
Did you put a stop loss? Was it any indicator based?admcd24 » Mon Feb 09, 2015 12:51 pm wrote:Here are my results running 2 demos from 9pm Sunday to 7am today, 10hrs of trading. Trend and wave trades only, no instant execute, all pending, 2 trades per chart.
1hr TF Demo
4hr TF Demo
admcd24 » Mon Feb 09, 2015 11:07 pm wrote:4 Hr -SL is 80 pips for trend trades, 150 pips TP. 60 pip SL for wave trades, 70 pip TP. GBPNZD is the only pair with range trades true, SL 50, TP 70.
1 Hr - SL 60, TP 80 for trend trades. SL 50, TP 60 for wave trades.
HGB v2t, HGI v 16.04.
Have fun
Thanks for the response. Fair enough! I will be working with version 2t going forward and using HGI 16.03. When I have had a couple of weeks of error-free (or at least fewer error codes), I will get back to you about the possibility of a bug-free thread. In the meantime, thanks for the reply. Enjoy the week!SteveHopwood » Sun Feb 08, 2015 5:51 pm wrote:
So sorry. Much as I appreciate your efforts to help I have no guarantee that they would not merely involve me in endless hours of further work on stuff that has nothing to do with my original code. This has happened before and I am not in a hurry to replicate the exercise.
No, I am not a perfect coder. Yes, I am quite good at this stuff these days. I will sort stuff out as it appears on my platform. Until it does, I will ignore it. Do feel free to open your own 'bug-free' thread here; I will support it. Just make sure you are correct first, ok?
Code: Select all
bool LookForTradeClosure(int ticket)
{
//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(!OrderSelect(ticket, SELECT_BY_TICKET) ) return(true);
if(OrderSelect(ticket, SELECT_BY_TICKET) && OrderCloseTime() > 0) return(true);
bool CloseThisTrade=false;
bool result = false;
string LineName=TpPrefix+DoubleToStr(ticket,0);
//Work with the lines on the chart that represent the hidden tp/sl
double take=ObjectGet(LineName,OBJPROP_PRICE1);
if(CloseEnough(take,0)) take=OrderTakeProfit();
LineName=SlPrefix+DoubleToStr(ticket,0);
double stop=ObjectGet(LineName,OBJPROP_PRICE1);
if(CloseEnough(stop,0)) stop=OrderStopLoss();
///////////////////////////////////////////////////////////////////////////////////////////////////////////
if(OrderType()==OP_BUY || OrderType() == OP_BUYSTOP)
{
//TP
if(Bid>=take && !CloseEnough(take,0) && !CloseEnough(take,OrderTakeProfit())) CloseThisTrade=true;
//SL
if(Bid<=stop && !CloseEnough(stop,0) && !CloseEnough(stop,OrderStopLoss())) CloseThisTrade=true;
//Trend opposite signal
if (OrderComment() == TrendTradeComment || (OrderComment() ==TrendMultiTradeComment))
{
//Opposite arrow of any kind
if (TrendCloseOnOppositeArrow)
if (TrendArrowStatus == Trenddownarrow || RangeArrowStatus == Rangedownarrow || RadArrowStatus == Raddownarrow)
CloseThisTrade = true;
//TMA Range signal
if (TrendCloseOnOppositeTMA)
// if (TmaStatus == Tmarangesignal)
if (WaveStatus == Wavesell)
CloseThisTrade = true;
}//if (OrderComment() == TrendTradeComment)
//Range opposite signal
if (OrderComment() == RangeTradeComment)
{
//Opposite arrow of any kind
if (RangeCloseOnOppositeArrow)
if (TrendArrowStatus == Trenddownarrow || RangeArrowStatus == Rangedownarrow || RadArrowStatus == Raddownarrow)
CloseThisTrade = true;
//TMA Range signal
if (RangeCloseOnOppositeTMA)
if (WaveIsSellTrend)
CloseThisTrade = true;
}//if (OrderComment() == RangeTradeComment)
//Rad opposite signal
if (OrderComment() == RadTradeComment || (OrderComment() == RadMultiTradeComment))
{
//Opposite arrow of any kind
if (RadCloseOnOppositeArrow)
if (TrendArrowStatus == Trenddownarrow || RangeArrowStatus == Rangedownarrow || RadArrowStatus == Raddownarrow)
CloseThisTrade = true;
//TMA Range signal
if (RadCloseOnOppositeTMA)
//if (TmaStatus == Tmarangesignal)
if (WaveStatus == Wavesell)
CloseThisTrade = true;
}//if (OrderComment() == RadTradeComment)
//Wave opposite signal
if (OrderComment() == WaveTradeComment || (OrderComment() == WaveMultiTradeComment))
{
//Opposite arrow of any kind
if (WaveCloseOnOppositeArrow)
if (TrendArrowStatus == Trenddownarrow || RadArrowStatus == Raddownarrow)
CloseThisTrade = true;
//TMA Range end or wave flip signal
if (WaveCloseOnOppositeTMA)
if (WaveStatus == Wavesell)
CloseThisTrade = true;
}//if (OrderComment() == WaveTradeComment)
//TrendWave opposite signal
if (OrderComment() == TrendWaveTradeComment || (OrderComment() ==TrendWaveMultiTradeComment))
{
//Opposite arrow of any kind
if (TrendWaveCloseOnOppositeArrow)
if (TrendArrowStatus == Trenddownarrow || RadArrowStatus == Raddownarrow)
CloseThisTrade = true;
//TMA Range end or wave flip signal
if (TrendWaveCloseOnOppositeTMA)
if (WaveStatus == Wavesell)
CloseThisTrade = true;
}//if (OrderComment() == TrendWaveTradeComment)
}//if (OrderType() == OP_BUY)
///////////////////////////////////////////////////////////////////////////////////////////////////////////
if(OrderType()==OP_SELL || OrderType() == OP_SELLSTOP)
{
//TP
if(Bid<=take && !CloseEnough(take,0) && !CloseEnough(take,OrderTakeProfit())) CloseThisTrade=true;
//SL
if(Bid>=stop && !CloseEnough(stop,0) && !CloseEnough(stop,OrderStopLoss())) CloseThisTrade=true;
//Opposite arrow of any kind
if (OrderComment() == TrendTradeComment || (OrderComment() == TrendMultiTradeComment))
{
//Opposite trend arrow
if (TrendCloseOnOppositeArrow)
if (TrendArrowStatus == Trenduparrow || RangeArrowStatus == Rangeuparrow || RadArrowStatus == Raduparrow)
CloseThisTrade = true;
//TMA Range signal
if (TrendCloseOnOppositeTMA)
//if (TmaStatus == Tmarangesignal)
if (WaveStatus == Wavebuy)
CloseThisTrade = true;
}//if (OrderComment() == TrendTradeComment)
//Range opposite signal
if (OrderComment() == RangeTradeComment)
{
//Opposite arrow of any kind
if (RangeCloseOnOppositeArrow)
if (TrendArrowStatus == Trenduparrow || RangeArrowStatus == Rangeuparrow || RadArrowStatus == Raduparrow)
CloseThisTrade = true;
//TMA low
if (RangeCloseOnOppositeTMA)
// if (WaveIsBuyTrend)
if (WaveStatus == Wavebuy)
CloseThisTrade = true;
}//if (OrderComment() == RangeTradeComment)
//Rad opposite signal
if (OrderComment() == RadTradeComment || (OrderComment() ==RadMultiTradeComment))
{
//Opposite arrow of any kind
if (RadCloseOnOppositeArrow)
if (TrendArrowStatus == Trenduparrow || RangeArrowStatus == Rangeuparrow || RadArrowStatus == Raduparrow)
CloseThisTrade = true;
//TMA range signal
if (RadCloseOnOppositeTMA)
// if (TmaStatus == Tmarangesignal)
if (WaveStatus == Wavebuy)
CloseThisTrade = true;
}//if (OrderComment() == RangeTradeComment)
//Wave opposite signal
if (OrderComment() == WaveTradeComment || (OrderComment() == WaveMultiTradeComment))
{
//Opposite arrow of any kind
if (WaveCloseOnOppositeArrow)
if (TrendArrowStatus == Trenduparrow || RadArrowStatus == Raduparrow)
CloseThisTrade = true;
//TMA Range end or wave flip signal
if (WaveCloseOnOppositeTMA)
if (WaveStatus == Wavebuy)
CloseThisTrade = true;
}//if (OrderComment() == WaveTradeComment)
//TrendWave opposite signal
if (OrderComment() == TrendWaveTradeComment || (OrderComment() == TrendWaveMultiTradeComment))
{
//Opposite arrow of any kind
if (TrendWaveCloseOnOppositeArrow)
if (TrendArrowStatus == Trenduparrow || RadArrowStatus == Raduparrow)
CloseThisTrade = true;
//TMA Range end or wave flip signal
if (TrendWaveCloseOnOppositeTMA)
//if (TmaStatus == Tmarangesignal)
if (WaveStatus == Wavebuy)
CloseThisTrade = true;
}//if (OrderComment() == TrendWaveTradeComment)
}//if (OrderType() == OP_SELL)
///////////////////////////////////////////////////////////////////////////////////////////////////////////
if (CloseThisTrade)
{
if (OrderType() < 2)//Market trades
result = CloseOrder(ticket);
else
result = OrderDelete(ticket);
//Actions when trade close succeeds
if (result)
{
DeletePendingPriceLines();
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()
actually credit to WhoKnows. he pointed it out.SteveHopwood » Wed Feb 11, 2015 12:55 am wrote:trendinator saved me some work this week. He found reasons why the wavy lines did not always result in trade closure and fixed the logic errors.![]()
![]()
![]()
V 2u in post 1, or copy this over the top of bool LookForTradeClosure(int ticket) (line 3853):
Code: Select all
bool LookForTradeClosure(int ticket) { //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(!OrderSelect(ticket, SELECT_BY_TICKET) ) return(true); if(OrderSelect(ticket, SELECT_BY_TICKET) && OrderCloseTime() > 0) return(true); bool CloseThisTrade=false; bool result = false; string LineName=TpPrefix+DoubleToStr(ticket,0); //Work with the lines on the chart that represent the hidden tp/sl double take=ObjectGet(LineName,OBJPROP_PRICE1); if(CloseEnough(take,0)) take=OrderTakeProfit(); LineName=SlPrefix+DoubleToStr(ticket,0); double stop=ObjectGet(LineName,OBJPROP_PRICE1); if(CloseEnough(stop,0)) stop=OrderStopLoss(); /////////////////////////////////////////////////////////////////////////////////////////////////////////// if(OrderType()==OP_BUY || OrderType() == OP_BUYSTOP) { //TP if(Bid>=take && !CloseEnough(take,0) && !CloseEnough(take,OrderTakeProfit())) CloseThisTrade=true; //SL if(Bid<=stop && !CloseEnough(stop,0) && !CloseEnough(stop,OrderStopLoss())) CloseThisTrade=true; //Trend opposite signal if (OrderComment() == TrendTradeComment || (OrderComment() ==TrendMultiTradeComment)) { //Opposite arrow of any kind if (TrendCloseOnOppositeArrow) if (TrendArrowStatus == Trenddownarrow || RangeArrowStatus == Rangedownarrow || RadArrowStatus == Raddownarrow) CloseThisTrade = true; //TMA Range signal if (TrendCloseOnOppositeTMA) // if (TmaStatus == Tmarangesignal) if (WaveStatus == Wavesell) CloseThisTrade = true; }//if (OrderComment() == TrendTradeComment) //Range opposite signal if (OrderComment() == RangeTradeComment) { //Opposite arrow of any kind if (RangeCloseOnOppositeArrow) if (TrendArrowStatus == Trenddownarrow || RangeArrowStatus == Rangedownarrow || RadArrowStatus == Raddownarrow) CloseThisTrade = true; //TMA Range signal if (RangeCloseOnOppositeTMA) if (WaveIsSellTrend) CloseThisTrade = true; }//if (OrderComment() == RangeTradeComment) //Rad opposite signal if (OrderComment() == RadTradeComment || (OrderComment() == RadMultiTradeComment)) { //Opposite arrow of any kind if (RadCloseOnOppositeArrow) if (TrendArrowStatus == Trenddownarrow || RangeArrowStatus == Rangedownarrow || RadArrowStatus == Raddownarrow) CloseThisTrade = true; //TMA Range signal if (RadCloseOnOppositeTMA) //if (TmaStatus == Tmarangesignal) if (WaveStatus == Wavesell) CloseThisTrade = true; }//if (OrderComment() == RadTradeComment) //Wave opposite signal if (OrderComment() == WaveTradeComment || (OrderComment() == WaveMultiTradeComment)) { //Opposite arrow of any kind if (WaveCloseOnOppositeArrow) if (TrendArrowStatus == Trenddownarrow || RadArrowStatus == Raddownarrow) CloseThisTrade = true; //TMA Range end or wave flip signal if (WaveCloseOnOppositeTMA) if (WaveStatus == Wavesell) CloseThisTrade = true; }//if (OrderComment() == WaveTradeComment) //TrendWave opposite signal if (OrderComment() == TrendWaveTradeComment || (OrderComment() ==TrendWaveMultiTradeComment)) { //Opposite arrow of any kind if (TrendWaveCloseOnOppositeArrow) if (TrendArrowStatus == Trenddownarrow || RadArrowStatus == Raddownarrow) CloseThisTrade = true; //TMA Range end or wave flip signal if (TrendWaveCloseOnOppositeTMA) if (WaveStatus == Wavesell) CloseThisTrade = true; }//if (OrderComment() == TrendWaveTradeComment) }//if (OrderType() == OP_BUY) /////////////////////////////////////////////////////////////////////////////////////////////////////////// if(OrderType()==OP_SELL || OrderType() == OP_SELLSTOP) { //TP if(Bid<=take && !CloseEnough(take,0) && !CloseEnough(take,OrderTakeProfit())) CloseThisTrade=true; //SL if(Bid>=stop && !CloseEnough(stop,0) && !CloseEnough(stop,OrderStopLoss())) CloseThisTrade=true; //Opposite arrow of any kind if (OrderComment() == TrendTradeComment || (OrderComment() == TrendMultiTradeComment)) { //Opposite trend arrow if (TrendCloseOnOppositeArrow) if (TrendArrowStatus == Trenduparrow || RangeArrowStatus == Rangeuparrow || RadArrowStatus == Raduparrow) CloseThisTrade = true; //TMA Range signal if (TrendCloseOnOppositeTMA) //if (TmaStatus == Tmarangesignal) if (WaveStatus == Wavebuy) CloseThisTrade = true; }//if (OrderComment() == TrendTradeComment) //Range opposite signal if (OrderComment() == RangeTradeComment) { //Opposite arrow of any kind if (RangeCloseOnOppositeArrow) if (TrendArrowStatus == Trenduparrow || RangeArrowStatus == Rangeuparrow || RadArrowStatus == Raduparrow) CloseThisTrade = true; //TMA low if (RangeCloseOnOppositeTMA) // if (WaveIsBuyTrend) if (WaveStatus == Wavebuy) CloseThisTrade = true; }//if (OrderComment() == RangeTradeComment) //Rad opposite signal if (OrderComment() == RadTradeComment || (OrderComment() ==RadMultiTradeComment)) { //Opposite arrow of any kind if (RadCloseOnOppositeArrow) if (TrendArrowStatus == Trenduparrow || RangeArrowStatus == Rangeuparrow || RadArrowStatus == Raduparrow) CloseThisTrade = true; //TMA range signal if (RadCloseOnOppositeTMA) // if (TmaStatus == Tmarangesignal) if (WaveStatus == Wavebuy) CloseThisTrade = true; }//if (OrderComment() == RangeTradeComment) //Wave opposite signal if (OrderComment() == WaveTradeComment || (OrderComment() == WaveMultiTradeComment)) { //Opposite arrow of any kind if (WaveCloseOnOppositeArrow) if (TrendArrowStatus == Trenduparrow || RadArrowStatus == Raduparrow) CloseThisTrade = true; //TMA Range end or wave flip signal if (WaveCloseOnOppositeTMA) if (WaveStatus == Wavebuy) CloseThisTrade = true; }//if (OrderComment() == WaveTradeComment) //TrendWave opposite signal if (OrderComment() == TrendWaveTradeComment || (OrderComment() == TrendWaveMultiTradeComment)) { //Opposite arrow of any kind if (TrendWaveCloseOnOppositeArrow) if (TrendArrowStatus == Trenduparrow || RadArrowStatus == Raduparrow) CloseThisTrade = true; //TMA Range end or wave flip signal if (TrendWaveCloseOnOppositeTMA) //if (TmaStatus == Tmarangesignal) if (WaveStatus == Wavebuy) CloseThisTrade = true; }//if (OrderComment() == TrendWaveTradeComment) }//if (OrderType() == OP_SELL) /////////////////////////////////////////////////////////////////////////////////////////////////////////// if (CloseThisTrade) { if (OrderType() < 2)//Market trades result = CloseOrder(ticket); else result = OrderDelete(ticket); //Actions when trade close succeeds if (result) { DeletePendingPriceLines(); 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()