Warning! This section will be deprecated on February 1st 2025. Please move all your Indicators to the cTrader Store catalogue.
Description
UpDate MA's are now selectable ... Sorry my bad..
RSI Stochastic MACD and 3 MA's with crossover Audio tones.
Ok this is some thing I have been thinking about for some time
And with some help from ( meeting.chegini ) I have made this example
This has 3 clouds like my other's and 3 moving avarages ON Chart all in one
It plays .wav tones from within windows (or your own files)
for MACD crossover and when the fast and medium MA's crossover
AccessRights = AccessRights.None
using cAlgo.API;
using cAlgo.API.Indicators;
namespace cAlgo
{
[Cloud ( "RSI", "RSI50", Opacity = 0.8 , FirstColor = "RSI", SecondColor = "RSI50")]
[Cloud ( "SCH", "SCH50", Opacity = 0.6 , FirstColor = "SCH", SecondColor = "SCH50")]
[Cloud ( "Macd", "Signal", Opacity = 1 , FirstColor = "Macd", SecondColor = "Signal")]
[Indicator(IsOverlay = true, TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
public class RSMW3T : Indicator
{
public DataSeries Source { get; set; }
[Parameter("RSI Period",Group = "These Defaults are for AUDUSD", DefaultValue = 14)]
public int RPeriod { get; set; }
[Output("RSI", LineColor = "AA00AA00" )]
public IndicatorDataSeries RSI { get; set; }
[Output("RSI50", LineColor = "AAFF4400" )]
public IndicatorDataSeries RSI50 { get; set; }
[Parameter("MaType Smooth",Group = "These Defaults are for AUDUSD")]
public MovingAverageType MAType { get; set; }
[Parameter("K%",Group = "These Defaults are for AUDUSD", DefaultValue = 14)]
public int KPeriod { get; set; }
[Parameter("Slowing",Group = "These Defaults are for AUDUSD", DefaultValue = 3)]
public int KSlowing { get; set; }
[Parameter("D%",Group = "These Defaults are for AUDUSD", DefaultValue = 3)]
public int DPeriod { get; set; }
[Output("SCH", LineColor = "AA0000AA" )]
public IndicatorDataSeries SCH { get; set; }
[Output("SCH50", LineColor = "AAAA0000" )]
public IndicatorDataSeries SCH50 { get; set; }
[Parameter("Long Cycle",Group = "These Defaults are for AUDUSD", DefaultValue = 26)]
public int LongCycle { get; set; }
[Parameter("Short Cycle",Group = "These Defaults are for AUDUSD", DefaultValue = 12)]
public int ShortCycle { get; set; }
[Parameter("Signal Periods",Group = "These Defaults are for AUDUSD", DefaultValue = 9)]
public int Periods { get; set; }
[Output("Macd", LineColor = "44FFFF00",Thickness =1, PlotType = PlotType.DiscontinuousLine)]
public IndicatorDataSeries Macd {get;set;}
[Output("Signal", LineColor = "44AA00FF",Thickness =1, PlotType = PlotType.DiscontinuousLine)]
public IndicatorDataSeries Signal {get;set;}
[Parameter("Factor 1 Sets RSI and Stochastic to Close Price ",Group = "These Defaults are for AUDUSD", DefaultValue = 25000)]
public int F1 { get; set; }
[Parameter("Factor 2 Sets RSI and Stochastic to Close Price",Group = "These Defaults are for AUDUSD", DefaultValue = 333)]
public int F2 { get; set; }
[Parameter("Factor 3 Sets Macd to Close Price",Group = "These Defaults are for AUDUSD", DefaultValue = 100)]
public int F3 { get; set; }
[Parameter("Factor 4 Sets Macd to Close Price",Group = "These Defaults are for AUDUSD", DefaultValue = 10)]
public int F4 { get; set; }
[Parameter("Wild Smooth",Group = "These Defaults are for AUDUSD", DefaultValue = 7)]
public int WS { get; set; }
[Output("Smooth", LineColor = "FF00FF00", PlotType = PlotType.Line, Thickness = 1)]
public IndicatorDataSeries S { get; set; }
[Parameter("Periods",Group = "These Defaults are for AUDUSD", DefaultValue = 21)]
public int PF { get; set; }
[Parameter("MaType Fast",Group = "These Defaults are for AUDUSD")]
public MovingAverageType MATypeF { get; set; }
[Output("Wilder 21", LineColor = "FF00FF00", PlotType = PlotType.Line, Thickness = 1)]
public IndicatorDataSeries FastMa { get; set; }
[Parameter("Periods",Group = "These Defaults are for AUDUSD", DefaultValue = 50)]
public int PM { get; set; }
[Parameter("MaType Medi",Group = "These Defaults are for AUDUSD")]
public MovingAverageType MATypeM { get; set; }
[Output("Wilder 50", LineColor = "FFFF4400", PlotType = PlotType.Line, Thickness = 1)]
public IndicatorDataSeries MediMa { get; set; }
[Parameter("Periods",Group = "These Defaults are for AUDUSD", DefaultValue = 200)]
public int PS { get; set; }
[Parameter("MaType Slow",Group = "These Defaults are for AUDUSD")]
public MovingAverageType MATypeS { get; set; }
[Output("Wilder 200", LineColor = "FF0000FF", PlotType = PlotType.Line, Thickness = 1)]
public IndicatorDataSeries SlowMa { get; set; }
[Parameter("WWS Tone",Group = "These Defaults are for AUDUSD", DefaultValue = true)]
public bool DD { get; set; }
[Parameter("Bing Bong",Group = "These Defaults are for AUDUSD", DefaultValue = true)]
public bool BB { get; set; }
private RelativeStrengthIndex rsi;
private StochasticOscillator sch;
private MacdCrossOver macdCrossOver;
MovingAverage Smooth;
MovingAverage Fast;
MovingAverage Medi;
MovingAverage Slow;
protected override void Initialize()
{
rsi = Indicators.RelativeStrengthIndex(Source, RPeriod);
sch = Indicators.StochasticOscillator(KPeriod, KSlowing, DPeriod, MAType);
macdCrossOver = Indicators.MacdCrossOver(LongCycle, ShortCycle, Periods);
Smooth = Indicators.MovingAverage(Source,WS,MAType);
Fast = Indicators.MovingAverage(Source,PF,MATypeF);
Medi = Indicators.MovingAverage(Source,PM,MATypeM);
Slow = Indicators.MovingAverage(Source,PS,MATypeS);
}
public override void Calculate(int index)
{
var F = Smooth.Result[index];
var MACD1 = macdCrossOver.MACD.Last(0);
var Signal1 = macdCrossOver.Signal.Last(0);
var MACD2 = macdCrossOver.MACD.Last(1);
var Signal2 = macdCrossOver.Signal.Last(1);
var FAST1 = Fast.Result.Last(0);
var SLOW1 = Medi.Result.Last(0);
var FAST2 = Fast.Result.Last(1);
var SLOW2 = Medi.Result.Last(1);
FastMa[index] = Fast.Result[index];
MediMa[index] = Medi.Result[index];
SlowMa[index] = Slow.Result[index];
RSI[index] = rsi.Result[index] / F1 + F - ( F / F2 ) ;
RSI50[index] = F;
SCH[index] = sch.PercentK[index] / F1 + F - ( F / F2 ) ;
SCH50[index] = F;
Macd[index] = macdCrossOver.MACD[index] * (( F * F3 + F ) * F / F4 ) + F ;
Signal[index] = macdCrossOver.Signal[index] * (( F * F3 + F ) * F / F4 ) + F ;
S[index] = Smooth.Result[index];
// With some help from this guy >( meeting.chegini )
// I was finaly able to build something different
// if your reading this you probably already have your own ideas here
// ....
// If you use AudaCity (or anything to make .wav files)
// the next part can be modded with what ever you like.
// eg; I have made my own wav files that fade in and out
// and created a folder to find them in "C:\Users\****\Tones\AUD UP.wav"
if ( BB == true)
{
if (MACD1 > Signal1 && MACD2 < Signal2)
{
BeginInvokeOnMainThread ( () =>
{ Notifications.PlaySound (@"C:\Windows\Media\Windows Information Bar.wav"); } );
}
else if (MACD1 < Signal1 && MACD2 > Signal2)
{
BeginInvokeOnMainThread ( () =>
{ Notifications.PlaySound (@"C:\Windows\Media\Speech Misrecognition.wav"); } );
}
}
if ( DD == true)
{
if (FAST1 > SLOW1 && FAST2 < SLOW2)
{
BeginInvokeOnMainThread ( () =>
{ Notifications.PlaySound (@"C:\Windows\Media\Windows Information Bar.wav"); } );
}
else if ((FAST1 < SLOW1) && FAST2 > SLOW2)
{
BeginInvokeOnMainThread ( () =>
{ Notifications.PlaySound (@"C:\Windows\Media\Speech Misrecognition.wav"); } );
}
}
}
//
}
}
VE
VEI5S6C4OUNT0
Joined on 06.12.2022
- Distribution: Free
- Language: C#
- Trading platform: cTrader Automate
- File name: RSMW3T.algo
- Rating: 5
- Installs: 805
- Modified: 08/06/2023 08:15
Note that publishing copyrighted material is strictly prohibited. If you believe there is copyrighted material in this section, please use the Copyright Infringement Notification form to submit a claim.
Comments
Log in to add a comment.
UpDate the MA's are now selectable ... Sorry my bad