July 2017 Suggestion

Created at 07 Jul 2017, 08:56
How’s your experience with the cTrader Platform?
Your feedback is crucial to cTrader's development. Please take a few seconds to share your opinion and help us improve your trading experience. Thanks!
Hanesher's avatar

Hanesher

Joined 30.06.2017

July 2017 Suggestion
07 Jul 2017, 08:56


i) Include free chart movement:  not just up and down, left and right free chart movement would be nice as well. 

ii) Elliott wave labeling tools

iii) Incorporate MQ4 into Ctrader, because there are few indicators I just couldn't get it to work properly on CTraader platform even after converting to C#.

iv) Pleases update video tutorial on your youtube channel. Video Contents are so outdated, it doesnt serve the purpose of tutorial anymore.

v) More variation to font size adjustment. Right now, its either one size too small, or the fonts are too big on my 43" screen.

vi) Independent color selection: Eg: I want to have diffent color for my FIB and a different color for my trendline. I'm not able to do that with current configuration.

vii) Trendline alert Indicator:  I've requested for this indicator on the forum several times with absolute no response whatsoever. I've included the entire MQ4 source code below and  would greatly appreciate if you could include this into our Ctrader platform.

 

 

//| Instructions                                                     |
//|                                                                  |
//| Choose the symbol you're interested in and display it in a chart |
//| window at the appropriate timeframe. Load PriceAlert Indicator   |
//| and optionally choose desired colour for each trendline.         |
//| Optionally set flag to receive single or multiple alerts per     |
//| time bar and flag to send email with each alert. (You must have  |
//| previously configured your email details.)                       |
//| Reposition the trendlines to the level at which you wish to be   |
//| notified should the mid-price get there.                         |
//| Remember to have your speakers on!                               |
//|                                                                                                  |
//|                                                                  |
//+------------------------------------------------------------------+


//---- input parameters
extern color  UpperColour = Turquoise;
extern color  LowerColour = Turquoise;
extern int LineWidth = 1;
extern string NoteDrawTrendline = "true=trendline; false=horizontal line";
extern bool DrawTrendline = true;
extern bool SendNotification = true;
extern string NoteSingleAlert = "true ==> only one hi/lo alert per bar";
extern bool SingleAlertMode = true;
extern bool TidyOnExit = false;

//---- data
static int prevTime = 0;
static double prevPrice;
string upperName = "Upper Line Break!";
string lowerName = "Lower Line Break!";
double hiAlert;
double loAlert;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   prevTime = Time[0];
   prevPrice = ((Ask + Bid) / 2.0);

   double   topPrice =     WindowPriceMax() - (WindowPriceMax() - WindowPriceMin())*0.2;
   double   bottomPrice =  WindowPriceMax() - (WindowPriceMax() - WindowPriceMin())*0.8;

   if(DrawTrendline)
   {
      SetTrendlineObject(upperName, Time[30], topPrice, Time[0], topPrice, UpperColour);
      SetTrendlineObject(lowerName, Time[30], bottomPrice, Time[0], bottomPrice, LowerColour);
   }
   else
   {
      SetHorizlineObject(upperName, topPrice, UpperColour);
      SetHorizlineObject(lowerName, bottomPrice, LowerColour);
   }
//----

return(0);
  }

//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
   //---- Avoid deleting these upper and lower alert trendlines so they are not lost if chart is reloaded (unless flag is set)
   if(TidyOnExit)
   {
      ObjectDelete(upperName);
      ObjectDelete(lowerName);
   }
   
//----
   return(0);
  }

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{
   string alertMsg = "";
   double midPrice = ((Ask + Bid) / 2.0);
   static bool lowerAlertLatch = false;
   static bool upperAlertLatch = false;

   if(prevTime != Time[0])
   {
      //Print("NewTimeFrame=", TimeToStr(Time[0]));
      lowerAlertLatch = false;
      upperAlertLatch = false;

      prevTime = Time[0];
   }
   
   hiAlert = 0.0;
   if(ObjectFind(upperName) == 0)
   {
      if(DrawTrendline) 
         hiAlert = NormalizeDouble(ObjectGetValueByShift(upperName,0),Digits);
      else
         hiAlert = NormalizeDouble(ObjectGet(upperName, OBJPROP_PRICE1),Digits);
   }
 
   loAlert = 0.0;
   if(ObjectFind(lowerName) == 0)
   {
      if(DrawTrendline) 
         loAlert = NormalizeDouble(ObjectGetValueByShift(lowerName,0),Digits);
      else
         loAlert = NormalizeDouble(ObjectGet(lowerName, OBJPROP_PRICE1),Digits);
   }
    
   if(hiAlert > 0.0 && prevPrice < hiAlert && midPrice > hiAlert)
   {
      //Print("hi alert cond");
      if(!upperAlertLatch || !SingleAlertMode)
      {   
         alertMsg = "Upper Line Break! " + Symbol() + " " + DoubleToStr(midPrice, Digits);
         Alert(alertMsg);
    	   if (SendNotification) SendNotification("Upper Line Break! " + Symbol());
    	   upperAlertLatch = true;
    	}
   }
      
   if(loAlert > 0.0 && prevPrice > loAlert && midPrice < loAlert)
   {
      //Print("lo alert cond");
      if(!lowerAlertLatch || !SingleAlertMode)
      {
         alertMsg = "Lower Line Break! " + Symbol() + " " + DoubleToStr(midPrice, Digits);
         Alert(alertMsg);
    	   if (SendNotification) SendNotification("Lower Line Break! " + Symbol());
    	   lowerAlertLatch = true;
    	}
   }
               
/*   
 * Print("mid=" + DoubleToStr( midPrice, Digits)  
 *             + " prev=" + prevPrice 
 *             + " hi=" + hiAlert 
 *             + " lo=" + loAlert);   
*/                         
   prevPrice = midPrice;  
   return(0);
}

//+------------------------------------------------------------------+
//| SetTrendlineObject                                               |
//+------------------------------------------------------------------+
void SetTrendlineObject(string name, datetime T1, double P1, datetime T2, double P2, color colour)
{
   if(ObjectFind(name) == -1)
   {
     ObjectCreate(name, OBJ_TREND, 0, T1, P1, T2, P2);
     ObjectSet(name, OBJPROP_COLOR, colour);
     ObjectSet(name, OBJPROP_BACK, false);
     ObjectSet(name, OBJPROP_WIDTH, LineWidth);  
   }
}

//+------------------------------------------------------------------+
//| SetHorizlineObject                                               |
//+------------------------------------------------------------------+
void SetHorizlineObject(string name, double P1, color colour)
{
   if(ObjectFind(name) == -1)
   {
     ObjectCreate(name, OBJ_HLINE, 0, 0, P1);
     ObjectSet(name, OBJPROP_COLOR, colour);
     ObjectSet(name, OBJPROP_BACK, false);
     ObjectSet(name, OBJPROP_WIDTH, LineWidth);
   }
}
  
//+------------------------------------------------------------------+

 


@Hanesher
Replies

Spotware
26 Jul 2017, 15:03

Dear Trader,

Thanks for sending us your suggestion list. We will pass your suggestions to the relevant product teams for consideration.

Best Regards,

cTrader Team


@Spotware