Topics
Replies
StormeNet
26 Apr 2014, 08:27
This is kind of a duplicate of another feature, perhaps better put all the votes in the other one as it has more votes already?
http://vote.spotware.com/forums/229166-ideas-and-suggestions-for-ctrader-and-calgo/suggestions/5545131-does-everyone-trade-time-based-charts-would-anyo
@StormeNet
StormeNet
14 Feb 2014, 00:54
Oh, those results were using EURHUF as main chart and EURUSD as 2nd sybmol on the 1hr timeframe.
@StormeNet
StormeNet
19 Dec 2013, 11:56
I've adjusted the UltimatePivotPoints indicator to include the middle lines and S3 and R3.
// ------------------------------------------------------------------------------- // // // This is an idicator to display daily, weekly and monthly pivot points according to the 5 points pivot system // This indicator was developed by Hichem MHAMED : mr.hichem@gmail.com // Please contact for feedback or feature requests. // ------------------------------------------------------------------------------- using System; using cAlgo.API; using cAlgo.API.Indicators; namespace cAlgo.Indicators { [Indicator(IsOverlay = true, AutoRescale = false)] public class UltimatePivotPoints : Indicator { [Output("Daily Pivot", Color = Colors.Yellow)] public IndicatorDataSeries p { get; set; } [Output("Daily R1", Color = Colors.Green)] public IndicatorDataSeries r1 { get; set; } [Output("Daily R2", Color = Colors.Green)] public IndicatorDataSeries r2 { get; set; } [Output("Daily R3", Color = Colors.Green)] public IndicatorDataSeries r3 { get; set; } [Output("Daily S1", Color = Colors.Red)] public IndicatorDataSeries s1 { get; set; } [Output("Daily S2", Color = Colors.Red)] public IndicatorDataSeries s2 { get; set; } [Output("Daily S3", Color = Colors.Red)] public IndicatorDataSeries s3 { get; set; } [Output("Daily M0", Color = Colors.Orange, LineStyle = LineStyle.Lines)] public IndicatorDataSeries m0 { get; set; } [Output("Daily M1", Color = Colors.Orange, LineStyle = LineStyle.Lines)] public IndicatorDataSeries m1 { get; set; } [Output("Daily M2", Color = Colors.Orange, LineStyle = LineStyle.Lines)] public IndicatorDataSeries m2 { get; set; } [Output("Daily M3", Color = Colors.GreenYellow, LineStyle = LineStyle.Lines)] public IndicatorDataSeries m3 { get; set; } [Output("Daily M4", Color = Colors.GreenYellow, LineStyle = LineStyle.Lines)] public IndicatorDataSeries m4 { get; set; } [Output("Daily M5", Color = Colors.GreenYellow, LineStyle = LineStyle.Lines)] public IndicatorDataSeries m5 { get; set; } [Output("Weekly Pivot", Color = Colors.AliceBlue)] public IndicatorDataSeries wp { get; set; } [Output("Weekly R1", Color = Colors.Brown)] public IndicatorDataSeries wr1 { get; set; } [Output("Weekly R2", Color = Colors.Brown)] public IndicatorDataSeries wr2 { get; set; } [Output("Weekly R3", Color = Colors.Brown)] public IndicatorDataSeries wr3 { get; set; } [Output("Weekly S1", Color = Colors.Purple)] public IndicatorDataSeries ws1 { get; set; } [Output("Weekly S2", Color = Colors.Purple)] public IndicatorDataSeries ws2 { get; set; } [Output("Weekly S3", Color = Colors.Purple)] public IndicatorDataSeries ws3 { get; set; } [Output("Monthly P", Color = Colors.Pink)] public IndicatorDataSeries mp { get; set; } [Output("Monthly R1", Color = Colors.Orange)] public IndicatorDataSeries mr1 { get; set; } [Output("Monthly R2", Color = Colors.Orange)] public IndicatorDataSeries mr2 { get; set; } [Output("Monthly R3", Color = Colors.Orange)] public IndicatorDataSeries mr3 { get; set; } [Output("Monthly S1", Color = Colors.Turquoise)] public IndicatorDataSeries ms1 { get; set; } [Output("Monthly S2", Color = Colors.Turquoise)] public IndicatorDataSeries ms2 { get; set; } [Output("Monthly S3", Color = Colors.Turquoise)] public IndicatorDataSeries ms3 { get; set; } [Parameter("Show daily pivots", DefaultValue = true)] public bool ShowDailyPivots { get; set; } [Parameter("Show weekly pivots", DefaultValue = false)] public bool ShowWeeklyPivots { get; set; } [Parameter("Show monthly pivots", DefaultValue = false)] public bool ShowMonthlyPivots { get; set; } private double dailyLow = double.MaxValue; private double dailyHigh = double.MinValue; private double dailyClose; private double weeklyLow = double.MaxValue; private double weeklyHigh = double.MinValue; private double weeklyClose; private double monthlyLow = double.MaxValue; private double monthlyHigh = double.MinValue; private double monthlyClose; private int nameCounter = 0; private string currentTimeFrameName = ""; //public event EventHandler<EventArgs<int>> CalcFinished = delegate {} ; protected override void Initialize() { // Initialize and create nested indicators } public override void Calculate(int index) { string timeFrame = GetTimeFrameName(); if (timeFrame != "0" && timeFrame != currentTimeFrameName) currentTimeFrameName = timeFrame; bool dailyCondition = ShowDailyPivots && currentTimeFrameName != "D1" && currentTimeFrameName != "W1" && currentTimeFrameName != "M1"; bool weeklyCondition = ShowWeeklyPivots && currentTimeFrameName != "W1" && currentTimeFrameName != "M1"; bool monthlyCondition = ShowMonthlyPivots && currentTimeFrameName != "M1"; //Print(currentTimeFrameName + ":" +dailyCondition); if (dailyCondition) calculateDailyPivots(index); if (weeklyCondition) calculateWeeklyPivots(index); if (monthlyCondition) calculateMonthlyPivots(index); } private void calculateMonthlyPivots(int index) { int currentDay = MarketSeries.OpenTime[index].Day; int previousDay = MarketSeries.OpenTime[index - 1].Day; if (currentDay != previousDay && currentDay == 1) { monthlyClose = MarketSeries.Close[index - 1]; mp[index] = (monthlyHigh + monthlyLow + monthlyClose) / 3; mr1[index] = 2 * mp[index] - monthlyLow; mr2[index] = mp[index] + monthlyHigh - monthlyLow; ms1[index] = 2 * mp[index] - monthlyHigh; ms2[index] = mp[index] - monthlyHigh + monthlyLow; monthlyLow = double.MaxValue; monthlyHigh = double.MinValue; } else { if (monthlyLow > MarketSeries.Low[index]) monthlyLow = MarketSeries.Low[index]; if (monthlyHigh < MarketSeries.High[index]) monthlyHigh = MarketSeries.High[index]; mp[index] = mp[index - 1]; mr1[index] = mr1[index - 1]; ms1[index] = ms1[index - 1]; mr2[index] = mr2[index - 1]; ms2[index] = ms2[index - 1]; mr3[index] = mr3[index - 1]; ms3[index] = ms3[index - 1]; } } private void calculateWeeklyPivots(int index) { DayOfWeek currentDay = MarketSeries.OpenTime[index].DayOfWeek; DayOfWeek previousDay = MarketSeries.OpenTime[index - 1].DayOfWeek; if (currentDay != previousDay && previousDay == DayOfWeek.Friday) { weeklyClose = MarketSeries.Close[index - 1]; wp[index] = (weeklyHigh + weeklyLow + weeklyClose) / 3; wr1[index] = 2 * wp[index] - weeklyLow; wr2[index] = wp[index] + weeklyHigh - weeklyLow; ws1[index] = 2 * wp[index] - weeklyHigh; ws2[index] = wp[index] - weeklyHigh + weeklyLow; weeklyLow = double.MaxValue; weeklyHigh = double.MinValue; } else { if (weeklyLow > MarketSeries.Low[index]) weeklyLow = MarketSeries.Low[index]; if (weeklyHigh < MarketSeries.High[index]) weeklyHigh = MarketSeries.High[index]; wp[index] = wp[index - 1]; wr1[index] = wr1[index - 1]; ws1[index] = ws1[index - 1]; wr2[index] = wr2[index - 1]; ws2[index] = ws2[index - 1]; wr3[index] = wr3[index - 1]; ws3[index] = ws3[index - 1]; } } protected void calculateDailyPivots(int index) { DayOfWeek currentDay = MarketSeries.OpenTime[index].DayOfWeek; DayOfWeek previousDay = MarketSeries.OpenTime[index - 1].DayOfWeek; bool cond1 = currentDay == previousDay || previousDay == DayOfWeek.Sunday; if (cond1) { if (dailyLow > MarketSeries.Low[index]) dailyLow = MarketSeries.Low[index]; if (dailyHigh < MarketSeries.High[index]) dailyHigh = MarketSeries.High[index]; p[index] = p[index - 1]; r1[index] = r1[index - 1]; s1[index] = s1[index - 1]; r2[index] = r2[index - 1]; s2[index] = s2[index - 1]; r3[index] = r3[index - 1]; s3[index] = s3[index - 1]; } else { dailyClose = MarketSeries.Close[index - 1]; p[index] = (dailyHigh + dailyLow + dailyClose) / 3; r1[index] = 2 * p[index] - dailyLow; s1[index] = 2 * p[index] - dailyHigh; r2[index] = p[index] + dailyHigh - dailyLow; s2[index] = p[index] - dailyHigh + dailyLow; r3[index] = r1[index] + (dailyHigh - dailyLow); s3[index] = s1[index] - (dailyHigh - dailyLow); dailyLow = double.MaxValue; dailyHigh = double.MinValue; } m0[index] = (s3[index] + s2[index]) / 2.0; m1[index] = (s2[index] + s1[index]) / 2.0; m2[index] = (s1[index] + p[index]) / 2.0; m3[index] = (p[index] + r1[index]) / 2.0; m4[index] = (r1[index] + r2[index]) / 2.0; m5[index] = (r2[index] + r3[index]) / 2.0; } /// <summary> /// Get the time span between two consecutive bars OpenTime /// </summary> private TimeSpan GetTimeFrame() { if (MarketSeries.Close.Count > 0) { int currentIndex = MarketSeries.Close.Count - 1; DateTime currentOpenTime = MarketSeries.OpenTime[currentIndex]; DateTime previousOpenTime = MarketSeries.OpenTime[currentIndex - 1]; TimeSpan timeFrame = currentOpenTime - previousOpenTime; if (currentOpenTime.DayOfWeek == DayOfWeek.Monday && previousOpenTime.DayOfWeek != DayOfWeek.Monday) { currentOpenTime = previousOpenTime; previousOpenTime = MarketSeries.OpenTime[currentIndex - 2]; timeFrame = currentOpenTime - previousOpenTime; } return timeFrame; } // if bars are not available return TimeSpan.Zero; } /// <summary> /// Get the name representation of the timeframe used /// </summary> /// <param name="timeFrame">Time span between two consecutive bars OpenTime</param> /// <returns>The name representation of the TimeFrame</returns> private string GetTimeFrameName() { TimeSpan timeFrame = GetTimeFrame(); int totalMin = (int)timeFrame.TotalMinutes; string timeFrameName; if (totalMin > 10080) timeFrameName = "M1"; else { switch (totalMin) { case 1: timeFrameName = "m1"; break; case 2: timeFrameName = "m2"; break; case 3: timeFrameName = "m3"; break; case 4: timeFrameName = "m4"; break; case 5: timeFrameName = "m5"; break; case 10: timeFrameName = "m10"; break; case 15: timeFrameName = "m15"; break; case 30: timeFrameName = "m30"; break; case 60: timeFrameName = "h1"; break; case 240: timeFrameName = "h4"; break; case 720: timeFrameName = "h12"; break; case 1440: timeFrameName = "D1"; break; case 10080: timeFrameName = "W1"; break; default: timeFrameName = "0"; break; } } return timeFrameName; } } }
@StormeNet
StormeNet
19 Dec 2013, 11:40
Ok thanks guys, it was indeed the superprofit indicator. I thought it was built into cTrader.
@StormeNet
StormeNet
19 Dec 2013, 11:10
How do you mean "Post the code"?
I receive these notifications while cTrader is running and would like to disable them when I don't want them. There is no code involved here.
@StormeNet
StormeNet
13 Dec 2013, 23:37
Are there plans to implement trailing stop at the server side?
@StormeNet
StormeNet
02 Oct 2014, 14:12
Hey Abdallah,
I like you how setup your libraries!
However, when I compile your sources here locally it seems that the robots are being compiled into the Algo indicators folder instead of the Algo robots folder.How do you get around that issue?
@StormeNet