// -------------------------------------------------------------------------------
//
// This is a Template used as a guideline to build your own Robot.
// Please use the “Feedback” tab to provide us with your suggestions about cAlgo’s API.
//
// -------------------------------------------------------------------------------
using System;
using cAlgo.API;
using cAlgo.API.Indicators;
namespace cAlgo.Robots
{
[Robot]
public class NewRobot : Robot
{
[Parameter("Vol", DefaultValue = 10000)]
public int Vol { get; set; }
[Parameter("Profit", DefaultValue = 100)]
public double Profit { get; set; }
[Parameter("Loss", DefaultValue = -100)]
public double Loss { get; set; }
[Parameter("St_level_sell", DefaultValue = 6)]
public double St_level_sell { get; set; }
[Parameter("St_level_buy", DefaultValue = 90)]
public double St_level_buy { get; set; }
[Parameter("Period_K", DefaultValue = 5)]
public int Period_K { get; set; }
[Parameter("Period_D", DefaultValue = 3)]
public int Period_D { get; set; }
[Parameter("Slowing", DefaultValue = 3)]
public int Slowing { get; set; }
[Parameter("St_Ma_Type")]
public MovingAverageType St_Ma_Type { get; set; }
[Parameter("Open_Buy", DefaultValue = 1)]
public int Open_Buy { get; set; }
[Parameter("Open_Sell", DefaultValue = 1)]
public int Open_Sell { get; set; }
private StochasticOscillator St;
static int a1,a2,s;
private Position position1,pos1;
protected override void OnStart()
{
Print("Welcome to the world of infinite financial possibilities!");
St=Indicators.StochasticOscillator(Period_K,Period_D,Slowing, St_Ma_Type);
}
protected override void OnTick()
{
double Bid=Symbol.Bid;
double Ask=Symbol.Ask;
double Point=Symbol.PointSize;
double St1=St.PercentK[St.PercentK.Count-2];
double St2=St.PercentK[St.PercentK.Count-3];
if ((Account.Equity-Account.Balance)>=Profit || (Account.Equity-Account.Balance)<=Loss)
s=1;
if (St1<St_level_buy) a2=0;
if (St1>St_level_sell) a1=0;
foreach (var position in Account.Positions)
{
if (s==1)
Trade.Close(position);
}
if (Trade.IsExecuting) return;
if (St1<=St_level_sell && St2>St_level_sell && a1==0 && Open_Sell==1 && s==0)
{
Trade.CreateSellMarketOrder(Symbol, Vol);
a1=1;
}
if (St1>=St_level_buy && St2<St_level_buy && a2==0 && Open_Buy==1 && s==0)
{
Trade.CreateBuyMarketOrder(Symbol, Vol);
a2=1;
}
}
protected override void OnPositionClosed(Position pos)
{
s=0;
}
protected override void OnStop()
{
Print("The FxPro company wishes you successful day!");
}
}
}