Warning! Executing cBots downloaded from this section may result in loss of funds. Use them at your own risk.
Notification Publishing copyrighted material is strictly prohibited. If you believe there is copyrighted material in this section you may use the Copyright Infringement Notification form to submit a claim.

General info

alexsanramon's avatar
Username:alexsanramon
Name:
Member since: 21 Feb 2019
Country:
Favorite symbols:
  
About:
Signature:

Last comments

  • @QQE: So what happened? Did you update it? Please advise.
  • @BTMM Template: I ask the same thing to the telegram group. Go there and find the solution. Sorry but you are right.
  • @holy -\(*.*)/- Grail: Is there a moderator for algos that checks if repainters like this one? Spotware should stop all kinds of useless indicators.
  • @SSL: Thank you
  • @Trend Magic: Join the group and request the indicator you are dreaming about.
  • @Stridsman Volatility Quality: This is nice. Join the Discord chat now.
  • @Auto HeatMap: Thank you for building the VQ.   Let us all join his group chat.
  • @Volume Analyzer: Let us all join his Discord group.
  • @HADelta: This is indeed a fantastic indicator. Let us all join his Discord Server were friendly traders meet.
  • @Absolute Strength: Below is the C# version..   public class DirectionalVolatility : Indicator     {         public DirectionalVolatility()         {             IndicatorName  = "Directional volatility";             PossibleSlots  = SlotTypes.OpenFilter | SlotTypes.CloseFilter;             SeparatedChart = true;                          IndicatorAuthor = "Footon";             IndicatorVersion = "2.0";             IndicatorDescription = "Footon's indi corner: custom indicators for FSB and FST.";         }         public override void Initialize(SlotTypes slotType)         {             SlotType = slotType;             // The ComboBox parameters             IndParam.ListParam[0].Caption  = "Logic";             IndParam.ListParam[0].ItemList = new string[]             {                 "The  line rises",                 "The  line falls",                 "The  line changes its direction upward",                 "The  line changes its direction downward",                 "The  line crosses the Signal line upward",                 "The  line crosses the Signal line downward",                 "The  line is higher than the Signal line",                 "The  line is lower than the Signal line"             };             IndParam.ListParam[0].Index    = 0;             IndParam.ListParam[0].Text     = IndParam.ListParam[0].ItemList[IndParam.ListParam[0].Index];             IndParam.ListParam[0].Enabled  = true;             IndParam.ListParam[0].ToolTip  = "Logic of application of the indicator.";               IndParam.ListParam[1].Caption  = "Smoothing method";             IndParam.ListParam[1].ItemList = Enum.GetNames(typeof(MAMethod));             IndParam.ListParam[1].Index    = (int)MAMethod.Simple;             IndParam.ListParam[1].Text     = IndParam.ListParam[1].ItemList[IndParam.ListParam[1].Index];             IndParam.ListParam[1].Enabled  = true;             IndParam.ListParam[1].ToolTip  = "The method used for smoothing.";               IndParam.NumParam[0].Caption = "period1";             IndParam.NumParam[0].Value   = 5;             IndParam.NumParam[0].Min     = 1;             IndParam.NumParam[0].Max     = 200;             IndParam.NumParam[0].Enabled = true;             IndParam.NumParam[0].ToolTip = "The smoothing period ";               IndParam.NumParam[1].Caption = "period2";             IndParam.NumParam[1].Value   = 3;             IndParam.NumParam[1].Min     = 1;             IndParam.NumParam[1].Max     = 200;             IndParam.NumParam[1].Enabled = true;             IndParam.NumParam[1].ToolTip = "The smoothing period ";               // The CheckBox parameters             IndParam.CheckParam[0].Caption = "Use previous bar value";             IndParam.CheckParam[0].Enabled = true;             IndParam.CheckParam[0].ToolTip = "Use the indicator value from the previous bar.";               return;         }           public override void Calculate(IDataSet dataSet)         {             DataSet = dataSet;                          // Reading the parameters             MAMethod maMethod = (MAMethod)IndParam.ListParam[1].Index;             int iPeriod     = (int)IndParam.NumParam[0].Value;             int iPeriod2 = (int)IndParam.NumParam[1].Value;             int iPrvs  = IndParam.CheckParam[0].Checked ? 1 : 0;               // Calculation             int iFirstBar = iPeriod + 3;               double[] range = new double[Bars];             double[] distance  = new double[Bars];             double[] adSTDV = new double[Bars];                          for (int iBar = 1; iBar < Bars; iBar++)             {                 range[iBar] = High[iBar] - Low[iBar];                 distance[iBar] = Math.Abs(Open[iBar] - Close[iBar]);             }                          for (int iBar = iPeriod; iBar < Bars; iBar++)             {                 double dSum = 0;                 for (int index = 0; index < iPeriod; index++)                 {                     double fDelta = (range[iBar - index] - distance[iBar]);                     dSum  += fDelta * fDelta;                 }                 adSTDV[iBar] = Math.Sqrt(dSum / iPeriod);             }                          double[] signal = MovingAverage(iPeriod2, 0, maMethod, adSTDV);               // Saving the components             Component = new IndicatorComp[4];               Component[0] = new IndicatorComp();             Component[0].CompName   = "Main Line";             Component[0].DataType   = IndComponentType.IndicatorValue;             Component[0].ChartType  = IndChartType.Line;             Component[0].ChartColor = Color.Green;             Component[0].FirstBar   = iFirstBar;             Component[0].Value      = adSTDV;               Component[1] = new IndicatorComp();             Component[1].CompName   = "Signal line";             Component[1].DataType   = IndComponentType.IndicatorValue;             Component[1].ChartType  = IndChartType.Line;             Component[1].ChartColor = Color.Red;             Component[1].FirstBar   = iFirstBar;             Component[1].Value      = signal;               Component[2] = new IndicatorComp();             Component[2].ChartType = IndChartType.NoChart;             Component[2].FirstBar  = iFirstBar;             Component[2].Value     = new double[Bars];               Component[3] = new IndicatorComp();             Component[3].ChartType = IndChartType.NoChart;             Component[3].FirstBar  = iFirstBar;             Component[3].Value     = new double[Bars];               // Sets the Component's type             if (SlotType == SlotTypes.OpenFilter)             {                 Component[2].DataType = IndComponentType.AllowOpenLong;                 Component[2].CompName = "Is long entry allowed";                 Component[3].DataType = IndComponentType.AllowOpenShort;                 Component[3].CompName = "Is short entry allowed";             }             else if (SlotType == SlotTypes.CloseFilter)             {                 Component[2].DataType = IndComponentType.ForceCloseLong;                 Component[2].CompName = "Close out long position";                 Component[3].DataType = IndComponentType.ForceCloseShort;                 Component[3].CompName = "Close out short position";             }               switch (IndParam.ListParam[0].Text)             {                 case "The  line rises":                     OscillatorLogic(iFirstBar, iPrvs, adSTDV, 0, 0, ref Component[2], ref Component[3], IndicatorLogic.The_indicator_rises);                     break;                   case "The  line falls":                     OscillatorLogic(iFirstBar, iPrvs, adSTDV, 0, 0, ref Component[2], ref Component[3], IndicatorLogic.The_indicator_falls);                     break;                   case "The  line is higher than level":                     OscillatorLogic(iFirstBar, iPrvs, adSTDV, 0, 0, ref Component[2], ref Component[3], IndicatorLogic.The_indicator_is_higher_than_the_level_line);                     break;                   case "The  line is lower than level":                     OscillatorLogic(iFirstBar, iPrvs, adSTDV, 0, 0, ref Component[2], ref Component[3], IndicatorLogic.The_indicator_is_lower_than_the_level_line);                     break;                   case "The  line crosses the level line upward":                     OscillatorLogic(iFirstBar, iPrvs, adSTDV, 0, 0, ref Component[2], ref Component[3], IndicatorLogic.The_indicator_crosses_the_level_line_upward);                     break;                   case "The  line crosses the level line downward":                     OscillatorLogic(iFirstBar, iPrvs, adSTDV, 0, 0, ref Component[2], ref Component[3], IndicatorLogic.The_indicator_crosses_the_level_line_downward);                     break;                   case "The  line changes its direction upward":                     OscillatorLogic(iFirstBar, iPrvs, adSTDV, 0, 0, ref Component[2], ref Component[3], IndicatorLogic.The_indicator_changes_its_direction_upward);                     break;                   case "The  line changes its direction downward":                     OscillatorLogic(iFirstBar, iPrvs, adSTDV, 0, 0, ref Component[2], ref Component[3], IndicatorLogic.The_indicator_changes_its_direction_downward);                     break;                   case "The  line crosses the Signal line upward":                     IndicatorCrossesAnotherIndicatorUpwardLogic(iFirstBar, iPrvs, adSTDV, signal, ref Component[2], ref Component[3]);                     break;                   case "The  line crosses the Signal line downward":                     IndicatorCrossesAnotherIndicatorDownwardLogic(iFirstBar, iPrvs, adSTDV, signal, ref Component[2], ref Component[3]);                     break;                   case "The  line is higher than the Signal line":                     IndicatorIsHigherThanAnotherIndicatorLogic(iFirstBar, iPrvs, adSTDV, signal, ref Component[2], ref Component[3]);                     break;                   case "The  line is lower than the Signal line":                     IndicatorIsLowerThanAnotherIndicatorLogic(iFirstBar, iPrvs, adSTDV, signal, ref Component[2], ref Component[3]);                     break;                   default:                     break;             }               return;         }           ///         /// Sets the indicator logic description         ///         public override void SetDescription()         {             EntryFilterLongDescription  = ToString() + "; the  line ";             EntryFilterShortDescription = ToString() + "; the  line ";             ExitFilterLongDescription   = ToString() + "; the  line ";             ExitFilterShortDescription  = ToString() + "; the  line ";               switch (IndParam.ListParam[0].Text)             {                 case "The  line rises":                     EntryFilterLongDescription  += "rises";                     EntryFilterShortDescription += "falls";                     ExitFilterLongDescription   += "rises";                     ExitFilterShortDescription  += "falls";                     break;                   case "The  line falls":                     EntryFilterLongDescription  += "falls";                     EntryFilterShortDescription += "rises";                     ExitFilterLongDescription   += "falls";                     ExitFilterShortDescription  += "rises";                     break;                   case "The  line is higher than level":                     EntryFilterLongDescription  += "is higher than the level line";                     EntryFilterShortDescription += "is lower than the level line";                     ExitFilterLongDescription   += "is higher than the level line";                     ExitFilterShortDescription  += "is lower than the level line";                     break;                   case "The  line is lower than level":                     EntryFilterLongDescription  += "is lower than the level line";                     EntryFilterShortDescription += "is higher than the level line";                     ExitFilterLongDescription   += "is lower than the level line";                     ExitFilterShortDescription  += "is higher than the level line";                     break;                   case "The  line crosses the level line upward":                     EntryFilterLongDescription  += "crosses the level line upward";                     EntryFilterShortDescription += "crosses the level line downward";                     ExitFilterLongDescription   += "crosses the level line upward";                     ExitFilterShortDescription  += "crosses the level line downward";                     break;                   case "The  line crosses the level line downward":                     EntryFilterLongDescription  += "crosses the level line downward";                     EntryFilterShortDescription += "crosses the level line upward";                     ExitFilterLongDescription   += "crosses the level line downward";                     ExitFilterShortDescription  += "crosses the level line upward";                     break;                   case "The  line changes its direction upward":                     EntryFilterLongDescription  += "changes its direction upward";                     EntryFilterShortDescription += "changes its direction downward";                     ExitFilterLongDescription   += "changes its direction upward";                     ExitFilterShortDescription  += "changes its direction downward";                     break;                   case "The  line changes its direction downward":                     EntryFilterLongDescription  += "changes its direction downward";                     EntryFilterShortDescription += "changes its direction upward";                     ExitFilterLongDescription   += "changes its direction downward";                     ExitFilterShortDescription  += "changes its direction upward";                     break;                   case "The  line is higher than the Signal line":                     EntryFilterLongDescription  += "is higher than the Signal line";                     EntryFilterShortDescription += "is lower than the Signal line";                     ExitFilterLongDescription   += "is higher than the Signal line";                     ExitFilterShortDescription  += "is lower than the Signal line";                     break;                   case "The  line is lower than the Signal line":                     EntryFilterLongDescription  += "is lower than the Signal line";                     EntryFilterShortDescription += "is higher than the Signal line";                     ExitFilterLongDescription   += "is lower than the Signal line";                     ExitFilterShortDescription  += "is higher than the Signal line";                     break;                   case "The  line crosses the Signal line upward":                     EntryFilterLongDescription  += "crosses the Signal line upward";                     EntryFilterShortDescription += "crosses the Signal line downward";                     ExitFilterLongDescription   += "crosses the Signal line upward";                     ExitFilterShortDescription  += "crosses the Signal line downward";                     break;                   case "The  line crosses the Signal line downward":                     EntryFilterLongDescription  += "crosses the Signal line downward";                     EntryFilterShortDescription += "crosses the Signal line upward";                     ExitFilterLongDescription   += "crosses the Signal line downward";                     ExitFilterShortDescription  += "crosses the Signal line upward";                     break;                   default:                     break;             }               return;         }           ///         /// Indicator to string         ///         public override string ToString()         {             string sString = IndicatorName +                 (IndParam.CheckParam[0].Checked ? "* (" : " (") +                 IndParam.NumParam[0].ValueToString + ")";  //  period               return sString;         }     } }

Algorithms

DescriptionSubmited byDateCategoryPreviewDownloadsCommentsRating
This indicator do not tell direction of the trend. In fact if the trend exist, this indicator may provide false signal. However, if the market is in the ranging state, this indicator will provide possible supply and demand zone. I did not code this except that I place an email alert. If you like this, Please Vote to my suggestion: https://ctrader.com/forum/suggestions/21848 Appreciate it.  
20 Sep 2019
Downloads
20
Comments
0
Rating
0
Download
I used diran76 code to include yesterday and past 10 days Range.
16 Aug 2019
Downloads
165
Comments
0
Rating
0
Download
DescriptionSubmited byDateCategoryPreviewDownloadsCommentsRating
Please vote to my suggestion to increase the chances of implementation. Thanks. https://ctrader.com/forum/suggestions/21848 This Robot detects the impulse bar or candle and initiate an order. This is the best way to know where the market is going.  Decide how many pips should an impulse be. To know this value, open an ATR indicator. In this example of 1 month data of GBPUSD 1Hr, the market moves around during low volatility 20-30 pips estimate. We take 20 pips as our risk/stoploss. We input 85pips (estimated average) as our trigger in Range. When robot detects an 85 pips move bar/candle, it will trigger. As a rule of risk management, reward should be greater than risk. Therefore, Take profit is 20 x 5 = 100pips. Please vote to my suggestion to increase the chances of implementation above. Thanks.
02 Sep 2019
Downloads
91
Comments
0
Rating
0
Download