how to put parameters on volume oscillators?
how to put parameters on volume oscillators?
19 Feb 2021, 13:58
I am trying to put a negative parameter on the volume oscillator. but BOT has not ignored the command lines. How can I fix the problem?
The bot executes sales, when the volume oscillator is at levels higher than the programmed
if (_vol1.Result.LastValue < -10)
if (_vol2.Result.LastValue < -10)
_lastTrade = Server.Time;
if (day == DayOfWeek.Monday || day == DayOfWeek.Tuesday || day == DayOfWeek.Wednesday || day == DayOfWeek.Thursday)
if (Positions.Count == 0)
ExecuteMarketOrder(TradeType.Sell, Symbol, Volume, "bot", StopLoss, TakeProfit);
Replies
samuel.jus.cornelio
19 Feb 2021, 18:37
RE:
PanagiotisCharalampous said:
Hi samuel.jus.cornelio,
Please provide the complete source code and steps to reproduce the problem.
Best Regards,
Panagiotis
Ok,
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.ESouthAmericaStandardTime, AccessRights = AccessRights.None)]
public class bot : Robot
{
[Parameter(DefaultValue = 0.0)]
public double Parameter { get; set; }
[Parameter("Source")]
public DataSeries Source { get; set; }
[Parameter("Volume", DefaultValue = 10000, MinValue = 1000)]
public int Volume { get; set; }
[Parameter("Stop Loss (pips)", DefaultValue = 35, MinValue = 10)]
public double StopLoss { get; set; }
[Parameter("Take_Profit", DefaultValue = 30, MinValue = 10)]
public double TakeProfit { get; set; }
[Parameter("Start Hour", DefaultValue = 6.0)]
public double StartTime { get; set; }
[Parameter("Stop Hour", DefaultValue = 14.0)]
public double StopTime { get; set; }
private bool _todaysOrderExecuted;
DateTime _lastTrade;
private DateTime _startTime;
private DateTime _stopTime;
private VolumeOscillator _vol1;
private VolumeOscillator _vol2;
private UltimateOscillator _ult1;
protected override void OnStart()
{
_startTime = Server.Time.Date.AddHours(StartTime);
_stopTime = Server.Time.Date.AddHours(StopTime);
_lastTrade = Server.Time.AddDays(-1);
var currentHours = Server.Time.TimeOfDay.TotalHours;
bool tradeTime = StartTime < StopTime ? currentHours > StartTime && currentHours < StopTime : currentHours < StopTime || currentHours > StartTime;
if (!tradeTime && _todaysOrderExecuted)
{
_todaysOrderExecuted = false;
}
}
protected override void OnTick()
{
var hour1 = MarketData.GetBars(TimeFrame.Hour);
var day = Server.Time.DayOfWeek;
_vol1 = Indicators.VolumeOscillator(hour1, 6, 6);
_vol2 = Indicators.VolumeOscillator(hour1, 3, 15);
_ult1 = Indicators.UltimateOscillator(hour1, 3, 3, 5);
if (Trade.IsExecuting)
return;
var currentHours = Server.Time.TimeOfDay.TotalHours;
bool tradeTime = StartTime < StopTime ? currentHours > StartTime && currentHours < StopTime : currentHours < StopTime || currentHours > StartTime;
if (!tradeTime)
return;
if (_vol1.Result.LastValue > 200)
if (_vol2.Result.LastValue > 200)
if (_ult1.Result.LastValue > 60)
_lastTrade = Server.Time;
if (_lastTrade.DayOfYear != Server.Time.DayOfYear)
if (day == DayOfWeek.Monday || day == DayOfWeek.Tuesday || day == DayOfWeek.Wednesday || day == DayOfWeek.Thursday)
if (Positions.Count == 0)
ExecuteMarketOrder(TradeType.Buy, Symbol, Volume, "bot", StopLoss, TakeProfit);
if (_vol1.Result.LastValue < -200)
if (_vol2.Result.LastValue < -200)
if (_ult1.Result.LastValue < 40)
_lastTrade = Server.Time;
if (day == DayOfWeek.Monday || day == DayOfWeek.Tuesday || day == DayOfWeek.Wednesday || day == DayOfWeek.Thursday)
if (Positions.Count == 0)
ExecuteMarketOrder(TradeType.Sell, Symbol, Volume, "bot", StopLoss, TakeProfit);
@samuel.jus.cornelio
PanagiotisCharalampous
22 Feb 2021, 08:04
Hi samuel.jus.cornelio,
How do we reproduce the problem? Where do we need to backtest this and what parameters shall we use?
Best Regards,
Panagiotis
@PanagiotisCharalampous
PanagiotisCharalampous
19 Feb 2021, 15:59
Hi samuel.jus.cornelio,
Please provide the complete source code and steps to reproduce the problem.
Best Regards,
Panagiotis
Join us on Telegram
@PanagiotisCharalampous