Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Linq;
- using cAlgo.API;
- using cAlgo.API.Indicators;
- using cAlgo.API.Internals;
- using cAlgo.Indicators;
- namespace cAlgo.Robots
- {
- [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
- public class riprova : Robot
- {
- private StochasticOscillator _stochastic;
- private const string label = "Sample Trend cBot";
- private ParabolicSAR parabolicSAR;
- [Parameter("Volume", Group = "Volume", DefaultValue = 10000, MinValue = 0, Step = 10000)]
- public double Volume { get; set; }
- [Parameter("Stop Loss", DefaultValue = 15)]
- public int StopLoss { get; set; }
- [Parameter("Take Profit", DefaultValue = 1)]
- public int TakeProfit { get; set; }
- [Parameter("Max Spread", DefaultValue = 1, MinValue = -5.0)]
- public double MaxSpread { get; set; }
- [Parameter("K_Period", DefaultValue = 5, MinValue = 0)]
- public int K_Period { get; set; }
- [Parameter("Slow_K", DefaultValue = 3, MinValue = 0)]
- public int Slow_K { get; set; }
- [Parameter("D Period", DefaultValue = 3, MinValue = 0)]
- public int D_Period { get; set; }
- [Parameter("Tot", DefaultValue = 5.0, MinValue = 0.0)]
- public double Tot { get; set; }
- [Parameter("maType", DefaultValue = MovingAverageType.Simple)]
- public MovingAverageType maType { get; set; }
- [Parameter("Min AF", DefaultValue = 0.02, MinValue = 0)]
- public double minaf { get; set; }
- [Parameter("Max AF", DefaultValue = 0.2, MinValue = 0)]
- public double maxaf { get; set; }
- protected override void OnStart()
- {
- _stochastic = Indicators.StochasticOscillator(K_Period, Slow_K, D_Period, maType);
- parabolicSAR = Indicators.ParabolicSAR(minaf, maxaf);
- var spread = Symbol.Ask - Symbol.Bid;
- Time.AddSeconds(600);
- if (spread > MaxSpread)
- {
- //riparti
- }
- else
- {
- Print("Spread Ok");
- }
- var Percent_K = _stochastic.PercentK.LastValue;
- var Percent_D = _stochastic.PercentD.LastValue;
- var Distanza_a_rialzo = Percent_K - Percent_D;
- var Distanza_a_ribasso = Percent_D - Percent_K;
- var trendrialzo = parabolicSAR.Result.LastValue < Symbol.Bid ? TradeType.Buy : TradeType.Sell;
- var trendribasso = parabolicSAR.Result.LastValue > Symbol.Bid ? TradeType.Buy : TradeType.Sell;
- if (_stochastic.PercentD.LastValue > _stochastic.PercentK.LastValue)
- {
- Print("Stocastico in ribasso");
- if (Distanza_a_ribasso > Tot && Positions.Count < 1)
- {
- if (parabolicSAR.Result.LastValue > Symbol.Bid)
- {
- Print("Sar in ribasso");
- ExecuteMarketOrder(TradeType.Sell, Symbol, Volume, "myLabel", StopLoss, TakeProfit);
- //riparti
- }
- else
- {
- Print("Sar non corrisponde con stocastico");
- //riparti
- }
- }
- else
- {
- Print("distanza linee stocastico troppo vicine");
- //riparti
- }
- }
- else
- {
- Print("Stocastico in rialzo");
- if (Distanza_a_ribasso < Tot && Positions.Count < 1)
- {
- if (parabolicSAR.Result.LastValue < Symbol.Bid)
- {
- Print("Sar in rialzo");
- ExecuteMarketOrder(TradeType.Buy, Symbol, Volume, "myLabel", StopLoss, TakeProfit);
- //riparti
- }
- else
- {
- Print("Sar non corrisponde con stocastico");
- //riparti
- }
- }
- else
- {
- Print("distanza linee stocastico troppo vicine");
- //riparti
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement