Yalnızca ürünü satın alan veya kiralayan kullanıcılar yorum yazabilir
Allan Haraldsson  

Could you please help with my nextquestion before to buy it


!. The free version in case the trade does not close and the market goes against the trade, it use martingale method to get all in profit, the paid version , does it also work and use matingale?


2. About the SL, what SL it should be used? If I leave it in blank  one trade can blow out your account, or the EA will  close if it realizes it's a lost trade?



Thank you, I hope you can help me

Allan Haraldsson  
Adnan Iqbal:

Hi Rome,

It is strange and first time I am looking Lot Size 700. Brokers are not allowing and maximum upto 100 I have seen. Which broker are you using?


no SL?   at all? how can you protect your account?

Adnan Iqbal  
srfields:
One more question...  does the fact that I use a US brokerage that doesn't allow hedging affect the EA performance in applying the Trend Tracker strategy?

Dear Srfields,

I have not tested this EA for specific US Fifo rules, but it should work fine in one direction, US broker as per law will not allow to open trades in opposite direction. 

Adnan Iqbal  
srfields:

Hello.  I have several open pairs at a 1.0 lot size, but have decided to decrease risk to a .5 lot size in the settings.  Will this change be problematic for my open pairs?


Please provide some more detail to understand exact problem you are facing. Reducing risk will only reduce lot size as per capital.

Adnan Iqbal  
Allan Haraldsson:

Could you please help with my nextquestion before to buy it


!. The free version in case the trade does not close and the market goes against the trade, it use martingale method to get all in profit, the paid version , does it also work and use matingale?

Yes, it will cause drawdown, but if we are managing risk and optimize its parameters, draw down is cleared soon but it need patience.

2. About the SL, what SL it should be used? If I leave it in blank  one trade can blow out your account, or the EA will  close if it realizes it's a lost trade?

There is SL feature available for users who want to use it as per their experience. But this strategy is not recommended with SL. 


Thank you, I hope you can help me


Hi Allan,

Please find answer above

Adnan Iqbal  
Allan Haraldsson:

no SL?   at all? how can you protect your account?


SL feature is available if user want to use as per their experience.

srfields  
Adnan Iqbal:

Dear Srfields,

I have not tested this EA for specific US Fifo rules, but it should work fine in one direction, US broker as per law will not allow to open trades in opposite direction. 


I'm mostly wondering whether the EA strategy for dealing with losing trades, using the TrendTracker aggressive or moderate recovery, utilizes hedging at all.

srfields  
Adnan Iqbal:

Please provide some more detail to understand exact problem you are facing. Reducing risk will only reduce lot size as per capital.


Well this is a non-issue now, as the original 1.0 lot pairings have closed in profit.  :)  

However, I would still like to know for future reference whether I can change the lot size while I have open positions without affecting the functioning of the EA.  For example, if I have a pair open at 1.0 lot and then change the lot size setting to .5 while it is still open, would the EA still be able to apply the TrendTracker aggressive or moderate recovery effectively to the 1.0 lot, even thought the lot setting has been changed?

Henry De Jongh  
srfields:

Well this is a non-issue now, as the original 1.0 lot pairings have closed in profit.  :)  

However, I would still like to know for future reference whether I can change the lot size while I have open positions without affecting the functioning of the EA.  For example, if I have a pair open at 1.0 lot and then change the lot size setting to .5 while it is still open, would the EA still be able to apply the TrendTracker aggressive or moderate recovery effectively to the 1.0 lot, even thought the lot setting has been changed?


You can switch to a lower lot size (and take profit scales down along with it) and if anything the trades can close earlier because they reach the target profit faster. Going from a small lot size to a huge one may be more problematic. I usually just wait until all the trades have been closed before I change the lot size.

Also instead of stop loss, if a trade is in profit but TrendTracker Indicator notices the market trend changes it will just close the trade for +-0.01$ and try again later. As for hedging, it may occasionally place a trade in the opposite direction to gain some profits during draw-down. With the FIFO rule you probably just have to wait forever until all the trades close but you can use the aggressive preset to earn a little more, it's pretty great and for the first time ever I caught it trailing profit for me!

Trailing Profit

But in general this EA has a lot of little (very clever) tricks up its sleeve. No need to use stop loss or anything that was just added for all the people that keep whining about needing it even if it doesn't make any sense strategy wise. Just make sure you keep things realistic and don't aim for a million overnight. Patience is key... no wait a minute, no no Adnan why don't you make us an EA that makes a million overnight instead?! :'(

With kind regards,

Henry

srfields  
Henry De Jongh:

You can switch to a lower lot size (and take profit scales down along with it) and if anything the trades can close earlier because they reach the target profit faster. Going from a small lot size to a huge one may be more problematic. I usually just wait until all the trades have been closed before I change the lot size.

Also instead of stop loss, if a trade is in profit but TrendTracker Indicator notices the market trend changes it will just close the trade for +-0.01$ and try again later. As for hedging, it may occasionally place a trade in the opposite direction to gain some profits during draw-down. With the FIFO rule you probably just have to wait forever until all the trades close but you can use the aggressive preset to earn a little more, it's pretty great and for the first time ever I caught it trailing profit for me!

But in general this EA has a lot of little (very clever) tricks up its sleeve. No need to use stop loss or anything that was just added for all the people that keep whining about needing it even if it doesn't make any sense strategy wise. Just make sure you keep things realistic and don't aim for a million overnight. Patience is key... no wait a minute, no no Adnan why don't you make us an EA that makes a million overnight instead?! :'(

With kind regards,

Henry


Thanks for the information, Henry.

wibble  
Henry De Jongh:

You can switch to a lower lot size (and take profit scales down along with it) and if anything the trades can close earlier because they reach the target profit faster. Going from a small lot size to a huge one may be more problematic. I usually just wait until all the trades have been closed before I change the lot size.

Also instead of stop loss, if a trade is in profit but TrendTracker Indicator notices the market trend changes it will just close the trade for +-0.01$ and try again later. As for hedging, it may occasionally place a trade in the opposite direction to gain some profits during draw-down. With the FIFO rule you probably just have to wait forever until all the trades close but you can use the aggressive preset to earn a little more, it's pretty great and for the first time ever I caught it trailing profit for me!

But in general this EA has a lot of little (very clever) tricks up its sleeve. No need to use stop loss or anything that was just added for all the people that keep whining about needing it even if it doesn't make any sense strategy wise. Just make sure you keep things realistic and don't aim for a million overnight. Patience is key... no wait a minute, no no Adnan why don't you make us an EA that makes a million overnight instead?! :'(

With kind regards,

Henry

wibble  
Adnan Iqbal:

Hi Wibble,

Please advice if any feature needed, if feasible for this strategy I will introduce. Any new release is free and it should not impact number of activation if install on same machine.

Hi Adnan, 

I think it's been asked for before (Henry has just mentioned that he waits for everything to be closed) but it would be nice to have the ability to drain the system down. If I wanted to change lot size for instance then it would be be good to ensure all trades are closed first. 

I guess this would mean no new trades but "recovery" trades are allowed. And then eventually, nothing open allowing modification.. This would also allow you to cleanly move from vps to vps. 

Thanks again for the good work. 

wibble 
Henry De Jongh  
wibble:
Hi Adnan, 

I think it's been asked for before (Henry has just mentioned that he waits for everything to be closed) but it would be nice to have the ability to drain the system down. If I wanted to change lot size for instance then it would be be good to ensure all trades are closed first. 

I guess this would mean no new trades but "recovery" trades are allowed. And then eventually, nothing open allowing modification.. This would also allow you to cleanly move from vps to vps. 

Thanks again for the good work. 

wibble 

I love this idea, I mentioned it before Adnan was like "good idea from henwy" but it never happened!
I called it "Graceful Stop" and it can just be a button on the graph that toggles between checked and unchecked (default behavior of buttons).

In fact here you go Adnan, working example code, now add it! No excuses! :P

//+------------------------------------------------------------------+
//|                                                        Adnan.mq4 |
//|                                   Copyright 2017, 00laboratories |
//|                                      https://00laboratories.com/ |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, 00laboratories"
#property link      "https://00laboratories.com/"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
   ButtonCreate(0, "GracefulStop", 0, 40, 40, 100, 18, 0, "Graceful Stop");
   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
   ButtonDelete(0, "GracefulStop");
}
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
   bool gracefulStop = ButtonChecked(0, "GracefulStop");
   if (gracefulStop)
      Comment("Graceful Stop active, will stop trading soon...");
   else
      Comment("Graceful Stop deactivated.");
}

//+------------------------------------------------------------------+
//| Check the MQL4 manual in topic OBJ_BUTTON for more of this code. |
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+ 
//| Create the button                                                | 
//+------------------------------------------------------------------+ 
bool ButtonCreate(const long              chart_ID=0,               // chart's ID 
                  const string            name="Button",            // button name 
                  const int               sub_window=0,             // subwindow index 
                  const int               x=0,                      // X coordinate 
                  const int               y=0,                      // Y coordinate 
                  const int               width=50,                 // button width 
                  const int               height=18,                // button height 
                  const ENUM_BASE_CORNER  corner=CORNER_LEFT_UPPER, // chart corner for anchoring 
                  const string            text="Button",            // text 
                  const string            font="Arial",             // font 
                  const int               font_size=10,             // font size 
                  const color             clr=clrBlack,             // text color 
                  const color             back_clr=C'236,233,216',  // background color 
                  const color             border_clr=clrNONE,       // border color 
                  const bool              state=false,              // pressed/released 
                  const bool              back=false,               // in the background 
                  const bool              selection=false,          // highlight to move 
                  const bool              hidden=true,              // hidden in the object list 
                  const long              z_order=0)                // priority for mouse click 
//--- reset the error value 
   ResetLastError(); 
//--- create the button 
   if(!ObjectCreate(chart_ID,name,OBJ_BUTTON,sub_window,0,0)) 
   { 
      Print(__FUNCTION__, 
      ": failed to create the button! Error code = ",GetLastError()); 
   return(false); 
   } 
//--- set button coordinates 
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x); 
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y); 
//--- set button size 
   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width); 
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height); 
//--- set the chart's corner, relative to which point coordinates are defined 
   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner); 
//--- set the text 
   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text); 
//--- set text font 
   ObjectSetString(chart_ID,name,OBJPROP_FONT,font); 
//--- set font size 
   ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size); 
//--- set text color 
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); 
//--- set background color 
   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr); 
//--- set border color 
   ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,border_clr); 
//--- display in the foreground (false) or background (true) 
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back); 
//--- set button state 
   ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state); 
//--- enable (true) or disable (false) the mode of moving the button by mouse 
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection); 
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection); 
//--- hide (true) or display (false) graphical object name in the object list 
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden); 
//--- set the priority for receiving the event of a mouse click in the chart 
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order); 
//--- successful execution 
   return(true); 
}
//+------------------------------------------------------------------+ 
//| Delete the button                                                | 
//+------------------------------------------------------------------+ 
bool ButtonDelete(const long   chart_ID=0,    // chart's ID 
                  const string name="Button") // button name 
   //--- reset the error value 
   ResetLastError(); 
   //--- delete the button 
   if(!ObjectDelete(chart_ID,name)) 
   { 
      Print(__FUNCTION__, 
         ": failed to delete the button! Error code = ",GetLastError()); 
      return(false); 
   } 
   //--- successful execution 
   return(true); 
}
//+------------------------------------------------------------------+ 
//| Returns true when the button is checked; otherwise, false.       | 
//+------------------------------------------------------------------+ 
bool ButtonChecked(const long   chart_ID=0,    // chart's ID
                   const string name="Button") // button name
{
   return ObjectGetInteger(chart_ID, name, OBJPROP_STATE) == 1;
}


With kind regards,

Henry

Adnan Iqbal  
wibble:
Hi Adnan, 

I think it's been asked for before (Henry has just mentioned that he waits for everything to be closed) but it would be nice to have the ability to drain the system down. If I wanted to change lot size for instance then it would be be good to ensure all trades are closed first. 

I guess this would mean no new trades but "recovery" trades are allowed. And then eventually, nothing open allowing modification.. This would also allow you to cleanly move from vps to vps. 

Thanks again for the good work. 

wibble 

Hi Wibble,

It is good feature "to drain the system down" I will add soon as already Henry convinced me :).

Adnan Iqbal  
Henry De Jongh:

I love this idea, I mentioned it before Adnan was like "good idea from henwy" but it never happened!
I called it "Graceful Stop" and it can just be a button on the graph that toggles between checked and unchecked (default behavior of buttons).

In fact here you go Adnan, working example code, now add it! No excuses! :P

//+------------------------------------------------------------------+
//|                                                        Adnan.mq4 |
//|                                   Copyright 2017, 00laboratories |
//|                                      https://00laboratories.com/ |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, 00laboratories"
#property link      "https://00laboratories.com/"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
   ButtonCreate(0, "GracefulStop", 0, 40, 40, 100, 18, 0, "Graceful Stop");
   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
   ButtonDelete(0, "GracefulStop");
}
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
   bool gracefulStop = ButtonChecked(0, "GracefulStop");
   if (gracefulStop)
      Comment("Graceful Stop active, will stop trading soon...");
   else
      Comment("Graceful Stop deactivated.");
}

//+------------------------------------------------------------------+
//| Check the MQL4 manual in topic OBJ_BUTTON for more of this code. |
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+ 
//| Create the button                                                | 
//+------------------------------------------------------------------+ 
bool ButtonCreate(const long              chart_ID=0,               // chart's ID 
                  const string            name="Button",            // button name 
                  const int               sub_window=0,             // subwindow index 
                  const int               x=0,                      // X coordinate 
                  const int               y=0,                      // Y coordinate 
                  const int               width=50,                 // button width 
                  const int               height=18,                // button height 
                  const ENUM_BASE_CORNER  corner=CORNER_LEFT_UPPER, // chart corner for anchoring 
                  const string            text="Button",            // text 
                  const string            font="Arial",             // font 
                  const int               font_size=10,             // font size 
                  const color             clr=clrBlack,             // text color 
                  const color             back_clr=C'236,233,216',  // background color 
                  const color             border_clr=clrNONE,       // border color 
                  const bool              state=false,              // pressed/released 
                  const bool              back=false,               // in the background 
                  const bool              selection=false,          // highlight to move 
                  const bool              hidden=true,              // hidden in the object list 
                  const long              z_order=0)                // priority for mouse click 
//--- reset the error value 
   ResetLastError(); 
//--- create the button 
   if(!ObjectCreate(chart_ID,name,OBJ_BUTTON,sub_window,0,0)) 
   { 
      Print(__FUNCTION__, 
      ": failed to create the button! Error code = ",GetLastError()); 
   return(false); 
   } 
//--- set button coordinates 
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x); 
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y); 
//--- set button size 
   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width); 
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height); 
//--- set the chart's corner, relative to which point coordinates are defined 
   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner); 
//--- set the text 
   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text); 
//--- set text font 
   ObjectSetString(chart_ID,name,OBJPROP_FONT,font); 
//--- set font size 
   ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size); 
//--- set text color 
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); 
//--- set background color 
   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr); 
//--- set border color 
   ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,border_clr); 
//--- display in the foreground (false) or background (true) 
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back); 
//--- set button state 
   ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state); 
//--- enable (true) or disable (false) the mode of moving the button by mouse 
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection); 
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection); 
//--- hide (true) or display (false) graphical object name in the object list 
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden); 
//--- set the priority for receiving the event of a mouse click in the chart 
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order); 
//--- successful execution 
   return(true); 
}
//+------------------------------------------------------------------+ 
//| Delete the button                                                | 
//+------------------------------------------------------------------+ 
bool ButtonDelete(const long   chart_ID=0,    // chart's ID 
                  const string name="Button") // button name 
   //--- reset the error value 
   ResetLastError(); 
   //--- delete the button 
   if(!ObjectDelete(chart_ID,name)) 
   { 
      Print(__FUNCTION__, 
         ": failed to delete the button! Error code = ",GetLastError()); 
      return(false); 
   } 
   //--- successful execution 
   return(true); 
}
//+------------------------------------------------------------------+ 
//| Returns true when the button is checked; otherwise, false.       | 
//+------------------------------------------------------------------+ 
bool ButtonChecked(const long   chart_ID=0,    // chart's ID
                   const string name="Button") // button name
{
   return ObjectGetInteger(chart_ID, name, OBJPROP_STATE) == 1;
}


With kind regards,

Henry


Thanks for sharing the code, I will update EA for this feature soon. I am in doubt, MQL5 support has some limitation to publish EA on this forum, it includes EA performance. If adding button impacts EA performance  I have to peruse without buttons to meet MQL5 requirements.

Henry De Jongh  

Hey Adnan,

I'd say three things:

  • Buttons (and most other graph objects) don't take any noticeable performance once created (as per my own experience).
  • I wouldn't worry too much about MQL5 Support, might as well just send them the EA and worry once they do complain. It's not like you get banned over it. You just try again later.
  • I assume they just run a back-test on every EA to meet some timing requirement, just skip all the fancy button related code and Comment() maths if you can't see it:
bool noUserInterface = (IsTesting() && !IsVisualMode()); // hide visuals during back-test unless visual mode is enabled.

But again that's just worrying too much about MQL5 Support before they even complain again.

I have had a lot of fun with my graphs without any performance issues!

Graphageddon

With kind regards,

Henry

wibble  
Adnan Iqbal:

Hi Wibble,

It is good feature "to drain the system down" I will add soon as already Henry convinced me :).

Thanks Adnan. I am copying the pairs and timeframes which you are using. Smaller lot size though. Bit of drawdown at the moment. I gave seen it recover a few times though so let's hope it continues. Patience seems to be key... 
Henry De Jongh  
wibble:
Thanks Adnan. I am copying the pairs and timeframes which you are using. Smaller lot size though. Bit of drawdown at the moment. I gave seen it recover a few times though so let's hope it continues. Patience seems to be key... 

Don't worry wibble, it's the one EA on the market that actually works! .-.

You can tell just by the fact that Adnan isn't adding a million friends to spam them with advertisements hourly, he doesn't have to sell a non-functional EA to make profit unlike those people. >_>
Heck Adnan told me he is donating all the profits to a good cause (I mean those profits don't even compare to the profit he makes on his live signal).

A friend and I are also using the same currency pairs and time-frames, after a while you will sync up and have identical trades to Adnan's live signal.
Rule of thumb, 500$ balance for 0.01 lot size (as Adnan started with 5000$ balance for 0.10 lot size) and you should be good.

There are some slow days... weeks but every now and then you will get a day where it's endless profit and you feel like a shady thief stealing all the profits from the banks. >=)

With kind regards,

Henry

Adnan Iqbal  
Henry De Jongh:

Hey Adnan,

I'd say three things:

  • Buttons (and most other graph objects) don't take any noticeable performance once created (as per my own experience).
  • I wouldn't worry too much about MQL5 Support, might as well just send them the EA and worry once they do complain. It's not like you get banned over it. You just try again later.
  • I assume they just run a back-test on every EA to meet some timing requirement, just skip all the fancy button related code and Comment() maths if you can't see it:
bool noUserInterface = (IsTesting() && !IsVisualMode()); // hide visuals during back-test unless visual mode is enabled.

But again that's just worrying too much about MQL5 Support before they even complain again.

I have had a lot of fun with my graphs without any performance issues!


With kind regards,

Henry


Hi Henry,

Thanks for nice suggestion,  I will introduce these very soon.

Yalnızca ürünü satın alan veya kiralayan kullanıcılar yorum yazabilir