// cAlgo.API public surface, generated for reading by people and coding agents. It is not meant to compile. // Full reference with examples: https://help.ctrader.com/ctrader-algo/references/ namespace cAlgo.API { /// Represents a stop loss defined at an absolute price level. public class AbsoluteStopLossProtection { /// Represents a stop loss defined at an absolute price level. public AbsoluteStopLossProtection(double Price); public AbsoluteStopLossProtection(AbsoluteStopLossProtection original); /// The absolute price at which the stop loss is triggered. public double Price {get; set;} } /// Represents the final take profit in an absolute take profit ladder, closing any remaining order volume at a specified price. public class AbsoluteTakeProfitLastProtection { /// Represents the final take profit in an absolute take profit ladder, closing any remaining order volume at a specified price. public AbsoluteTakeProfitLastProtection(double Price); public AbsoluteTakeProfitLastProtection(AbsoluteTakeProfitLastProtection original); /// The absolute price at which the remaining volume is closed. public double Price {get; set;} } /// Represents a partial take profit closing a portion of the order volume at an absolute price. public class AbsoluteTakeProfitProtection { /// Represents a partial take profit closing a portion of the order volume at an absolute price. public AbsoluteTakeProfitProtection(double Volume, double Price); public AbsoluteTakeProfitProtection(AbsoluteTakeProfitProtection original); /// The absolute price at which the take profit is triggered. public double Price {get; set;} /// The portion of the order volume to close when the take profit is triggered. public double Volume {get; set;} } /// Represents a ladder of up to four partial take profits at absolute prices, followed by a final take profit that closes any remaining volume. public class AbsoluteTakeProfitProtections { /// Initializes a new instance with only a final take profit. public AbsoluteTakeProfitProtections(AbsoluteTakeProfitLastProtection lastTakeProfit); /// Initializes a new instance with one partial take profit and a final take profit. public AbsoluteTakeProfitProtections(AbsoluteTakeProfitProtection firstTakeProfit, AbsoluteTakeProfitLastProtection lastTakeProfit); /// Initializes a new instance with two partial take profits and a final take profit. public AbsoluteTakeProfitProtections(AbsoluteTakeProfitProtection firstTakeProfit, AbsoluteTakeProfitProtection secondTakeProfit, AbsoluteTakeProfitLastProtection lastTakeProfit); /// Initializes a new instance with three partial take profits and a final take profit. public AbsoluteTakeProfitProtections(AbsoluteTakeProfitProtection firstTakeProfit, AbsoluteTakeProfitProtection secondTakeProfit, AbsoluteTakeProfitProtection thirdTakeProfit, AbsoluteTakeProfitLastProtection lastTakeProfit); /// Initializes a new instance with four partial take profits and a final take profit. public AbsoluteTakeProfitProtections(AbsoluteTakeProfitProtection firstTakeProfit, AbsoluteTakeProfitProtection secondTakeProfit, AbsoluteTakeProfitProtection thirdTakeProfit, AbsoluteTakeProfitProtection fourthTakeProfit, AbsoluteTakeProfitLastProtection lastTakeProfit); public AbsoluteTakeProfitProtections(AbsoluteTakeProfitProtections original); /// Gets the first partial take profit, if any. public AbsoluteTakeProfitProtection FirstTakeProfit {get;} /// Gets the fourth partial take profit, if any. public AbsoluteTakeProfitProtection FourthTakeProfit {get;} /// Gets the final take profit that closes the remaining volume. public AbsoluteTakeProfitLastProtection LastTakeProfit {get;} /// Gets the second partial take profit, if any. public AbsoluteTakeProfitProtection SecondTakeProfit {get;} /// Gets the third partial take profit, if any. public AbsoluteTakeProfitProtection ThirdTakeProfit {get;} } /// cBots and Indicators Access Rights. public enum AccessRights { /// Algorithm doesn’t require any access rights. None, /// Access to file system. FileSystem, /// Access to Internet or other networks. Internet, /// Access to windows registry. Registry, /// The unlimited access rights. FullAccess, } /// Provides data for the account switched event. public class AccountSwitchedEventArgs { /// Returns new account number. public int CurrentAccountNumber {get;} /// Returns previous account number. public int PreviousAccountNumber {get;} } /// Provides data for the active frame changed event. public class ActiveFrameChangedEventArgs { /// Returns the new active frame or null. public Frame NewFrame {get;} /// Returns the old / previous active frame or null. public Frame OldFrame {get;} } /// The interface representing an indicator / robot instance parameter. Provides properties that allow for accessing various information about an algo instance parameter. public interface AlgoInstanceParameter { /// Gets the display name of a parameter (shown in the 'Parameters' section of an instance). string DisplayName {get;} /// Gets the name of a parameter. string Name {get;} /// Gets the ALgoParameterType of a parameter. AlgoParameterType Type {get;} /// Gets the value of a parameter. object Value {get; set;} } /// Represents the collection of all the parameters of an indicator or Robot. public interface AlgoInstanceParameters { /// Gets the number of parameters. int Count {get;} /// Gets a parameter by it is index. AlgoInstanceParameter Item {get;} /// Gets a parameter by it is name. AlgoInstanceParameter Item {get;} } /// Represents the predefined kinds of algorithm types. public enum AlgoKind { /// Custom indicator CustomIndicator, /// Standard / built-in indicator StandardIndicator, /// Robot / cBot Robot, /// Plugin Plugin, } /// Represents an algorithm parameter. public interface AlgoParameter { /// Gets default value of the parameter. object DefaultValue {get;} /// Gets Parameter name. string Name {get;} /// Gets parameter type. AlgoParameterType Type {get;} } /// Represents the different types of algorithm parameters. public enum AlgoParameterType { /// Represents a parameter of type int . Integer, /// Represents a parameter of type double . Double, /// Represents a parameter of type bool . Boolean, /// Represents a parameter of type string . String, /// Represents a parameter of type enum . Enum, /// Represents a parameter of type DataSeries . DataSeries, /// Represents a parameter of type Color . Color, /// Represents a parameter of type TimeFrame . TimeFrame, /// Represents a parameter of type Symbol . Symbol, /// Represents a parameter of type DateTime . DateTime, /// Represents a parameter of type DateOnly . DateOnly, /// Represents a parameter of type TimeSpan . TimeSpan, /// Represents a parameter of type Enum[] . MultiEnum, /// Represents a parameter of type Symbol[] . MultiSymbol, /// Represents a parameter of type TimeFrame[] . MultiTimeFrame, /// Represents a parameter of type File . File, /// Represents a parameter of type MultiFile . MultiFile, } /// Provides all installed algorithms data public interface AlgoRegistry { /// Checks existence of an algorithm. bool Exists(string name); /// Checks existence of an algorithm. bool Exists(string name, AlgoKind algoKind); /// Returns an algorithm type by it is name. AlgoType Get(string name); /// Returns an algorithm type by it is name and kind. AlgoType Get(string name, AlgoKind algoKind); /// Returns number of specific kind of installed algorithms. int GetCount(AlgoKind algoKind); /// Installs an algo file from provided file path. InstallationResult Install(string filePath); /// Installs an algo file from provided URI. InstallationResult Install(Uri uri); /// Installs an algo file from provided URI asynchrounsly. InstallationOperation InstallAsync(string filePath); /// Installs an algo file from provided URI asynchrounsly. InstallationOperation InstallAsync(string filePath, Action callback); /// Installs an algo file from provided URI asynchrounsly. InstallationOperation InstallAsync(Uri uri); /// Installs an algo file from provided URI asynchrounsly. InstallationOperation InstallAsync(Uri uri, Action callback); /// Gets number of installed algorithms. int Count {get;} /// Gets the list of all installed indicators. IReadonlyList Indicators {get;} /// Gets the list of all installed plugins. IReadonlyList Plugins {get;} /// Gets the list of all installed robots. IReadonlyList Robots {get;} /// Occurs when an algorithm is changed. event Action AlgoTypeChanged; /// Occurs when an algorithm is deleted. event Action AlgoTypeDeleted; /// Occurs when a new algorithm is installed. event Action AlgoTypeInstalled; } /// Base type for representing an algorithm. public interface AlgoType { /// Gets algorithm kind. AlgoKind AlgoKind {get;} /// Gets algorithm name. string Name {get;} /// Gets algorithm project file ".csproj" path if it has source code, otherwise null. string ProjectFilePath {get;} } /// Provides data for Algo type changed event. public class AlgoTypeChangedEventArgs : AlgoTypeEventArgs { } /// Provides data for Algo type deleted event. public class AlgoTypeDeletedEventArgs : AlgoTypeEventArgs { } /// Base structure that provides data for Algo registry events. public abstract class AlgoTypeEventArgs { /// Algo Type Name public string AlgoTypeName {get;} } /// Provides data for Algo type installed event. public class AlgoTypeInstalledEventArgs : AlgoTypeEventArgs { } /// Represents the application. public interface Application { /// Gets the color theme. ColorTheme ColorTheme {get;} /// Gets application draggables. ApplicationDraggables Draggables {get;} /// Gets current drawing color. Color DrawingColor {get;} /// Gets the environment type. EnvironmentType EnvironmentType {get;} /// Gets the current language. Language Language {get;} /// Gets user time offset. TimeSpan UserTimeOffset {get;} /// Gets the version. Version Version {get;} /// Occurs when color theme has changed. event Action ColorThemeChanged; /// Occurs when DrawingColor has changed. event Action DrawingColorChanged; /// Occurs when Language has changed. event Action LanguageChanged; /// Occurs when user time offset has changed. event Action UserTimeOffsetChanged; } /// Represents a draggable box that can host a control and shown over application. public interface ApplicationDraggable { /// Get / set the content control inside the draggable. ControlBase Child {get; set;} /// Get unique ID of the Draggable. string Id {get;} /// Get / set visibility of draggable. bool IsVisible {get; set;} /// Get / set move grip visibility (default: true). bool ShowGrip {get; set;} /// Get / set X coordinate (default: 0). double X {get; set;} /// Get / set Y coordinate (default: 0). double Y {get; set;} /// Occurs when the draggable's location is changed. event Action LocationChanged; } /// Provides data for LocationChanged event of ApplicationDraggable. public class ApplicationDraggableLocationChangedEventArgs { /// Gets the draggable. public ApplicationDraggable Draggable {get;} } /// Represents collection of application draggables. public interface ApplicationDraggables { /// Adds a draggable to application. ApplicationDraggable Add(); /// Removes a draggable from application. void Remove(ApplicationDraggable draggable); /// Gets count of draggables. int Count {get;} } /// Represents the active symbol panel. public interface Asp { /// Adds a new tab to active symbol panel. AspTab AddTab(string title); /// Removes a tab from active symbol panel. bool RemoveTab(string id); /// Removes a tab from active symbol panel. bool RemoveTab(AspTab tab); /// Symbol tab in active symbol panel. AspSymbolTab SymbolTab {get;} } /// Represents an active symbol panel block. public interface AspBlock { /// Get / set content of current block. ControlBase Child {get; set;} /// Returns detached window properties. DetachedWindow DetachedWindow {get;} /// Get / set height of current block (default is 200). double Height {get; set;} /// Returns unique ID of the current block. string Id {get;} /// Get index of current block. int Index {get; set;} /// Get / set block attached / detached state. bool IsAttached {get; set;} /// Get / set block detachability, if True user can attach or detach the block. bool IsDetachable {get; set;} /// Get expanded state of current block. bool IsExpanded {get; set;} /// Returns title of the current block. string Title {get;} /// Occurs when block attached. event Action Attached; /// Occurs when block is detached. event Action Detached; /// Occurs when block is updated. event Action Updated; } /// Provides data for plugin ASP block attached event. public class AspBlockAttachedEventArgs { /// Attached block. public AspBlock AspBlock {get;} } /// Provides data for plugin ASP block detached event. public class AspBlockDetachedEventArgs { /// Detached block. public AspBlock AspBlock {get;} } /// Provides data for plugin ASP block updated event. public class AspBlockUpdatedEventArgs { /// Updated block. public AspBlock AspBlock {get;} } /// Provides data for active symbol panel symbol changed event. public class AspSymbolChangedEventArgs { /// New symbol of active symbol panel. public Symbol NewSymbol {get;} /// Old symbol of active symbol panel. public Symbol OldSymbol {get;} } /// Active symbol panel tab. public interface AspSymbolTab { /// Adds a new section block to active symbol panel. AspBlock AddBlock(string title); /// Removes a section block from active symbol panel. bool RemoveBlock(string id); /// Removes a section block from active symbol panel. bool RemoveBlock(AspBlock block); /// Current symbol of Active symbol panel. Symbol Symbol {get;} /// Occurs when active symbol panel selected symbol changes. event Action SymbolChanged; } /// Represents an active symbol panel tab. public interface AspTab { /// Get / set content of current tab. ControlBase Child {get; set;} /// Returns unique ID of the current tab. string Id {get;} /// Get / set index of current tab (Must be greater than zero). int Index {get; set;} /// Get / set selected state of current tab. bool IsSelected {get; set;} /// Returns title of the current tab. string Title {get;} /// Occurs after tab IsSelected value change. event Action IsSelectedChanged; } /// Provides data for plugin ASP tab IsSelectedChanged event. public class AspTabIsSelectedChangedEventArgs { /// ASP tab. public AspTab AspTab {get;} } /// The asset represents a currency. public interface Asset { /// Converts value to another asset. double Convert(Asset to, double value); /// Converts value to another asset. double Convert(string to, double value); /// Number of asset digits int Digits {get;} /// The asset Name string Name {get;} } /// Represents the list of all the assets with the asset names as string values. public interface Assets { /// Defines if the specific asset exists. bool Exists(string assetName); /// Gets the asset. Asset GetAsset(string assetName); /// Get multiple assets on a single call. Asset[] GetAssets(string[] assetNames); /// Gets the total number of the assets. int Count {get;} /// Gets the desired asset. string Item {get;} } /// Provides methods and events to manage and monitor backtesting processes. public interface Backtesting { /// Starts the backtesting process. BacktestingProcess Start(RobotType robotType, string symbolName, TimeFrame timeFrame, BacktestingSettings settings, object[] parameterValues); /// Provides access to backtesting data sources. BacktestingDataSources DataSources {get;} /// Occurs when the backtesting process is completed. event Action Completed; /// Occurs when the backtesting progress changes. event Action ProgressChanged; } /// Represents an OHLCV bar. public sealed struct BacktestingBar : ValueType { /// Represents an OHLCV bar. public BacktestingBar(DateTime Time, double Open, double High, double Low, double Close, long Volume); /// Close Price public double Close {get; set;} /// High Price public double High {get; set;} /// Low Price public double Low {get; set;} /// Open Price public double Open {get; set;} /// Open Time public DateTime Time {get; set;} /// Volume Amount public long Volume {get; set;} } /// Represents a collection of backtesting bars data. public class BacktestingBarsData { /// Creates a new instance of BacktestingBarsData with passed data. public BacktestingBarsData(IEnumerable data); } /// Provides data for the backtesting completed event. public class BacktestingCompletedEventArgs { /// Gets the HTML report of the backtesting results. public string HtmlReport {get;} /// Gets the JSON report of the backtesting results. public string JsonReport {get;} /// Gets the backtesting process that has completed. public BacktestingProcess Process {get;} } /// Base type for backtesting data used for backtesting data source. public interface BacktestingData { } /// Specifies the data mode used for backtesting. public enum BacktestingDataMode { /// Tick data mode. Ticks, /// One-minute data mode. M1, /// One-minute CSV data mode. M1Csv, /// Open prices data mode. OpenPrices, /// Tick data from a CSV file. TickCsv, } /// Represents a backtesting data request for a backtesting data source. public interface BacktestingDataRequest { /// Completes current request. void Complete(BacktestingData data); /// Notifies current request failure if something went wrong. void Fail(string errorMessage); /// Gets request data type. BacktestingDataSourceDataType DataType {get;} /// Gets request end time. DateTime EndTime {get;} /// Gets request price data source Id (Symbol and TimeFrame). PriceDataSourceId PriceDataSourceId {get;} /// Gets request start time. DateTime StartTime {get;} /// Gets current status of request. BacktestingDataRequestStatus Status {get;} /// Occurs when request status is changed. event Action StatusChanged; } /// Specifies the different status of a backtesting data request. public enum BacktestingDataRequestStatus { /// Request is in progress. InProgress, /// Request is failed by plugin. Failed, /// Request is completed by plugin. Completed, /// Request is cancelled. Cancelled, } /// Provides data for the backtesting data request status changed event. public class BacktestingDataRequestStatusChangedEventArgs { /// Gets data request. public BacktestingDataRequest DataRequest {get;} } /// Represents a backtesting data source. public interface BacktestingDataSource { /// Clears cached price data of current data source if not being used. bool ClearCache(); /// Gets unique name of backtesting data source. string Name {get;} /// Gets / sets if current backtesting data source can be used only for owner plugin custom TimeFrames or for both owner plugin custom TimeFrames and built-in TimeFrames. If True current source will only appear if backtesting TimeFrame is owner plugin created custom TimeFrame. bool SupportOnlyOwnCustomTimeFrames {get; set;} } /// Specifies the different data types for backtesting data source. public enum BacktestingDataSourceDataType { /// Tick data type. Tick, /// Minute OHLCV open prices. M1OpenPrices, /// TimeFrame OHLCV open prices. OpenPrices, } /// Provides data for the backtesting data source min / max time handler. public class BacktestingDataSourceMinMaxTimeArgs { /// Gets data type for the min / max time request. public BacktestingDataSourceDataType DataType {get;} /// Gets price data source Id for the min / max time request. public PriceDataSourceId PriceDataSourceId {get;} } /// Represents options of a backtesting data source, used for creating new data source. public class BacktestingDataSourceOptions { /// Represents options of a backtesting data source, used for creating new data source. public BacktestingDataSourceOptions(BacktestingDataSourceDataType SupportedDataTypes, Func MinMaxTimeHandler, Action DataRequestHandler); public BacktestingDataSourceOptions(BacktestingDataSourceOptions original); /// Handler function for handling data requests. public Action DataRequestHandler {get; set;} /// Handler function for getting minimum and maximum time. public Func MinMaxTimeHandler {get; set;} /// Supported data types (ex: BacktestingDataSourceDateType.Tick | BacktestingDataSourceDateType.M1OpenPrices) public BacktestingDataSourceDataType SupportedDataTypes {get; set;} } /// Provides access to backtesting data sources. public interface BacktestingDataSources { /// Adds a new backtesting data source. BacktestingDataSource Add(string name, BacktestingDataSourceOptions options); /// Removes a previously added backtesting data source. bool Remove(BacktestingDataSource dataSource); /// Removes all previously added backtesting data sources that are not being used. void RemoveAllUnused(); } /// Specifies the error that stopped a backtesting process, None if there was no error. public enum BacktestingError { /// %DOCUMENTATION% None, /// %DOCUMENTATION% Other, /// %DOCUMENTATION% Net4IsNotSupported, /// %DOCUMENTATION% NoConnection, /// %DOCUMENTATION% NoHistoricalData, /// %DOCUMENTATION% NotSupported, /// %DOCUMENTATION% InvalidSettings, } /// Represents minimum and maximum time of available data for a TimeFrame Symbol on a back testing data source. public sealed struct BacktestingMinMaxTime : ValueType { /// Represents minimum and maximum time of available data for a TimeFrame Symbol on a back testing data source. public BacktestingMinMaxTime(DateTime MinTime, DateTime MaxTime); /// Maximum Time public DateTime MaxTime {get; set;} /// Minimum Time public DateTime MinTime {get; set;} } /// Represents a backtesting process with methods and properties to monitor its status and results. public interface BacktestingProcess { /// Terminates the backtesting process. void Terminate(); /// Gets the error information if the backtesting process failed. BacktestingError BacktestingError {get;} /// Gets the HTML report of the backtesting results. Returns null if the backtesting is not finished or an error occurred. string HtmlReport {get;} /// Gets a value indicating whether the backtesting process is completed. bool IsCompleted {get;} /// Gets the JSON report of the backtesting results. Returns null if the backtesting is not finished or an error occurred. string JsonReport {get;} /// Gets the Monte Carlo simulation result as JSON, which is the same snapshot that is written to the output file of the MonteCarlo settings. Returns null when no Monte Carlo simulation was configured, when the backtesting is not finished, when the backtest produced no trades, or when an error occurred. string MonteCarloJsonReport {get;} /// Occurs when the backtesting process is completed. event Action Completed; /// Occurs when the backtesting progress changes. event Action ProgressChanged; } /// Provides data for the backtesting progress changed event. public class BacktestingProgressChangedEventArgs { /// Gets the description of the current operation. public string Operation {get;} /// Gets the backtesting process that reported progress. public BacktestingProcess Process {get;} /// Gets the progress percentage of the backtesting process. public double Progress {get;} } /// Represents settings for configuring the backtesting process. public class BacktestingSettings { /// Represents settings for configuring the backtesting process. public BacktestingSettings(); /// Gets or sets a value that indicates whether the commission type and value of the backtested symbol are applied automatically. When it is set to true the Commission and CommissionType properties are ignored. The default value is false. public bool ApplyCommissionAutomatically {get; set;} /// Gets or sets the initial balance for the backtesting. public double Balance {get; set;} /// Gets or sets the commission value, it is interpreted based on the CommissionType property value. It is ignored when ApplyCommissionAutomatically is set to true. The default value is 0. public double Commission {get; set;} /// Gets or sets the commission type that defines how the Commission property value is interpreted. It is ignored when ApplyCommissionAutomatically is set to true. The default value is SymbolCommissionType.UsdPerMillionUsdVolume. public SymbolCommissionType CommissionType {get; set;} /// Gets or sets the path to the data file used for backtesting. public string DataFile {get; set;} /// Gets or sets the data mode used for backtesting. public BacktestingDataMode DataMode {get; set;} /// Gets or sets the end time in UTC for the backtesting period. public DateTime EndTimeUtc {get; set;} /// Gets or sets the optional Monte Carlo simulation that runs on the completed backtest. When it is null, the default, no Monte Carlo simulation is performed and the backtest behaves exactly as before. When it is set, the simulation runs on the completed backtest and its result is written to the configured output file. public MonteCarloSettings MonteCarlo {get; set;} /// Gets or sets a value indicating whether historical data for additional symbols is downloaded to convert profit and margin into the account deposit currency precisely. When true, real historical exchange rates of the additional symbols are used; when false, the default, approximated rates are used. Enabling it can increase the run time and the amount of downloaded data. public bool PreciseConversion {get; set;} /// Gets or sets the spread in pips. public double SpreadPips {get; set;} /// Gets or sets the start time in UTC for the backtesting period. public DateTime StartTimeUtc {get; set;} [Obsolete("Use Commission with CommissionType instead")] public double CommissionUsdPerMillionUsd {get; set;} } /// Represents a tick, used for backtesting data source tick data. public sealed struct BacktestingTick : ValueType { /// Represents a tick, used for backtesting data source tick data. public BacktestingTick(DateTime Time, double Bid, double Ask); /// Ask Price public double Ask {get; set;} /// Bid Price public double Bid {get; set;} /// Timestamp public DateTime Time {get; set;} } /// Represents a collection of backtesting tick data. public class BacktestingTickData { /// Creates a new instance of BacktestingTickData with passed data. public BacktestingTickData(IEnumerable data); } /// Represents the Bar object. public sealed struct Bar : ValueType { /// Gets the Close price. public double Close {get;} /// Gets the High price. public double High {get;} /// Gets the Low price. public double Low {get;} /// Gets the open price. public double Open {get;} /// Gets the bar open time. public DateTime OpenTime {get;} /// Gets the Tick volume. public long TickVolume {get;} } /// Provides data for the event when a bar closed on the chart. public class BarClosedEventArgs { /// Gets the bar data. public Bars Bars {get;} } /// Provides data for the event when a new bar opened on the chart. public class BarOpenedEventArgs { /// Gets the bar data. public Bars Bars {get;} } /// This attribute is used for marking an indicator IndicatorBars property as a bar Output. public sealed class BarOutputAttribute : Attribute { /// Initializes a new instance of the BarOutputAttribute and sets the name. public BarOutputAttribute(string name); /// Gets or sets the color of the area chart. public string AreaChartFillColor {get; set;} /// Gets or sets the color of the bear candle fill. public string BearFillColor {get; set;} /// Gets or sets the color of the bear candle or bar outline. public string BearOutlineColor {get; set;} /// Gets or sets the color of the bull candle fill. public string BullFillColor {get; set;} /// Gets or sets the color of the bull candle or bar outline. public string BullOutlineColor {get; set;} /// Gets or sets the type of the chart - Bar, Candlesticks, Line or Dots chart. public ChartType ChartType {get; set;} /// Gets or sets description for output that will be shown in UI. public string Description {get; set;} /// Gets or sets the color of the dot chart. public string DotChartColor {get; set;} /// Gets or sets if Output line color is customizable or not. public bool IsColorCustomizable {get; set;} /// Gets or sets if output last value should be visible or not in instance title (default: true). public bool IsLastValueVisibleInTitle {get; set;} /// Gets or sets default visibility of output. public bool IsVisible {get; set;} /// The output name public string Name {get;} /// Gets or sets the color of the tick volume bars. public string TickVolumeColor {get; set;} } /// Represents the Bars interface - the collection of Bar objects. public interface Bars { /// Returns a data series from current Bars based on the passed StandardSeriesType. DataSeries GetSeries(StandardSeriesType standardSeriesType); /// Returns the first available server bar open time. DateTime GetServerFirstBarOpenTime(); /// Gets the bar from the end of the collection. Bar Last(int index); /// Loads more historical bars. Method returns the number of loaded bars that were added to the beginning of the collection. int LoadMoreHistory(); /// Loads more historical bars asynchronously. void LoadMoreHistoryAsync(); /// Loads more historical bars asynchronously. void LoadMoreHistoryAsync(Action callback); /// Gets the average prices data (Open + High + Low + Close) / 4. DataSeries AveragePrices {get;} /// Gets the Close price bars data. DataSeries ClosePrices {get;} /// Gets the number of bars. int Count {get;} /// Gets the High price bars data. DataSeries HighPrices {get;} /// Returns a bar based on it is index Bar Item {get;} /// Gets the last bar in the chart. Bar LastBar {get;} /// Gets the Low price bars data. DataSeries LowPrices {get;} /// Gets the Median prices data (High + Low) / 2. DataSeries MedianPrices {get;} /// Gets the Open price bars data. DataSeries OpenPrices {get;} /// Gets the open bar time data. TimeSeries OpenTimes {get;} /// Gets the symbol name. string SymbolName {get;} /// Gets the Tick volumes data. DataSeries TickVolumes {get;} /// Get the timeframe. TimeFrame TimeFrame {get;} /// Gets the Typical prices data (High + Low + Close) / 3. DataSeries TypicalPrices {get;} /// Gets the Weighted prices data (High + Low + 2 * Close) / 4. DataSeries WeightedPrices {get;} /// Occurs when a new bar is opened; the event is called for the previous (closed) bar. event Action BarClosed; /// Occurs when the last bar is closed and a new bar is opened. event Action BarOpened; /// Occurs when more history is loaded due to chart scroll on the left or due to API call. event Action HistoryLoaded; /// Occurs when bars are refreshed due to reconnect. event Action Reloaded; /// Occurs when a new Tick arrives. event Action Tick; /// Returns a data series from current Bars based on passed PriceType. [Obsolete("Use GetSeries(StandardSeriesType) instead.")] DataSeries GetPrices(PriceType priceType); } /// Provides data for the history loaded event. public class BarsHistoryLoadedEventArgs { /// Gets the bar objects data. public Bars Bars {get;} /// Gets the number of bars. public int Count {get;} } /// Provides data for the tick bar event. public class BarsTickEventArgs { /// Gets the Bar objects data. public Bars Bars {get;} /// Defines if current tick is the first tick of a new bar. public bool IsBarOpened {get;} } /// Represents the border. public class Border : ControlBase { /// Initializes a new instance of the Border class. public Border(); /// Gets or sets the color of the border background. Check the Color class for the ARGB (alpha, red, green, blue) color values, or use the strings Color.Red, Color.FromName("Red"), Color.FromArgb(255, 0, 0), Color.FromHex("#ff0000"), "Red", "#ff0000". public Color BackgroundColor {get; set;} /// Gets or sets the border line color. Check the Color class for the ARGB (alpha, red, green, blue) color values, or use the strings Color.Red, Color.FromName("Red"), Color.FromArgb(255, 0, 0), Color.FromHex("#ff0000"), "Red", "#ff0000". public Color BorderColor {get; set;} /// Gets or sets the border thickness. Property value can be set using Thickness, number, or a string new Thickness(5), new Thickness(1, 2, 3, 4), 5, "5", "1 2 3 4". public Thickness BorderThickness {get; set;} /// Gets or sets the border child object. public ControlBase Child {get; set;} /// Gets or sets the border corner radius. Property value can be set using CornerRadius, number, or a string: new CornerRadius(5), new CornerRadius(1, 2, 3, 4). public CornerRadius CornerRadius {get; set;} /// Gets or sets the border padding thickness. Property value can be set using Thickness, number, or a string new Thickness(5), new Thickness(1, 2, 3, 4), 5, "5", "1 2 3 4". public Thickness Padding {get; set;} } /// Represents the button. public class Button : Control { /// Initializes a new instance of the Button class. public Button(); /// Gets or sets the border line color. Check the Color class for the ARGB (alpha, red, green, blue) color values, or use the strings Color.Red, Color.FromName("Red"), Color.FromArgb(255, 0, 0), Color.FromHex("#ff0000"), "Red", "#ff0000". public Color BorderColor {get; set;} /// Gets or sets the border thickness. public Thickness BorderThickness {get; set;} /// Gets or sets the content. public ControlBase Content {get; set;} /// Gets or sets the border corner radius. Property value can be set using CornerRadius, number, or a string: new CornerRadius(5), new CornerRadius(1, 2, 3, 4). public CornerRadius CornerRadius {get; set;} /// Gets or sets the text. public string Text {get; set;} /// Occurs when the button is clicked. public event Action Click; } /// Represents the button click event data. public class ButtonClickEventArgs { /// Gets the button data. public Button Button {get;} } /// Defines an area to position child elements by coordinates relative to the Canvas area. public class Canvas : Panel { /// Initializes a new instance of the Canvas class. public Canvas(); } /// Specifies the case of characters typed manually into a TextBox control. public enum CharacterCasing { /// Characters typed into a TextBox are not converted. Normal, /// Characters typed into a TextBox are converted to lowercase. Lower, /// Characters typed into a TextBox are converted to uppercase. Upper, } /// Represents the Chart Interface. public interface Chart { /// Adds an hotkey to the chart that will call the handler when pressed bool AddHotkey(Action hotkeyHandler, Key key, ModifierKeys modifiers); /// Adds an hotkey to the chart that will call the handler when pressed bool AddHotkey(Action hotkeyHandler, string hotkey); /// Adds an hotkey to the chart that will call the handler when pressed bool AddHotkey(Action hotkeyHandler, Key key, ModifierKeys modifiers); /// Adds an hotkey to the chart that will call the handler when pressed bool AddHotkey(Action hotkeyHandler, string hotkey); /// Draws a risk reward. ChartRiskReward DrawRiskReward(string name, int barIndex1, int barIndex2, double entryPrice, OrderType orderType, TradeType tradeType, ChartRiskRewardType type); /// Draws a risk reward. ChartRiskReward DrawRiskReward(string name, DateTime time1, DateTime time2, double entryPrice, OrderType orderType, TradeType tradeType, ChartRiskRewardType type); /// Resets the color of the bar to the default. void ResetBarColor(long barIndex); /// Resets the colors of all the bars. void ResetBarColors(); /// Resets the color of the tick volume line to the default at the specified bar index. void ResetTickVolumeColor(long barIndex); /// Resets the color of all the tick volume bars. void ResetTickVolumeColors(); /// Scrolls the chart by the X-axis for the specified number of bars. void ScrollXBy(int bars); /// Scrolls the chart by the X-axis to the bar with the specified index. void ScrollXTo(int barIndex); /// Scrolls the chart by the X-axis to the specified date time. void ScrollXTo(DateTime time); /// Sets the color of the bar at the specified bar index. It will change the bar fill color and the outline color. void SetBarColor(long barIndex, Color color); /// Sets the fill color of the bar at the specified bar index. void SetBarFillColor(long barIndex, Color color); /// Sets the outline color of the bar at the specified bar index. void SetBarOutlineColor(long barIndex, Color color); /// Sets the color of tick volume line at the specified bar index. void SetTickVolumeColor(long barIndex, Color color); /// Takes a chartshot from the chart that indicator / cBot runs on. byte[] TakeChartshot(); /// Changes the time frame on the chart. bool TryChangeTimeFrame(TimeFrame timeFrame); /// Changes the time frame and the symbol on the chart. bool TryChangeTimeFrameAndSymbol(TimeFrame timeFrame, string symbolName); /// Gets the chart Bar objects. Bars Bars {get;} /// Gets the total number of the bars on the chart. int BarsTotal {get;} /// Gets or sets the type of the chart - Bar, Candlesticks, Line or Dots chart. ChartType ChartType {get; set;} /// Gets the chart color settings. ChartColorSettings ColorSettings {get;} /// Gets the chart display settings. ChartDisplaySettings DisplaySettings {get;} /// Gets the index of the first visible bar on the chart. int FirstVisibleBarIndex {get;} /// Gets the unique Id of Chart. Guid Id {get;} /// Gets the read only list of the indicator areas. IReadonlyList IndicatorAreas {get;} /// Gets the ChartIndicators operating on a chart. ChartIndicators Indicators {get;} /// True if Chart is active otherwise False bool IsActive {get;} /// Gets or sets the value indicating whether the price scale of the chart main area is inverted, so the higher prices are displayed lower. BottomY is still the lowest visible price and TopY the highest. In the silent backtesting, the CLI and the cloud the value is only stored and has no visual effect. bool IsPriceScaleInverted {get; set;} /// Gets or sets the value indicating whether the price to bar ratio of the chart main area is locked. While locked, zooming keeps the same price distance per bar, the auto scale of the main area is disabled and the price scale mode is Regular. Locking switches Percent, IndexedTo100 and Logarithmic modes to Regular. In the silent backtesting, the CLI and the cloud the value is only stored and has no visual effect. bool IsPriceToBarRatioLocked {get; set;} /// Gets or sets the value indicating whether the auto scale of the chart main area fits only the bars, ignoring the overlay indicator outputs and the chart objects. In the silent backtesting, the CLI and the cloud the value is only stored and has no visual effect. bool IsScalePriceChartOnly {get; set;} /// Gets or sets the value indicating whether the scrolling is enabled or disabled for the chart. If disabled, then the chart is not affected by scrolling, dragging, scaling, or pressing any keyboard keys, but is still affected by resizing, zooming, and API calls for changing X or Y-axis positions on the chart. bool IsScrollingEnabled {get; set;} /// True if Chart is visible otherwise False. bool IsVisible {get;} /// Gets the index of the last visible bar on the chart. int LastVisibleBarIndex {get;} /// Gets or sets the maximum width of a single bar (the candle body) in pixels. When the chart is zoomed in, the bar body is never drawn wider than this value and the extra horizontal space is added to the gap between the bars. This is useful for footprint-style rendering where additional text must fit next to each bar. int MaxBarWidth {get; set;} /// Gets the maximum number of the visible bars on the chart. int MaxVisibleBars {get;} /// Gets or sets the side of the chart where the price axis of the main area and of all the indicator areas is displayed. In the silent backtesting, the CLI and the cloud the value is only stored and has no visual effect. ChartPriceAxisPosition PriceAxisPosition {get; set;} /// Gets the base price used by the Percent and IndexedTo100 price scale modes, which is the close price of the first visible bar. Returns NaN in the Regular and Logarithmic modes, and in the silent backtesting, the CLI and the cloud. double PriceScaleBasePrice {get;} /// Gets or sets the price scale mode of the chart main area. Percent and IndexedTo100 enable the auto scale of the main area. While the price to bar ratio is locked only Regular can be set, and setting any other mode is ignored. Logarithmic works for every price, zero and negative prices are drawn on a logarithmic scale mirrored below zero. The Y-axis values used by the API stay in price units in every mode. In the silent backtesting, the CLI and the cloud the value is only stored and has no visual effect. ChartPriceScaleMode PriceScaleMode {get; set;} /// Gets or sets the price to bar ratio of the chart main area: the price distance displayed per one bar width. Used while the price to bar ratio is locked. Values that are not greater than zero, NaN or infinite are ignored. Setting this value does not lock the ratio. double PriceToBarRatio {get; set;} /// Gets the ChartRobots operating on a chart. ChartRobots Robots {get;} /// Gets the chart symbol. Symbol Symbol {get;} /// Gets the symbol name. string SymbolName {get;} /// Gets the time frame of the chart from 1 minute to 1 month. TimeFrame TimeFrame {get;} /// Gets or sets the zoom percent values. Valid values are from 5 to 500 with a step of 5, as can be seen on UI in the charts Zoom control. int ZoomLevel {get; set;} /// Occurs when chart is activated event Action Activated; /// Occurs when the chart type changes. event Action ChartTypeChanged; /// Occurs when the chart color settings change. event Action ColorsChanged; /// Occurs when chart is deactivated event Action Deactivated; /// Occurs when one or several charts display settings change. event Action DisplaySettingsChanged; /// Occurs when the indicator area is added. event Action IndicatorAreaAdded; /// Occurs when the indicator area is removed. event Action IndicatorAreaRemoved; /// Occurs when a keyboard key pressed while the mouse cursor is over the chart event Action KeyDown; /// Occurs when chart visibility changes. event Action VisibilityChanged; /// Occurs when the chart zoom options change. event Action ZoomChanged; [Obsolete("Use ZoomLevel instead")] int Zoom {get; set;} [Obsolete("Use Bars instead")] MarketSeries MarketSeries {get;} } /// Provides data for chart activated/deactivated events public class ChartActivationChangedEventArgs { /// The chart that event belongs to public Chart Chart {get;} } /// Represents the Andrew's Pitchfork chart object. A tool that helps to identify possible support and resistance levels with the three parallel lines. public interface ChartAndrewsPitchfork { /// Calculates Y-axis value corresponding the specified bar index. double CalculateY(int barIndex); /// Calculates Y-axis value corresponding the specified time value. double CalculateY(DateTime time); /// Gets or sets the chart object lines color. Color Color {get; set;} /// Gets or sets the chart object lines style. LineStyle LineStyle {get; set;} /// Gets or sets the chart object lines thickness. int Thickness {get; set;} /// Gets or sets the time value for the Andrew's Pitchfork point 1. DateTime Time1 {get; set;} /// Gets or sets the time value for the Andrew's Pitchfork point 2. DateTime Time2 {get; set;} /// Gets or sets the time value for the Andrew's Pitchfork point 3. DateTime Time3 {get; set;} /// Gets or sets the Y-axis value for the Andrew's Pitchfork point 1. double Y1 {get; set;} /// Gets or sets the Y-axis value for the Andrew's Pitchfork point 2. double Y2 {get; set;} /// Gets or sets the Y-axis value for the Andrew's Pitchfork point 3. double Y3 {get; set;} } /// The Chart Area Interface. public interface ChartArea { /// Adds a chart control from the Control Base to the main chart area or to the indicator area. void AddControl(ControlBase control); /// Adds a chart control to chart / indicator area on absolute bar index and price (x,y) coordinates. void AddControl(ControlBase control, int barIndex, double y); /// Adds a chart control to chart / indicator area on absolute time and price (x,y) coordinates. void AddControl(ControlBase control, DateTime time, double y); /// Adds a chart control to chart / indicator area on absolute time (x) coordinate. void AddControl(ControlBase control, DateTime time); /// Adds a chart control to chart / indicator area on absolute bar index (x) coordinate. void AddControl(ControlBase control, int barIndex); /// Adds a chart control to chart / indicator area on absolute price (y) coordinate. void AddControl(ControlBase control, double y); /// Converts Bar Index to X coordinate. double BarIndexToX(double barIndex); /// Draws an Andrew's pitchfork. ChartAndrewsPitchfork DrawAndrewsPitchfork(string name, DateTime time1, double y1, DateTime time2, double y2, DateTime time3, double y3, Color color); /// Draws an Andrew's pitchfork. ChartAndrewsPitchfork DrawAndrewsPitchfork(string name, DateTime time1, double y1, DateTime time2, double y2, DateTime time3, double y3, Color color, int thickness); /// Draws an Andrew's pitchfork. ChartAndrewsPitchfork DrawAndrewsPitchfork(string name, DateTime time1, double y1, DateTime time2, double y2, DateTime time3, double y3, Color color, int thickness, LineStyle lineStyle); /// Draws an Andrew's pitchfork. ChartAndrewsPitchfork DrawAndrewsPitchfork(string name, int barIndex1, double y1, int barIndex2, double y2, int barIndex3, double y3, Color color); /// Draws an Andrews pitchfork. ChartAndrewsPitchfork DrawAndrewsPitchfork(string name, int barIndex1, double y1, int barIndex2, double y2, int barIndex3, double y3, Color color, int thickness); /// Draws an Andrew's pitchfork. ChartAndrewsPitchfork DrawAndrewsPitchfork(string name, int barIndex1, double y1, int barIndex2, double y2, int barIndex3, double y3, Color color, int thickness, LineStyle lineStyle); /// Draws an arrow. ChartArrow DrawArrow(string name, DateTime time1, double y1, DateTime time2, double y2, Color color); /// Draws an arrow. ChartArrow DrawArrow(string name, DateTime time1, double y1, DateTime time2, double y2, Color color, int thickness); /// Draws an arrow. ChartArrow DrawArrow(string name, DateTime time1, double y1, DateTime time2, double y2, Color color, int thickness, LineStyle lineStyle); /// Draws an arrow. ChartArrow DrawArrow(string name, int barIndex1, double y1, int barIndex2, double y2, Color color); /// Draws an arrow. ChartArrow DrawArrow(string name, int barIndex1, double y1, int barIndex2, double y2, Color color, int thickness); /// Draws an arrow. ChartArrow DrawArrow(string name, int barIndex1, double y1, int barIndex2, double y2, Color color, int thickness, LineStyle lineStyle); /// Draws an Elliott Correction Wave (A-B-C). ChartElliottCorrection DrawElliottCorrection(string name, ChartPoint origin, ChartPoint waveA, ChartPoint waveB, ChartPoint waveC, Color color); /// Draws an Elliott Correction Wave (A-B-C). ChartElliottCorrection DrawElliottCorrection(string name, ChartPoint origin, ChartPoint waveA, ChartPoint waveB, ChartPoint waveC, Color color, int thickness); /// Draws an Elliott Correction Wave (A-B-C). ChartElliottCorrection DrawElliottCorrection(string name, ChartPoint origin, ChartPoint waveA, ChartPoint waveB, ChartPoint waveC, Color color, int thickness, LineStyle lineStyle); /// Draws an Elliott Double Combo Wave (W-X-Y). ChartElliottDoubleCombo DrawElliottDoubleCombo(string name, ChartPoint origin, ChartPoint waveW, ChartPoint waveX, ChartPoint waveY, Color color); /// Draws an Elliott Double Combo Wave (W-X-Y). ChartElliottDoubleCombo DrawElliottDoubleCombo(string name, ChartPoint origin, ChartPoint waveW, ChartPoint waveX, ChartPoint waveY, Color color, int thickness); /// Draws an Elliott Double Combo Wave (W-X-Y). ChartElliottDoubleCombo DrawElliottDoubleCombo(string name, ChartPoint origin, ChartPoint waveW, ChartPoint waveX, ChartPoint waveY, Color color, int thickness, LineStyle lineStyle); /// Draws an Elliott Impulse Wave (1-2-3-4-5). ChartElliottImpulse DrawElliottImpulse(string name, ChartPoint origin, ChartPoint wave1, ChartPoint wave2, ChartPoint wave3, ChartPoint wave4, ChartPoint wave5, Color color); /// Draws an Elliott Impulse Wave (1-2-3-4-5). ChartElliottImpulse DrawElliottImpulse(string name, ChartPoint origin, ChartPoint wave1, ChartPoint wave2, ChartPoint wave3, ChartPoint wave4, ChartPoint wave5, Color color, int thickness); /// Draws an Elliott Impulse Wave (1-2-3-4-5). ChartElliottImpulse DrawElliottImpulse(string name, ChartPoint origin, ChartPoint wave1, ChartPoint wave2, ChartPoint wave3, ChartPoint wave4, ChartPoint wave5, Color color, int thickness, LineStyle lineStyle); /// Draws an Elliott Triangle Wave (A-B-C-D-E). ChartElliottTriangle DrawElliottTriangle(string name, ChartPoint origin, ChartPoint waveA, ChartPoint waveB, ChartPoint waveC, ChartPoint waveD, ChartPoint waveE, Color color); /// Draws an Elliott Triangle Wave (A-B-C-D-E). ChartElliottTriangle DrawElliottTriangle(string name, ChartPoint origin, ChartPoint waveA, ChartPoint waveB, ChartPoint waveC, ChartPoint waveD, ChartPoint waveE, Color color, int thickness); /// Draws an Elliott Triangle Wave (A-B-C-D-E). ChartElliottTriangle DrawElliottTriangle(string name, ChartPoint origin, ChartPoint waveA, ChartPoint waveB, ChartPoint waveC, ChartPoint waveD, ChartPoint waveE, Color color, int thickness, LineStyle lineStyle); /// Draws an Elliott Triple Combo Wave (W-X-Y-X-Z). ChartElliottTripleCombo DrawElliottTripleCombo(string name, ChartPoint origin, ChartPoint waveW, ChartPoint waveX1, ChartPoint waveY, ChartPoint waveX2, ChartPoint waveZ, Color color); /// Draws an Elliott Triple Combo Wave (W-X-Y-X-Z). ChartElliottTripleCombo DrawElliottTripleCombo(string name, ChartPoint origin, ChartPoint waveW, ChartPoint waveX1, ChartPoint waveY, ChartPoint waveX2, ChartPoint waveZ, Color color, int thickness); /// Draws an Elliott Triple Combo Wave (W-X-Y-X-Z). ChartElliottTripleCombo DrawElliottTripleCombo(string name, ChartPoint origin, ChartPoint waveW, ChartPoint waveX1, ChartPoint waveY, ChartPoint waveX2, ChartPoint waveZ, Color color, int thickness, LineStyle lineStyle); /// Draws an ellipse. ChartEllipse DrawEllipse(string name, DateTime time1, double y1, DateTime time2, double y2, Color color); /// Draws an ellipse. ChartEllipse DrawEllipse(string name, DateTime time1, double y1, DateTime time2, double y2, Color color, int thickness); /// Draws an ellipse. ChartEllipse DrawEllipse(string name, DateTime time1, double y1, DateTime time2, double y2, Color color, int thickness, LineStyle lineStyle); /// Draws an ellipse. ChartEllipse DrawEllipse(string name, int barIndex1, double y1, int barIndex2, double y2, Color color); /// Draws an ellipse. ChartEllipse DrawEllipse(string name, int barIndex1, double y1, int barIndex2, double y2, Color color, int thickness); /// Draws an ellipse. ChartEllipse DrawEllipse(string name, int barIndex1, double y1, int barIndex2, double y2, Color color, int thickness, LineStyle lineStyle); /// Draws an equidistant channel. ChartEquidistantChannel DrawEquidistantChannel(string name, DateTime time1, double y1, DateTime time2, double y2, double channelHeight, Color color); /// Draws an equidistant channel. ChartEquidistantChannel DrawEquidistantChannel(string name, DateTime time1, double y1, DateTime time2, double y2, double channelHeight, Color color, int thickness); /// Draws an equidistant channel. ChartEquidistantChannel DrawEquidistantChannel(string name, DateTime time1, double y1, DateTime time2, double y2, double channelHeight, Color color, int thickness, LineStyle lineStyle); /// Draws an equidistant channel. ChartEquidistantChannel DrawEquidistantChannel(string name, int barIndex1, double y1, int barIndex2, double y2, double channelHeight, Color color); /// Draws an equidistant channel. ChartEquidistantChannel DrawEquidistantChannel(string name, int barIndex1, double y1, int barIndex2, double y2, double channelHeight, Color color, int thickness); /// Draws an equidistant channel. ChartEquidistantChannel DrawEquidistantChannel(string name, int barIndex1, double y1, int barIndex2, double y2, double channelHeight, Color color, int thickness, LineStyle lineStyle); /// Draws a Fibonacci arc. ChartFibonacciArc DrawFibonacciArc(string name, DateTime time1, double y1, DateTime time2, double y2, Color color); /// Draws a Fibonacci arc. ChartFibonacciArc DrawFibonacciArc(string name, DateTime time1, double y1, DateTime time2, double y2, Color color, int thickness); /// Draws a Fibonacci arc. ChartFibonacciArc DrawFibonacciArc(string name, DateTime time1, double y1, DateTime time2, double y2, Color color, int thickness, LineStyle lineStyle); /// Draws a Fibonacci arc. ChartFibonacciArc DrawFibonacciArc(string name, int barIndex1, double y1, int barIndex2, double y2, Color color); /// Draws a Fibonacci arc. ChartFibonacciArc DrawFibonacciArc(string name, int barIndex1, double y1, int barIndex2, double y2, Color color, int thickness); /// Draws a Fibonacci arc. ChartFibonacciArc DrawFibonacciArc(string name, int barIndex1, double y1, int barIndex2, double y2, Color color, int thickness, LineStyle lineStyle); /// Draws a Fibonacci expansion. ChartFibonacciExpansion DrawFibonacciExpansion(string name, DateTime time1, double y1, DateTime time2, double y2, DateTime time3, double y3, Color color); /// Draws a Fibonacci expansion. ChartFibonacciExpansion DrawFibonacciExpansion(string name, DateTime time1, double y1, DateTime time2, double y2, DateTime time3, double y3, Color color, int thickness); /// Draws a Fibonacci expansion. ChartFibonacciExpansion DrawFibonacciExpansion(string name, DateTime time1, double y1, DateTime time2, double y2, DateTime time3, double y3, Color color, int thickness, LineStyle lineStyle); /// Draws a Fibonacci expansion. ChartFibonacciExpansion DrawFibonacciExpansion(string name, int barIndex1, double y1, int barIndex2, double y2, int barIndex3, double y3, Color color); /// Draws a Fibonacci expansion. ChartFibonacciExpansion DrawFibonacciExpansion(string name, int barIndex1, double y1, int barIndex2, double y2, int barIndex3, double y3, Color color, int thickness); /// Draws a Fibonacci expansion. ChartFibonacciExpansion DrawFibonacciExpansion(string name, int barIndex1, double y1, int barIndex2, double y2, int barIndex3, double y3, Color color, int thickness, LineStyle lineStyle); /// Draws a Fibonacci fan. ChartFibonacciFan DrawFibonacciFan(string name, DateTime time1, double y1, DateTime time2, double y2, Color color); /// Draws a Fibonacci fan. ChartFibonacciFan DrawFibonacciFan(string name, DateTime time1, double y1, DateTime time2, double y2, Color color, int thickness); /// Draws a Fibonacci fan. ChartFibonacciFan DrawFibonacciFan(string name, DateTime time1, double y1, DateTime time2, double y2, Color color, int thickness, LineStyle lineStyle); /// Draws a Fibonacci fan. ChartFibonacciFan DrawFibonacciFan(string name, int barIndex1, double y1, int barIndex2, double y2, Color color); /// Draws a Fibonacci fan. ChartFibonacciFan DrawFibonacciFan(string name, int barIndex1, double y1, int barIndex2, double y2, Color color, int thickness); /// Draws a Fibonacci fan. ChartFibonacciFan DrawFibonacciFan(string name, int barIndex1, double y1, int barIndex2, double y2, Color color, int thickness, LineStyle lineStyle); /// Draws a Fibonacci retracement. ChartFibonacciRetracement DrawFibonacciRetracement(string name, DateTime time1, double y1, DateTime time2, double y2, Color color); /// Draws a Fibonacci retracement. ChartFibonacciRetracement DrawFibonacciRetracement(string name, DateTime time1, double y1, DateTime time2, double y2, Color color, int thickness); /// Draws a Fibonacci retracement. ChartFibonacciRetracement DrawFibonacciRetracement(string name, DateTime time1, double y1, DateTime time2, double y2, Color color, int thickness, LineStyle lineStyle); /// Draws a Fibonacci retracement. ChartFibonacciRetracement DrawFibonacciRetracement(string name, int barIndex1, double y1, int barIndex2, double y2, Color color); /// Draws a Fibonacci retracement. ChartFibonacciRetracement DrawFibonacciRetracement(string name, int barIndex1, double y1, int barIndex2, double y2, Color color, int thickness); /// Draws a Fibonacci retracement. ChartFibonacciRetracement DrawFibonacciRetracement(string name, int barIndex1, double y1, int barIndex2, double y2, Color color, int thickness, LineStyle lineStyle); /// Draws a Fibonacci timezones. ChartFibonacciTimezones DrawFibonacciTimezones(string name, DateTime time1, double y1, DateTime time2, double y2, Color color); /// Draws a Fibonacci timezones. ChartFibonacciTimezones DrawFibonacciTimezones(string name, DateTime time1, double y1, DateTime time2, double y2, Color color, int thickness); /// Draws a Fibonacci timezones. ChartFibonacciTimezones DrawFibonacciTimezones(string name, DateTime time1, double y1, DateTime time2, double y2, Color color, int thickness, LineStyle lineStyle); /// Draws a Fibonacci timezones. ChartFibonacciTimezones DrawFibonacciTimezones(string name, int barIndex1, double y1, int barIndex2, double y2, Color color); /// Draws a Fibonacci timezones. ChartFibonacciTimezones DrawFibonacciTimezones(string name, int barIndex1, double y1, int barIndex2, double y2, Color color, int thickness); /// Draws a Fibonacci timezones. ChartFibonacciTimezones DrawFibonacciTimezones(string name, int barIndex1, double y1, int barIndex2, double y2, Color color, int thickness, LineStyle lineStyle); /// Draws a Gann box. ChartGannBox DrawGannBox(string name, DateTime time1, double y1, DateTime time2, double y2, Color color); /// Draws a Gann box. ChartGannBox DrawGannBox(string name, DateTime time1, double y1, DateTime time2, double y2, Color color, int thickness); /// Draws a Gann box. ChartGannBox DrawGannBox(string name, DateTime time1, double y1, DateTime time2, double y2, Color color, int thickness, LineStyle lineStyle); /// Draws a Gann box. ChartGannBox DrawGannBox(string name, int barIndex1, double y1, int barIndex2, double y2, Color color); /// Draws a Gann box. ChartGannBox DrawGannBox(string name, int barIndex1, double y1, int barIndex2, double y2, Color color, int thickness); /// Draws a Gann box. ChartGannBox DrawGannBox(string name, int barIndex1, double y1, int barIndex2, double y2, Color color, int thickness, LineStyle lineStyle); /// Draws a Gann fan. ChartGannFan DrawGannFan(string name, DateTime time1, double y1, DateTime time2, double y2, Color color); /// Draws a Gann fan. ChartGannFan DrawGannFan(string name, DateTime time1, double y1, DateTime time2, double y2, Color color, int thickness); /// Draws a Gann fan. ChartGannFan DrawGannFan(string name, DateTime time1, double y1, DateTime time2, double y2, Color color, int thickness, LineStyle lineStyle); /// Draws a Gann fan. ChartGannFan DrawGannFan(string name, int barIndex1, double y1, int barIndex2, double y2, Color color); /// Draws a Gann fan. ChartGannFan DrawGannFan(string name, int barIndex1, double y1, int barIndex2, double y2, Color color, int thickness); /// Draws a Gann fan. ChartGannFan DrawGannFan(string name, int barIndex1, double y1, int barIndex2, double y2, Color color, int thickness, LineStyle lineStyle); /// Draws a Gann square. ChartGannSquare DrawGannSquare(string name, DateTime time1, double y1, DateTime time2, double y2, Color color); /// Draws a Gann square. ChartGannSquare DrawGannSquare(string name, DateTime time1, double y1, DateTime time2, double y2, Color color, int thickness); /// Draws a Gann square. ChartGannSquare DrawGannSquare(string name, DateTime time1, double y1, DateTime time2, double y2, Color color, int thickness, LineStyle lineStyle); /// Draws a Gann square. ChartGannSquare DrawGannSquare(string name, int barIndex1, double y1, int barIndex2, double y2, Color color); /// Draws a Gann square. ChartGannSquare DrawGannSquare(string name, int barIndex1, double y1, int barIndex2, double y2, Color color, int thickness); /// Draws a Gann square. ChartGannSquare DrawGannSquare(string name, int barIndex1, double y1, int barIndex2, double y2, Color color, int thickness, LineStyle lineStyle); /// Draws a Gann square fixed. ChartGannSquareFixed DrawGannSquareFixed(string name, DateTime time1, double y1, DateTime time2, double y2, Color color); /// Draws a Gann square fixed. ChartGannSquareFixed DrawGannSquareFixed(string name, DateTime time1, double y1, DateTime time2, double y2, Color color, int thickness); /// Draws a Gann square fixed. ChartGannSquareFixed DrawGannSquareFixed(string name, DateTime time1, double y1, DateTime time2, double y2, Color color, int thickness, LineStyle lineStyle); /// Draws a Gann square fixed. ChartGannSquareFixed DrawGannSquareFixed(string name, int barIndex1, double y1, int barIndex2, double y2, Color color); /// Draws a Gann square fixed. ChartGannSquareFixed DrawGannSquareFixed(string name, int barIndex1, double y1, int barIndex2, double y2, Color color, int thickness); /// Draws a Gann square fixed. ChartGannSquareFixed DrawGannSquareFixed(string name, int barIndex1, double y1, int barIndex2, double y2, Color color, int thickness, LineStyle lineStyle); /// Draws a horizontal line. ChartHorizontalLine DrawHorizontalLine(string name, double y, Color color); /// Draws a horizontal line. ChartHorizontalLine DrawHorizontalLine(string name, double y, Color color, int thickness); /// Draws a horizontal line. ChartHorizontalLine DrawHorizontalLine(string name, double y, Color color, int thickness, LineStyle lineStyle); /// Draws an icon. ChartIcon DrawIcon(string name, ChartIconType iconType, DateTime time, double y, Color color); /// Draws an icon. ChartIcon DrawIcon(string name, ChartIconType iconType, int barIndex, double y, Color color); /// Draws a rectangle. ChartRectangle DrawRectangle(string name, DateTime time1, double y1, DateTime time2, double y2, Color color); /// Draws a rectangle. ChartRectangle DrawRectangle(string name, DateTime time1, double y1, DateTime time2, double y2, Color color, int thickness); /// Draws a rectangle. ChartRectangle DrawRectangle(string name, DateTime time1, double y1, DateTime time2, double y2, Color color, int thickness, LineStyle lineStyle); /// Draws a rectangle. ChartRectangle DrawRectangle(string name, int barIndex1, double y1, int barIndex2, double y2, Color color); /// Draws a rectangle. ChartRectangle DrawRectangle(string name, int barIndex1, double y1, int barIndex2, double y2, Color color, int thickness); /// Draws a rectangle. ChartRectangle DrawRectangle(string name, int barIndex1, double y1, int barIndex2, double y2, Color color, int thickness, LineStyle lineStyle); /// Draws the static text. ChartStaticText DrawStaticText(string name, string text, VerticalAlignment verticalAlignment, HorizontalAlignment horizontalAlignment, Color color); /// Draws the text. ChartText DrawText(string name, string text, DateTime time, double y, Color color); /// Draws the text. ChartText DrawText(string name, string text, int barIndex, double y, Color color); /// Draws a trend line. ChartTrendLine DrawTrendLine(string name, DateTime time1, double y1, DateTime time2, double y2, Color color); /// Draws a trend line. ChartTrendLine DrawTrendLine(string name, DateTime time1, double y1, DateTime time2, double y2, Color color, int thickness); /// Draws a trend line. ChartTrendLine DrawTrendLine(string name, DateTime time1, double y1, DateTime time2, double y2, Color color, int thickness, LineStyle lineStyle); /// Draws a trend line. ChartTrendLine DrawTrendLine(string name, int barIndex1, double y1, int barIndex2, double y2, Color color); /// Draws a trend line. ChartTrendLine DrawTrendLine(string name, int barIndex1, double y1, int barIndex2, double y2, Color color, int thickness); /// Draws a trend line. ChartTrendLine DrawTrendLine(string name, int barIndex1, double y1, int barIndex2, double y2, Color color, int thickness, LineStyle lineStyle); /// Draws a triangle. ChartTriangle DrawTriangle(string name, DateTime time1, double y1, DateTime time2, double y2, DateTime time3, double y3, Color color); /// Draws a triangle. ChartTriangle DrawTriangle(string name, DateTime time1, double y1, DateTime time2, double y2, DateTime time3, double y3, Color color, int thickness); /// Draws a triangle. ChartTriangle DrawTriangle(string name, DateTime time1, double y1, DateTime time2, double y2, DateTime time3, double y3, Color color, int thickness, LineStyle lineStyle); /// Draws a triangle. ChartTriangle DrawTriangle(string name, int barIndex1, double y1, int barIndex2, double y2, int barIndex3, double y3, Color color); /// Draws a triangle. ChartTriangle DrawTriangle(string name, int barIndex1, double y1, int barIndex2, double y2, int barIndex3, double y3, Color color, int thickness); /// Draws a triangle. ChartTriangle DrawTriangle(string name, int barIndex1, double y1, int barIndex2, double y2, int barIndex3, double y3, Color color, int thickness, LineStyle lineStyle); /// Draws a vertical line. ChartVerticalLine DrawVerticalLine(string name, DateTime time, Color color); /// Draws a vertical line. ChartVerticalLine DrawVerticalLine(string name, DateTime time, Color color, int thickness); /// Draws a vertical line. ChartVerticalLine DrawVerticalLine(string name, DateTime time, Color color, int thickness, LineStyle lineStyle); /// Draws a vertical line. ChartVerticalLine DrawVerticalLine(string name, int barIndex, Color color); /// Draws a vertical line. ChartVerticalLine DrawVerticalLine(string name, int barIndex, Color color, int thickness); /// Draws a vertical line. ChartVerticalLine DrawVerticalLine(string name, int barIndex, Color color, int thickness, LineStyle lineStyle); /// Finds all the chart objects of the specified type. T[] FindAllObjects(); /// Finds all the chart objects of the specified type. ChartObject[] FindAllObjects(ChartObjectType objectType); /// Finds the chart object of the specified name. ChartObject FindObject(string objectName); /// Moves a chart control to chart / indicator area on absolute bar index and price (x,y) coordinates. void MoveControl(ControlBase control, int barIndex, double y); /// Moves a chart control to chart / indicator area on absolute time and price (x,y) coordinates. void MoveControl(ControlBase control, DateTime time, double y); /// Moves a chart control to chart / indicator area on absolute time (x) coordinate. void MoveControl(ControlBase control, DateTime time); /// Moves a chart control to chart / indicator area on absolute bar index (x) coordinate. void MoveControl(ControlBase control, int barIndex); /// Moves a chart control to chart / indicator area on absolute price (y) coordinate. void MoveControl(ControlBase control, double y); /// Removes all interactive and non-interactive objects available for the cBot or Indicator. void RemoveAllObjects(); /// Remove a chart control from the chart area. void RemoveControl(ControlBase control); /// Removes the chart object of the specified name. void RemoveObject(string objectName); /// Resets the price scale of the chart area to its default state: enables the auto scale and fits the Y-axis range to the visible bars and outputs. Does not change the price scale mode, the inversion or the price axis position. Ignored on the main chart area while the price to bar ratio is locked. Does nothing in the silent backtesting, the CLI and the cloud. void ResetPriceScale(); /// Sets the Y-axis lowest and highest values range. Allows scrolling the chart by the Y-axis. If only one of the values is set, then the chart will be expanded regarding the lowest or highest value respectively. A range whose lowest value is not lower than its highest value is ignored, and so is any range on the main chart area while the price scale mode is Percent or IndexedTo100. void SetYRange(double bottomY, double topY); /// Converts area Time coordinate to Mouse X coordinate value. double TimeToX(DateTime time); /// Converts X coordinate to bar index. double XToBarIndex(double x); /// Converts Mouse X coordinate to area Time coordinate value. DateTime XToTime(double x); /// Converts Mouse Y coordinate to area Y axis coordinate value. double YToYValue(double y); /// Converts Area Y axis coordinate value to mouse Y coordinate. double YValueToY(double yValue); /// Gets the lowest visible Y-axis value. double BottomY {get;} /// Gets chart area draggables. ChartDraggables Draggables {get;} /// Gets the hight of the chart area. double Height {get;} /// Checks whether the instance is still on the chart area. bool IsAlive {get;} /// Gets or sets the value indicating whether the auto scale is enabled for the chart area. When enabled, the Y-axis range is fitted automatically to the visible bars and outputs while the chart scrolls. Setting the Y-axis range with SetYRange, or dragging the price axis, disables the auto scale. On the main chart area the auto scale is always enabled while the price scale mode is Percent or IndexedTo100, and is always disabled while the price to bar ratio is locked; setting it to a conflicting value in these states is ignored. In the silent backtesting, the CLI and the cloud the value is only stored and has no visual effect. bool IsAutoScaleEnabled {get; set;} /// Gets the chart objects collection. IReadonlyList Objects {get;} /// Gets the list of currently selected objects if any. IReadonlyList SelectedObjects {get;} /// Gets the highest visible Y-axis value. double TopY {get;} /// Gets the width of the chart area. double Width {get;} /// Occurs when dragging a chart area. event Action Drag; /// Occurs when mouse button is released while dragging a chart area or a chart area loses mouse capture. event Action DragEnd; /// Occurs when MouseDown event is happening on a chart area and a mouse is captured for dragging. event Action DragStart; /// Occurs when the left mouse button is pressed down. event Action MouseDown; /// Occurs when the cursor hover over the chart area. event Action MouseEnter; /// Occurs when the cursor leaves the chart area event Action MouseLeave; /// Occurs when the cursor moves over the chart area. event Action MouseMove; /// Occurs when the left mouse button is released. event Action MouseUp; /// Occurs when the mouse wheel button is rotated. event Action MouseWheel; /// Occurs when the cursor hovers over or leaves the object. event Action ObjectHoverChanged; /// Occurs when one or several chart objects are added to the chart area. event Action ObjectsAdded; /// Occurs when one or several chart objects are moved. event Action ObjectsMoveEnded; /// Occurs when one or several chart objects move started. event Action ObjectsMoveStarted; /// Occurs when one or several chart objects are moving. event Action ObjectsMoving; /// Occurs when one or several chart object are removed from the chart area. event Action ObjectsRemoved; /// Occurs when chart objects are selected or deselected. event Action ObjectsSelectionChanged; /// Occurs when one or several chart objects are updated. event Action ObjectsUpdated; /// Occurs when the price scale state of the chart area changes: the auto scale is enabled or disabled, or the price scale is reset. On the main chart area it also occurs when any chart level price scale setting changes: the price scale mode, the inversion, the price to bar ratio lock or value, the scale price chart only option or the price axis position. Not raised in the silent backtesting, the CLI and the cloud. event Action PriceScaleChanged; /// Occurs when the X-axis position value or the Y-axis position value changes while scrolling. event Action ScrollChanged; /// Occurs when the chart area size has changed. event Action SizeChanged; [Obsolete("Use ObjectsAdded instead")] event Action ObjectAdded; [Obsolete("Use ObjectsUpdated instead")] event Action ObjectUpdated; [Obsolete("Use ObjectsRemoved instead")] event Action ObjectRemoved; [Obsolete("Use ObjectsSelectionChanged instead")] event Action ObjectSelectionChanged; } /// Represents the arrow chart object. public interface ChartArrow { /// Calculates Y-axis value corresponding the specified bar index. double CalculateY(int barIndex); /// Calculates Y-axis value corresponding the specified time value. double CalculateY(DateTime time); /// Gets or sets the color of the Trend Line. Color Color {get; set;} /// Defines if the Arrow extends to infinity. bool ExtendToInfinity {get; set;} /// Gets or sets the Arrow style. LineStyle LineStyle {get; set;} /// Defines the arrow angle. bool ShowAngle {get; set;} /// Gets or sets the thickness of the Arrow. int Thickness {get; set;} /// Gets or sets the value 1 on the Time line. DateTime Time1 {get; set;} /// Gets or sets the value 2 on the Time line. DateTime Time2 {get; set;} /// Gets or sets the value 1 on the Y-axis. double Y1 {get; set;} /// Gets or sets the value 2 on the Y-axis. double Y2 {get; set;} } /// Provides data for the chart color event. public class ChartColorEventArgs { /// Gets the chart. public Chart Chart {get;} } /// Represents the charts Color Settings. public interface ChartColorSettings { /// Gets or sets the color of area chart fill. Color AreaFillColor {get; set;} /// Gets or sets the color of the ask price line. Color AskPriceLineColor {get; set;} /// Gets or sets the color of the chart background. Color BackgroundColor {get; set;} /// Gets or sets the color of the bear candle fill. Color BearFillColor {get; set;} /// Gets or sets the color of the bear candle or bar outline. Color BearOutlineColor {get; set;} /// Gets or sets the color of the bid price line. Color BidPriceLineColor {get; set;} /// Gets or sets the color of the bull candle fill. Color BullFillColor {get; set;} /// Gets or sets the color of the bull candle or bar outline. Color BullOutlineColor {get; set;} /// Gets or sets the color of Buy positions and orders. Color BuyColor {get; set;} /// Gets or sets the color of the chart foreground. Color ForegroundColor {get; set;} /// Gets or sets the color of the grid lines. Color GridLinesColor {get; set;} /// Gets or sets the color of the losing deal. Color LosingDealColor {get; set;} /// Gets or sets the color of the period separator. Color PeriodSeparatorColor {get; set;} /// Gets or sets the color of Sell order positions and orders. Color SellColor {get; set;} /// Gets or sets the color of the tick volume. Color TickVolumeColor {get; set;} /// Gets or sets the color of the winning deal. Color WinningDealColor {get; set;} } /// Represents a chart frames container. public interface ChartContainer { /// Closes current chart container window. bool Close(); /// Returns number of frames existing in chart container. int Count {get;} /// Returns detached window properties of chart container. DetachedWindow DetachedWindow {get;} /// Returns container Id. string Id {get;} /// Returns a frame by it is index inside chart container. Frame Item {get;} /// Get / set chart mode of chart container. ChartMode Mode {get; set;} /// Gets or sets the selected frame in the chart container. Frame SelectedFrame {get; set;} } /// Represents the list of all the chart containers. public interface ChartContainers { /// Returns a chart container by it is ID. ChartContainer Get(string id); /// Returns number of all chart containers. int Count {get;} /// Returns main chart container. ChartContainer MainChartContainer {get;} /// Occurs when new containers are added. event Action ContainersAdded; /// Occurs when containers are removed. event Action ContainersRemoved; } /// Provides data for the containers added event. public class ChartContainersAddedEventArgs { /// Returns the added containers. public ChartContainer[] AddedChartContainers {get;} } /// Provides data for the containers removed event. public class ChartContainersRemovedEventArgs { /// Returns the removed containers. public ChartContainer[] RemovedChartContainers {get;} } /// Represents the chart display settings. public interface ChartDisplaySettings { /// Defines if the Add cBot button is displayed on the chart. bool AddRobotButton {get; set;} /// Defines if the Ask Price Line is displayed on the chart. bool AskPriceLine {get; set;} /// Defines if the Bars is displayed on the chart. bool Bars {get; set;} /// Defines if the Bid Price Line is displayed on the chart. bool BidPriceLine {get; set;} /// Defines if the Chart Scale is displayed on the chart. bool ChartScale {get; set;} /// Defines if the Deal Map is displayed on the chart. bool DealMap {get; set;} /// Defines if the Grid is displayed on the chart background. bool Grid {get; set;} /// Defines if the Indicator Titles are displayed on the chart. bool IndicatorTitles {get; set;} /// Defines if the Market Sentiment is visible on the chart. bool MarketSentiment {get; set;} /// Defines if the Orders are displayed on the chart. bool Orders {get; set;} /// Defines if the Period Separators are displayed on the chart. bool PeriodSeparators {get; set;} /// Defines if the Positions are displayed on the chart. bool Positions {get; set;} /// Defines if the Price Alerts are visible on the chart. bool PriceAlerts {get; set;} /// Defines if the price axis overlays buttons are visible on the chart. bool PriceAxisOverlayButtons {get; set;} /// Defines if the QuickTrade buttons are visible on the chart. bool QuickTradeButtons {get; set;} /// Defines if the Target is visible on the chart. bool Targets {get; set;} /// Defines if the Tick Volume is displayed on the chart. bool TickVolume {get; set;} } /// Provides data for the chart display settings event. public class ChartDisplaySettingsEventArgs { /// Gets the chart. public Chart Chart {get;} } /// Provides data for the chart dragging event. public class ChartDragEventArgs : ChartMouseEventArgs { } /// Represents a draggable box that can host a control and shown over a chart. public interface ChartDraggable { /// Get / set the content control inside the draggable. ControlBase Child {get; set;} /// Get unique ID of the Draggable. string Id {get;} /// Get / set visibility of draggable. bool IsVisible {get; set;} /// Get / set move grip visibility (default: true). bool ShowGrip {get; set;} /// Get / set X coordinate (default: 0). double X {get; set;} /// Get / set Y coordinate (default: 0). double Y {get; set;} /// Occurs when the draggable's location is changed. event Action LocationChanged; } /// Provides data for LocationChanged event of ChartDraggable. public class ChartDraggableLocationChangedEventArgs { /// Gets the draggable. public ChartDraggable Draggable {get;} } /// Represents collection of a chart area draggables. public interface ChartDraggables { /// Adds a draggable to chart area. ChartDraggable Add(); /// Removes a draggable from chart area. void Remove(ChartDraggable draggable); /// Gets count of draggables. int Count {get;} } /// Represents the Drawing chart object. public interface ChartDrawing { } /// Represents the Elliott Correction Wave (A-B-C) chart object - a three-wave corrective pattern over four pivots (origin and A, B, C). public interface ChartElliottCorrection { /// Gets or sets the origin (wave 0) anchor point. ChartPoint Origin {get; set;} /// Gets or sets the wave A anchor point. ChartPoint WaveA {get; set;} /// Gets or sets the wave B anchor point. ChartPoint WaveB {get; set;} /// Gets or sets the wave C anchor point. ChartPoint WaveC {get; set;} } /// Represents the Elliott Double Combo Wave (W-X-Y) chart object - a complex correction over four pivots (origin and W, X, Y). public interface ChartElliottDoubleCombo { /// Gets or sets the origin (wave 0) anchor point. ChartPoint Origin {get; set;} /// Gets or sets the wave W anchor point. ChartPoint WaveW {get; set;} /// Gets or sets the wave X anchor point. ChartPoint WaveX {get; set;} /// Gets or sets the wave Y anchor point. ChartPoint WaveY {get; set;} } /// Represents the Elliott Impulse Wave (1-2-3-4-5) chart object - a five-wave motive pattern over six pivots (origin and 1 to 5). public interface ChartElliottImpulse { /// Gets or sets the origin (wave 0) anchor point. ChartPoint Origin {get; set;} /// Gets or sets the wave 1 anchor point. ChartPoint Wave1 {get; set;} /// Gets or sets the wave 2 anchor point. ChartPoint Wave2 {get; set;} /// Gets or sets the wave 3 anchor point. ChartPoint Wave3 {get; set;} /// Gets or sets the wave 4 anchor point. ChartPoint Wave4 {get; set;} /// Gets or sets the wave 5 anchor point. ChartPoint Wave5 {get; set;} } /// Represents the Elliott Triangle Wave (A-B-C-D-E) chart object - a five-leg triangle over six pivots (origin and A to E). public interface ChartElliottTriangle { /// Gets or sets the origin (wave 0) anchor point. ChartPoint Origin {get; set;} /// Gets or sets the wave A anchor point. ChartPoint WaveA {get; set;} /// Gets or sets the wave B anchor point. ChartPoint WaveB {get; set;} /// Gets or sets the wave C anchor point. ChartPoint WaveC {get; set;} /// Gets or sets the wave D anchor point. ChartPoint WaveD {get; set;} /// Gets or sets the wave E anchor point. ChartPoint WaveE {get; set;} } /// Represents the Elliott Triple Combo Wave (W-X-Y-X-Z) chart object - an extended complex correction over six pivots (origin and W, X, Y, X, Z). The two X legs are named X1 and X2. public interface ChartElliottTripleCombo { /// Gets or sets the origin (wave 0) anchor point. ChartPoint Origin {get; set;} /// Gets or sets the wave W anchor point. ChartPoint WaveW {get; set;} /// Gets or sets the first wave X (X1) anchor point. ChartPoint WaveX1 {get; set;} /// Gets or sets the second wave X (X2) anchor point. ChartPoint WaveX2 {get; set;} /// Gets or sets the wave Y anchor point. ChartPoint WaveY {get; set;} /// Gets or sets the wave Z anchor point. ChartPoint WaveZ {get; set;} } /// Represents the shared options of the Elliott Wave chart objects. An Elliott Wave is an ordered list of labelled pivots joined by a polyline; the wave degree drives the label notation. public interface ChartElliottWaveBase { /// Gets or sets the chart object lines color. Color Color {get; set;} /// Gets or sets the wave degree that drives the label notation and default color. ChartElliottWaveDegree Degree {get; set;} /// Gets or sets the chart object lines style. LineStyle LineStyle {get; set;} /// Gets or sets a value indicating whether the wave labels are displayed. Default is true. bool ShowLabels {get; set;} /// Gets or sets the chart object lines thickness. int Thickness {get; set;} } /// The Elliott Wave degree. Determines the wave-label notation (numerals, roman or letters and the enclosure style) and the default color of an Elliott Wave chart object. public enum ChartElliottWaveDegree { /// The Grand Supercycle degree (largest). GrandSupercycle, /// The Supercycle degree. Supercycle, /// The Cycle degree. Cycle, /// The Primary degree. Primary, /// The Intermediate degree. Intermediate, /// The Minor degree (default). Minor, /// The Minute degree. Minute, /// The Minuette degree. Minuette, /// The Subminuette degree (smallest). Subminuette, } /// Represent the Ellipse chart object. public interface ChartEllipse { /// Gets or sets the value 1 on the Time line. DateTime Time1 {get; set;} /// Gets or sets the value 2 on the Time line. DateTime Time2 {get; set;} /// Gets or sets the value 1 on the Y-axis. double Y1 {get; set;} /// Gets or sets the value 2 on the Y-axis. double Y2 {get; set;} } /// Represents the Equidistant Channel chart object. The tool that allows drawing two precisely parallel lines in any direction on the chart. public interface ChartEquidistantChannel { /// Calculates Y-axis value corresponding the specified bar index. double CalculateY(int barIndex); /// Calculates Y-axis value corresponding the specified time value. double CalculateY(DateTime time); /// Gets or sets the height of the Equidistant Channel. double ChannelHeight {get; set;} /// Gets or sets the Equidistant Channel line color. Color Color {get; set;} /// Defines if the Equidistant channel extends to infinity. bool ExtendToInfinity {get; set;} /// Gets or sets the Equidistant channel line style. LineStyle LineStyle {get; set;} /// Gets or sets the Equidistant Channel angle. bool ShowAngle {get; set;} /// Gets or sets the Equidistant Channel line thickness. int Thickness {get; set;} /// Gets or sets the value 1 on the Time line. DateTime Time1 {get; set;} /// Gets or sets the value 2 on the Time line. DateTime Time2 {get; set;} /// Gets or sets the value 1 on the Y-axis. double Y1 {get; set;} /// Gets or sets the value 2 on the Y-axis. double Y2 {get; set;} } /// Represents the Fibonacci Arc chart object. public interface ChartFibonacciArc { /// Gets or sets the value 1 on the Time line. DateTime Time1 {get; set;} /// Gets or sets the value 2 on the Time line. DateTime Time2 {get; set;} /// Gets or sets the value 1 on the Y-axis. double Y1 {get; set;} /// Gets or sets the value 2 on the Y-axis. double Y2 {get; set;} } /// Represents the Fibonacci tools options. public interface ChartFibonacciBase { /// Gets or sets the lines color. Color Color {get; set;} /// Defines if the Fibonacci levels display the prices bool DisplayPrices {get; set;} /// Gets the Fibonacci levels. IReadonlyList FibonacciLevels {get;} /// Gets or sets the lines style. LineStyle LineStyle {get; set;} /// Gets or sets the lines thickness. int Thickness {get; set;} } /// Represents the Fibonacci Expansion chart object. public interface ChartFibonacciExpansion { /// Gets or sets the value 1 on the Time line. DateTime Time1 {get; set;} /// Gets or sets the value 2 on the Time line. DateTime Time2 {get; set;} /// Gets or sets the value 3 on the Time line. DateTime Time3 {get; set;} /// Gets or sets the value 1 on the Y-axis. double Y1 {get; set;} /// Gets or sets the value 2 on the Y-axis. double Y2 {get; set;} /// Gets or sets the value 3 on the Y-axis. double Y3 {get; set;} } /// Represents the Fibonacci Fan chart object. public interface ChartFibonacciFan { /// Calculates Y-axis value corresponding the specified bar index. double CalculateY(int barIndex, FibonacciLevel level); /// Calculates Y-axis value corresponding the specified time value. double CalculateY(DateTime time, FibonacciLevel level); /// Gets or sets the value 1 on the Time line. DateTime Time1 {get; set;} /// Gets or sets the value 2 on the Time line. DateTime Time2 {get; set;} /// Gets or sets the value 1 on the Y-axis. double Y1 {get; set;} /// Gets or sets the value 2 on the Y-axis. double Y2 {get; set;} } /// Represents the Fibonacci Retracement chart object. public interface ChartFibonacciRetracement { /// Calculates Y-axis value corresponding the specified bar index. double CalculateY(int barIndex); /// Calculates Y-axis value corresponding the specified time value. double CalculateY(DateTime time); /// Gets or sets the value 1 on the Time line. DateTime Time1 {get; set;} /// Gets or sets the value 2 on the Time line. DateTime Time2 {get; set;} /// Gets or sets the value 1 on the Y-axis. double Y1 {get; set;} /// Gets or sets the value 2 on the Y-axis. double Y2 {get; set;} } /// Represents the Fibonacci Timezones chart object. public interface ChartFibonacciTimezones { /// Gets or sets the value 1 on the Time line. DateTime Time1 {get; set;} /// Gets or sets the value 2 on the Time line. DateTime Time2 {get; set;} /// Gets or sets the value 1 on the Y-axis. double Y1 {get; set;} /// Gets or sets the value 2 on the Y-axis. double Y2 {get; set;} } /// Represents a chart frame. public interface ChartFrame { /// Changes the time frame on the chart. bool TryChangeTimeFrame(TimeFrame timeFrame); /// Changes the time frame and the symbol on the chart. bool TryChangeTimeFrameAndSymbol(TimeFrame timeFrame, string symbolName); /// Returns frame chart. Chart Chart {get;} /// Get / set linked group of frame. LinkedChartGroup LinkedChartGroup {get; set;} /// Get / set frame chart symbol. Symbol Symbol {get; set;} /// Get / set frame chart timeframe. TimeFrame TimeFrame {get; set;} /// Occurs when frame LinkedChartGroup is changed. event Action LinkedChartGroupChanged; } /// Provides data for the chart frame LinkedChartGroup changed event. public class ChartFrameLinkedChartGroupChangedEventArgs { /// Returns the chart frame. public ChartFrame ChartFrame {get;} } /// Represents the Gann tools options. public interface ChartGannBase { /// Gets or sets the lines color. Color Color {get; set;} /// Defines if the Gann levels display the prices bool DisplayPrices {get; set;} /// Gets the Gann levels. IReadonlyList GannLevels {get;} /// Gets or sets the lines style. LineStyle LineStyle {get; set;} /// Gets or sets the lines thickness. int Thickness {get; set;} /// Gets or sets the first point time value on the Time line. DateTime Time1 {get; set;} /// Gets or sets the second point time value on the Time line. DateTime Time2 {get; set;} /// Gets or sets the first point value on the Y-axis. double Y1 {get; set;} /// Gets or sets the second point value on the Y-axis. double Y2 {get; set;} } /// Represents the Gann Box chart object. public interface ChartGannBox { } /// Represents the Gann Fan chart object. public interface ChartGannFan { /// Calculates Y-axis value corresponding the specified bar index. double CalculateY(int barIndex, GannLevel level); /// Calculates Y-axis value corresponding the specified time value. double CalculateY(DateTime time, GannLevel level); } /// Represents the Gann Square chart object. public interface ChartGannSquare { /// Calculates Y-axis value corresponding the specified bar index. double CalculateY(int barIndex, GannLevel level); /// Calculates Y-axis value corresponding the specified time value. double CalculateY(DateTime time, GannLevel level); } /// Represents the Gann Square Fixed chart object with screen-space rendering. public interface ChartGannSquareFixed { /// Calculates Y-axis value corresponding the specified bar index. double CalculateY(int barIndex, GannLevel level); /// Calculates Y-axis value corresponding the specified time value. double CalculateY(DateTime time, GannLevel level); } /// Represents the Horizontal Line chart object. Used to mark a certain value on the Y-axis throughout the whole chart. public interface ChartHorizontalLine { /// Gets or sets the line color. Color Color {get; set;} /// Gets or sets the line style. LineStyle LineStyle {get; set;} /// Gets or sets the line thickness. int Thickness {get; set;} /// Gets or sets the Y-axis value of the line location. double Y {get; set;} } /// Represents the Icon chart object. public interface ChartIcon { /// Gets or sets the color of the icon. Color Color {get; set;} /// Gets or sets the type of the icon. ChartIconType IconType {get; set;} /// Gets or sets the Time value of the icon location. DateTime Time {get; set;} /// Gets or sets the Y-axis value of the icon location. double Y {get; set;} } /// Represents the type of the Icon. public enum ChartIconType { /// The Up Arrow icon. UpArrow, /// The Down Arrow icon. DownArrow, /// The Circle icon. Circle, /// The Square icon. Square, /// The Diamond icon. Diamond, /// The Star icon. Star, /// The Up Triangle icon. UpTriangle, /// The Down Triangle icon. DownTriangle, } /// The interface representing an indicator attached to a chart. Provides properties that allow for accessing various information about an indicator. public interface ChartIndicator { /// Gets the IReadonlyList of indicator bar outputs. IReadonlyList BarOutputs {get;} /// Gets the ID of a specific indicator instance. string InstanceId {get;} /// Gets the IReadonlyList of indicator output lines. IReadonlyList LineOutputs {get;} /// Gets the name of an indicator. string Name {get;} /// Gets or sets the index of the panel on which an indicator is displayed. int PanelIndex {get; set;} /// Gets the collection of indicator parameters. AlgoInstanceParameters Parameters {get;} /// Gets the IndicatorType of an indicator. IndicatorType Type {get;} [Obsolete("Use LineOutputs instead")] IReadonlyList Lines {get;} } /// The class representing AddedEventArgs for a ChildIndicator . public class ChartIndicatorAddedEventArgs : ChartIndicatorEventArgs { } /// The base class representing event args for a ChartIndicator . public abstract class ChartIndicatorEventArgs { /// Gets the ChartIndicator that raised an event. public ChartIndicator Indicator {get;} } /// The class representing ModifiedEventArgs for a ChartIndicator . public class ChartIndicatorModifiedEventArgs : ChartIndicatorEventArgs { } /// The class representing RemovedEventArgs for a ChartIndicator . public class ChartIndicatorRemovedEventArgs : ChartIndicatorEventArgs { } /// The interface representing a chart indicator instances collection. Provides properties and events that allow for accessing various information about indicators attached to a chart. public interface ChartIndicators { /// Adds a new indicator to a chart. ChartIndicator Add(string name, object[] parameterValues); /// Adds a new indicator to a chart. ChartIndicator Add(IndicatorType type, object[] parameterValues); /// Removes an indicator from a chart. bool Remove(ChartIndicator indicator); /// Gets the number of all indicators attached to a chart. int Count {get;} /// Gets the list of chart custom indicators. IReadonlyList Custom {get;} /// Gets an indicator attached to a chart by its instance ID. ChartIndicator Item {get;} /// Gets the list of chart standard indicators. IReadonlyList Standard {get;} /// Occurs when a new indicator is added to a chart. event Action IndicatorAdded; /// Occurs when an indicator attached to a chart is modified. event Action IndicatorModified; /// Occurs when an indicator is removed from a chart. event Action IndicatorRemoved; } /// Provides data for chart keyboard related events and callbacks public class ChartKeyboardEventArgs { /// True if Alt key was pressed otherwise False public bool AltKey {get;} /// The chart that the event/callback occurred public Chart Chart {get;} /// True if Ctrl key was pressed otherwise False public bool CtrlKey {get;} /// Keyboard key public Key Key {get;} /// Modifiers key that was used with the Key public ModifierKeys Modifiers {get;} /// True if Shift key was pressed otherwise False public bool ShiftKey {get;} } /// Represents the list of all the chart frames. public interface ChartManager { /// Adds a new chart frame to main chart container. ChartFrame AddChartFrame(string symbolName, TimeFrame timeFrame); /// Adds a new chart frame to target chart container. ChartFrame AddChartFrame(string symbolName, TimeFrame timeFrame, ChartContainer targetChartContainer); /// Adds a new custom frame to main chart container. CustomFrame AddCustomFrame(string title); /// Adds a new custom frame to target chart container. CustomFrame AddCustomFrame(string title, ChartContainer targetChartContainer); /// Gets a chart frame by it is Id. ChartFrame GetChartFrame(string frameId); /// Gets a custom frame by it is Id. CustomFrame GetCustomFrame(string frameId); /// Removes a frame by it is Id. bool RemoveFrame(string frameId); /// Returns current active chart container if any otherwise null. ChartContainer ActiveChartContainer {get;} /// Returns current active frame if any otherwise null. Frame ActiveFrame {get;} /// Returns chart containers. ChartContainers ChartContainers {get;} /// Returns number of all frames. int Count {get;} /// Occurs when active frame is changed. event Action ActiveFrameChanged; /// Occurs when new frames are added. event Action FramesAdded; /// Occurs when frames are removed. event Action FramesRemoved; } /// Represents the predefined chart container modes. public enum ChartMode { /// Single chart mode. Single, /// Multiple chart mode. Multi, /// Free chart mode. Free, /// Floating chart mode. Floating, } /// Provides data for the mouse related routed events. public class ChartMouseEventArgs { /// Defines whether the Alt key is pressed during the mouse event. public bool AltKey {get;} /// Gets the exact bar index of the mouse event. public double BarIndex {get;} /// Gets the chart. public Chart Chart {get;} /// Gets the chart area. public ChartArea ChartArea {get;} /// Defines whether the Ctrl key is pressed during the mouse event. public bool CtrlKey {get;} /// Gets the X-axis value of the mouse event. public double MouseX {get;} /// Gets the Y-axis value of the mouse event. public double MouseY {get;} /// Defines whether the Shift key is pressed during the mouse event. public bool ShiftKey {get;} /// Gets the time value on the X-axis where the mouse event occurs. public DateTime TimeValue {get;} /// Gets the Y-axis value of the mouse event. public double YValue {get;} } /// Provides data for the mouse wheel scroll event. public class ChartMouseWheelEventArgs : ChartMouseEventArgs { /// Gets the number of detents the mouse wheel has rotated. A detent is one notch of the mouse wheel. public int Delta {get;} } /// Represents the chart object. public interface ChartObject { /// Gets or sets the comment for the chart object. string Comment {get; set;} /// Defines if the chart object still exists on the chart. bool IsAlive {get;} /// Gets or sets if object is hidden and not visible to user or not. bool IsHidden {get; set;} /// Defines whether the instance is interactive. The non-interactive chart objects cannot be selected, have no hover effect and cannot be searched. Available only for the current cBot or Indicator and will be removed when the cBot/Indicator stops. bool IsInteractive {get; set;} /// Gets or sets if the object is locked or not, user can't move locked objects unless unlocked. bool IsLocked {get; set;} /// Gets the chart object name - the unique identifier for the object in the current chart area. string Name {get;} /// Gets the chart object type. ChartObjectType ObjectType {get;} /// Gets or sets the location of a chart object on the Z-axis in respect to the other chart objects. int ZIndex {get; set;} } /// Provides data for the chart object change event. public abstract class ChartObjectEventArgs { /// Gets the chart area. public ChartArea Area {get;} /// Gets the chart. public Chart Chart {get;} /// Gets the chart object. public ChartObject ChartObject {get;} } /// Provides data for the mouse hover over a chart object event. public class ChartObjectHoverChangedEventArgs : ChartObjectEventArgs { /// Defines if the mouse is hovered over the chart object. public bool IsObjectHovered {get;} } /// The chart object types. public enum ChartObjectType { /// The horizontal line. The line parallel to the X-axis that can be set on any Y-axis value. HorizontalLine, /// The vertical line. The line parallel to the Y-axis that can be set on any X-axis value. used to mark certain time event or chart bar on the chart.TBD VerticalLine, /// The trend line. The line with the start and end points that can be drawn in any direction on the chart. TrendLine, /// The text that can be placed directly in the chart, bound to X-Y axises. Text, /// The static positioned text that can be placed on fixed locations in the chart StaticText, /// The icon. The collection of icons that can be placed directly in the chart, bound to X-Y axises. Icon, /// The Fibonacci Retracement that can be placed directly in the chart, bound to X-Y axises. - a charting technique that uses the Fibonacci ratios to indicate the areas of support or resistance. FibonacciRetracement, /// The Fibonacci Expansion that can be placed directly in the chart, bound to X-Y axises. - a charting technique used to plot possible levels of support and resistance by tracking not only the primary trend but also the retracement. FibonacciExpansion, /// The Fibonacci Fan that can be placed directly in the chart, bound to X-Y axises. a charting technique used to estimate support and resistance levels by drawing the new trend lines based on the Fibonacci Retracement levels. FibonacciFan, /// The Andrews Pitchfork that can be placed directly in the chart, bound to X-Y axises. AndrewsPitchfork, /// The Gann Fan that can be placed directly in the chart, bound to X-Y axises. A charting technique used to estimate support and resistance levels by drawing trend lines at different Gann angles (1x1, 2x1, 1x2, etc.). GannFan, /// The Gann Box that can be placed directly in the chart, bound to X-Y axises. A charting technique that combines Gann angles with horizontal and vertical lines to create a box structure for analyzing support and resistance levels. GannBox, /// The Gann Square that can be placed directly in the chart, bound to X-Y axises. A charting technique that combines Gann box grid, fan rays from the start point, and arcs at level intersections for comprehensive market geometry analysis. GannSquare, /// The Gann Square Fixed that can be placed directly in the chart with fixed screen-space size. A charting technique with a single anchor point and control point that renders a 5x5 grid, Gann fan rays, and circular arcs independent of zoom level. GannSquareFixed, /// The rectangle of any preferable size and rotation that can be drawn directly in the chart, bound to X-Y axises. Rectangle, /// The ellipse of any preferable size and rotation that can be drawn directly in the chart, bound to X-Y axises. Ellipse, /// The triangle of any preferable size and rotation that can be drawn directly in the chart, bound to X-Y axises. Triangle, /// The equidistant channel that can be placed directly in the chart, bound to X-Y axises. EquidistantChannel, /// The user drawings in the chart with Pencil Drawing, /// The arrow line. ArrowLine, /// The Fibonacci Timezones FibonacciTimezones, /// The Risk Reward RiskReward, /// The Fibonacci Arc that can be placed directly in the chart, bound to X-Y axises. A charting technique using concentric arcs drawn at the Fibonacci levels off two anchor points to estimate support and resistance zones in both price and time. FibonacciArc, /// The Elliott Impulse Wave (1-2-3-4-5). A five-wave motive pattern drawn as a labelled polyline over six pivots. ElliottImpulse, /// The Elliott Correction Wave (A-B-C). A three-wave corrective pattern drawn as a labelled polyline over four pivots. ElliottCorrection, /// The Elliott Triangle Wave (A-B-C-D-E). A five-leg triangle drawn as a labelled polyline over six pivots. ElliottTriangle, /// The Elliott Double Combo Wave (W-X-Y). A complex correction drawn as a labelled polyline over four pivots. ElliottDoubleCombo, /// The Elliott Triple Combo Wave (W-X-Y-X-Z). An extended complex correction drawn as a labelled polyline over six pivots. ElliottTripleCombo, } /// Provides data for the adding chart objects event. public class ChartObjectsAddedEventArgs : ChartObjectsEventArgs { } /// Provides data for the chart objects change event. public abstract class ChartObjectsEventArgs { /// Gets the chart area. public ChartArea Area {get;} /// Gets the chart. public Chart Chart {get;} /// Gets chart objects. public IReadonlyList ChartObjects {get;} } /// Provides data for the chart objects move ended event. public class ChartObjectsMoveEndedEventArgs : ChartObjectsEventArgs { } /// Provides data for the chart objects move started event. public class ChartObjectsMoveStartedEventArgs : ChartObjectsEventArgs { } /// Provides data for the chart objects moving event. public class ChartObjectsMovingEventArgs : ChartObjectsEventArgs { } /// Provides data for the removing chart objects event. public class ChartObjectsRemovedEventArgs : ChartObjectsEventArgs { } /// Provides data for the chart objects selecting or deselecting event. public class ChartObjectsSelectionChangedEventArgs { /// A chart area where event occured public ChartArea Area {get;} /// A chart where event occured public Chart Chart {get;} /// A list of objects that were added to selection public IReadonlyList ObjectsAddedToSelection {get;} /// A list of objects that were removed from selection public IReadonlyList ObjectsRemovedFromSelection {get;} } /// Provides data for the chart objects update event. public class ChartObjectsUpdatedEventArgs : ChartObjectsEventArgs { } /// Represents a single chart anchor point - a time value on the X-axis and a Y-axis value. public sealed struct ChartPoint : ValueType { /// Represents a single chart anchor point - a time value on the X-axis and a Y-axis value. public ChartPoint(DateTime Time, double Y); /// The time value on the X-axis. public DateTime Time {get; set;} /// The Y-axis value. public double Y {get; set;} } /// Represents the side of the chart where the price axis is displayed. public enum ChartPriceAxisPosition { /// The price axis is displayed on the right side of the chart. Right, /// The price axis is displayed on the left side of the chart. Left, } /// Provides data for the chart area price scale change event. public class ChartPriceScaleEventArgs { /// Gets the chart. public Chart Chart {get;} /// Gets the chart area whose price scale changed. It is the chart itself for the main area. public ChartArea ChartArea {get;} } /// Represents the price scale mode of the chart main area. public enum ChartPriceScaleMode { /// The regular linear price scale. The Y axis shows prices. Regular, /// The percentage price scale. The Y axis shows the percentage change of the price from the base price, which is the close price of the first visible bar. Auto scale is always enabled in this mode. Percent, /// The indexed to 100 price scale. The Y axis shows the price as an index where the base price, the close price of the first visible bar, equals 100. Auto scale is always enabled in this mode. IndexedTo100, /// The logarithmic price scale. Equal vertical distances represent equal percentage changes of the price. Zero and negative prices are drawn on a logarithmic scale mirrored below zero. Logarithmic, } /// Represents the Rectangle chart object. A rectangle of any preferable size and rotation that can be drawn directly in the chart, bound to X-Y axises. public interface ChartRectangle { /// Gets or sets the value 1 on the Time line. DateTime Time1 {get; set;} /// Gets or sets the value 2 on the Time line. DateTime Time2 {get; set;} /// Gets or sets the value 1 on the Y-axis. double Y1 {get; set;} /// Gets or sets the value 2 on the Y-axis. double Y2 {get; set;} } /// Represents the risk reward chart object. public interface ChartRiskReward { /// Gets or sets the entry price. double EntryPrice {get; set;} /// Gets or sets if risk reward ratio is fixed or not. bool IsFixedRatio {get; set;} /// Gets or sets if order type is market range. bool IsMarketRange {get; set;} /// Gets or sets order limit range pips amount. double LimitRangePips {get; set;} /// Gets or sets order market range pips amount. double MarketRangePips {get; set;} /// Gets or sets the order type. OrderType OrderType {get; set;} /// Gets or sets the reward color. Color RewardColor {get; set;} /// Gets or sets the reward style. LineStyle RewardLineStyle {get; set;} /// Gets or sets the reward thickness. int RewardThickness {get; set;} /// Gets or sets the risk color. Color RiskColor {get; set;} /// Gets or sets the risk line style. LineStyle RiskLineStyle {get; set;} /// Gets or sets risk reward ratio. double RiskRewardRatio {get; set;} /// Gets or sets the risk line thickness. int RiskThickness {get; set;} /// Gets or sets the stop loss price. double StopLossPrice {get; set;} /// Gets or sets the take profit price. double TakeProfitPrice {get; set;} /// Gets or sets the value 1 on the Time line. DateTime Time1 {get; set;} /// Gets or sets the value 2 on the Time line. DateTime Time2 {get; set;} /// Gets or sets the trade type. TradeType TradeType {get; set;} /// Gets or sets type. ChartRiskRewardType Type {get; set;} /// Gets or sets the volume (in units). double VolumeInUnits {get; set;} } /// Represents different amount types for chart risk reward. public enum ChartRiskRewardAmountType { /// Account currency amount. Money, /// Account balance percentage. BalancePercentage, /// Account equity percentage. EquityPercentage, } /// Represents fixed reward type of chart risk reward. public class ChartRiskRewardFixedRewardType { /// Creates an instance of ChartRiskRewardFixedRewardType. public ChartRiskRewardFixedRewardType(ChartRiskRewardAmountType amountType, double amount); public ChartRiskRewardFixedRewardType(ChartRiskRewardFixedRewardType original); /// Gets or sets amount. public double Amount {get;} /// Gets or sets amount mode. public ChartRiskRewardAmountType AmountType {get;} } /// Represents fixed risk type of chart risk reward. public class ChartRiskRewardFixedRiskType { /// Creates an instance of ChartRiskRewardFixedRiskType. public ChartRiskRewardFixedRiskType(ChartRiskRewardAmountType amountType, double amount); public ChartRiskRewardFixedRiskType(ChartRiskRewardFixedRiskType original); /// Gets or sets amount. public double Amount {get;} /// Gets or sets amount mode. public ChartRiskRewardAmountType AmountType {get;} } /// Represents fixed size type of chart risk reward. public class ChartRiskRewardFixedSizeType { /// Creates an instance of ChartRiskRewardFixedSizeType. public ChartRiskRewardFixedSizeType(double volumeInUnits); public ChartRiskRewardFixedSizeType(ChartRiskRewardFixedSizeType original); /// Gets or sets volume (in units). public double VolumeInUnits {get;} } /// Represents different types of chart risk reward. public interface ChartRiskRewardType { } /// The interface representing a Robot instance attached to a chart. Provides properties that allow for accessing various information about a Robot. public interface ChartRobot { /// Starts the Robot instance. void Start(); /// Stops the Robot instance. void Stop(); /// Gets the ID of a specific Robot instance. string InstanceId {get;} /// Gets the name of a Robot instance. string Name {get;} /// Gets the collection of Robot parameters. AlgoInstanceParameters Parameters {get;} /// Gets the current state of a Robot instance. RobotState State {get;} /// Gets the RobotType of a Robot instance. RobotType Type {get;} } /// The class representing AddedEventArgs for a ChartRobot . public class ChartRobotAddedEventArgs : ChartRobotEventArgs { } /// The base class representing event args for a ChartRobot . public abstract class ChartRobotEventArgs { /// Gets the ChartRobot that raised an event. public ChartRobot Robot {get;} } /// The class representing ModifiedEventArgs for a ChartRobot . public class ChartRobotModifiedEventArgs : ChartRobotEventArgs { } /// The class representing RemovedEventArgs for a ChartRobot . public class ChartRobotRemovedEventArgs : ChartRobotEventArgs { } /// The class representing StartedEventArgs for a ChartRobot . public class ChartRobotStartedEventArgs : ChartRobotEventArgs { } /// The class representing StoppedEventArgs for a ChartRobot . public class ChartRobotStoppedEventArgs : ChartRobotEventArgs { } /// The interface representing a chart Robot instances collection. Provides properties and events that allow for accessing various information about Robots attached to a chart. public interface ChartRobots { /// Adds a new Robot instance to a chart. ChartRobot Add(string name, object[] parameterValues); /// Adds a new Robot instance to a chart. ChartRobot Add(RobotType type, object[] parameterValues); /// Removes a Robot instance from a chart. bool Remove(ChartRobot robot); /// Gets the number of all Robots attached to a chart. int Count {get;} /// Gets a Robot attached instance to a chart by its instance ID. ChartRobot Item {get;} /// Occurs when a Robot is added to a chart. event Action RobotAdded; /// Occurs when a chart Robot instance is modified. event Action RobotModified; /// Occurs when a Robot is removed from a chart. event Action RobotRemoved; /// Occurs when a chart Robot instance is started. event Action RobotStarted; /// Occurs when a chart Robot instance is stopped. event Action RobotStopped; } /// Chart Robots Permission public interface ChartRobotsPermission { } /// Provides data for the chart scrolling event. public class ChartScrollEventArgs { /// Gets a value that indicates the amount of bars that the chart was scrolled for public int BarsDelta {get;} /// Gets the lowest value of the bars delta. public double BottomYDelta {get;} /// Gets the chart. public Chart Chart {get;} /// Gets the chart area. public ChartArea ChartArea {get;} /// Gets the highest value of the bars delta. public double TopYDelta {get;} } /// Represents the Shape chart object. Allows drawing a Rectangle, a Triangle, and an Ellipse on the chart. public interface ChartShape { /// Gets or sets the line color. Color Color {get; set;} /// Defines if the shape is filled. bool IsFilled {get; set;} /// Gets or sets the line style. LineStyle LineStyle {get; set;} /// Gets or sets the line thickness. int Thickness {get; set;} } /// Provides data for the chart size change event. public class ChartSizeEventArgs { /// Gets the chart area. public ChartArea Area {get;} /// Gets the chart. public Chart Chart {get;} } /// Represents the chart static text. public interface ChartStaticText { /// Gets or sets the chart static text color. Color Color {get; set;} /// Gets or sets the font style of the text. string FontFamily {get; set;} /// Gets or sets the font size of text double FontSize {get; set;} /// Gets or sets the chart static text horizontal alignment. HorizontalAlignment HorizontalAlignment {get; set;} /// Gets or sets if the text is Bold or not bool IsBold {get; set;} /// Gets or sets if the text is Italic or not bool IsItalic {get; set;} /// Gets or sets if the text is Underlined or not bool IsUnderlined {get; set;} /// Gets or sets the chart static text content. string Text {get; set;} /// Gets or sets the chart static text vertical alignment. VerticalAlignment VerticalAlignment {get; set;} } /// Represents chart template. public interface ChartTemplate { /// Applies current chart template to a chart. void Apply(Chart chart); /// Gets the chart template color settings. ChartTemplateColorSettings ColorSettings {get;} /// Gets the chart template display settings. ChartTemplateDisplaySettings DisplaySettings {get;} /// Gets the indicators of chart template. ChartTemplateIndicators Indicators {get;} /// Gets the chart template name. string Name {get;} /// Gets the robots of chart template. ChartTemplateRobots Robots {get;} } /// Occurs when a new chart template is added. public class ChartTemplateAddedEventArgs { /// Gets the chart template. public ChartTemplate ChartTemplate {get;} } /// The interface representing a chart template indicator / robot instance parameter. public interface ChartTemplateAlgoInstanceParameter { /// Gets the name of a parameter. string Name {get;} /// Gets the value of a parameter. object Value {get; set;} } /// Represents the collection of all the parameters of a chart template indicator or Robot. public interface ChartTemplateAlgoInstanceParameters { /// Gets the number of parameters. int Count {get;} /// Gets a parameter by it is name. ChartTemplateAlgoInstanceParameter Item {get;} } /// Represents the chart template Color Settings. public interface ChartTemplateColorSettings { /// Gets or sets the color of area chart fill. Color AreaFillColor {get; set;} /// Gets or sets the color of the ask price line. Color AskPriceLineColor {get; set;} /// Gets or sets the color of the chart background. Color BackgroundColor {get; set;} /// Gets or sets the color of the bear candle fill. Color BearFillColor {get; set;} /// Gets or sets the color of the bear candle or bar outline. Color BearOutlineColor {get; set;} /// Gets or sets the color of the bid price line. Color BidPriceLineColor {get; set;} /// Gets or sets the color of the bull candle fill. Color BullFillColor {get; set;} /// Gets or sets the color of the bull candle or bar outline. Color BullOutlineColor {get; set;} /// Gets or sets the color of Buy positions and orders. Color BuyColor {get; set;} /// Gets or sets the color of the chart foreground. Color ForegroundColor {get; set;} /// Gets or sets the color of the grid lines. Color GridLinesColor {get; set;} /// Gets or sets the color of the losing deal. Color LosingDealColor {get; set;} /// Gets or sets the color of the period separator. Color PeriodSeparatorColor {get; set;} /// Gets or sets the color of Sell order positions and orders. Color SellColor {get; set;} /// Gets or sets the color of the tick volume. Color TickVolumeColor {get; set;} /// Gets or sets the color of the winning deal. Color WinningDealColor {get; set;} } /// Represents the chart template display Settings. public interface ChartTemplateDisplaySettings { /// Defines if the Add cBot button is displayed on the chart. bool AddRobotButton {get; set;} /// Defines if the Ask Price Line is displayed on the chart. bool AskPriceLine {get; set;} /// Defines if the Bars is displayed on the chart. bool Bars {get; set;} /// Defines if the Bid Price Line is displayed on the chart. bool BidPriceLine {get; set;} /// Defines if the Chart Scale is displayed on the chart. bool ChartScale {get; set;} /// Gets or sets the type of the chart for chart template. ChartType ChartType {get; set;} /// Defines if the Deal Map is displayed on the chart. bool DealMap {get; set;} /// Defines if the Grid is displayed on the chart background. bool Grid {get; set;} /// Defines if the Indicator Titles are displayed on the chart. bool IndicatorTitles {get; set;} /// Defines if the price scale is inverted for chart template. bool IsPriceScaleInverted {get; set;} /// Defines if the price to bar ratio is locked for chart template. Locking sets the price scale mode to Regular. bool IsPriceToBarRatioLocked {get; set;} /// Defines if the auto scale fits only the bars for chart template. bool IsScalePriceChartOnly {get; set;} /// Defines if the Market Sentiment is visible on the chart. bool MarketSentiment {get; set;} /// Defines if the Orders are displayed on the chart. bool Orders {get; set;} /// Defines if the Period Separators are displayed on the chart. bool PeriodSeparators {get; set;} /// Defines if the Positions are displayed on the chart. bool Positions {get; set;} /// Defines if the Price Alerts are visible on the chart. bool PriceAlerts {get; set;} /// Defines if the price axis overlays buttons are visible on the chart. bool PriceAxisOverlayButtons {get; set;} /// Gets or sets the price axis position for chart template. ChartPriceAxisPosition PriceAxisPosition {get; set;} /// Gets or sets the price scale mode for chart template. While the template price to bar ratio is locked only Regular can be set, and setting any other mode is ignored. ChartPriceScaleMode PriceScaleMode {get; set;} /// Gets or sets the price to bar ratio for chart template. Values that are not greater than zero, NaN or infinite are ignored. double PriceToBarRatio {get; set;} /// Defines if the QuickTrade buttons are visible on the chart. bool QuickTradeButtons {get; set;} /// Defines if the Target is visible on the chart. bool Targets {get; set;} /// Defines if the Tick Volume is displayed on the chart. bool TickVolume {get; set;} /// Gets or sets the chart zoom percent value for chart template. Valid values are from 5 to 500 with a step of 5, as can be seen on UI in the charts Zoom control. int ZoomLevel {get; set;} } /// The interface representing an indicator of to a chart template. public interface ChartTemplateIndicator { /// Gets the ID of a specific indicator. string Id {get;} /// Gets the collection of indicator parameters. ChartTemplateAlgoInstanceParameters Parameters {get;} /// Gets the IndicatorType of an indicator. IndicatorType Type {get;} } /// The interface representing a chart template indicator instances collection. public interface ChartTemplateIndicators { /// Adds a new indicator to a chart template. ChartTemplateIndicator Add(string name, object[] parameterValues); /// Adds a new indicator to a chart template. ChartTemplateIndicator Add(IndicatorType type, object[] parameterValues); /// Returns a chart template indicator by type if exists otherwise null. ChartTemplateIndicator Get(string id); /// Removes an indicator from a chart template. bool Remove(ChartTemplateIndicator chartTemplateIndicator); /// Gets the number of all indicators attached to a chart template. int Count {get;} } /// Occurs when a chart template is removed. public class ChartTemplateRemovedEventArgs { /// Gets the chart template. public ChartTemplate ChartTemplate {get;} } /// The interface representing a Robot of a chart template. public interface ChartTemplateRobot { /// Gets the ID of a specific indicator. string Id {get;} /// Gets the collection of Robot parameters. ChartTemplateAlgoInstanceParameters Parameters {get;} /// Gets the RobotType of a Robot instance. RobotType Type {get;} } /// The interface representing a chart template robots instances collection. public interface ChartTemplateRobots { /// Adds a new Robot instance to a chart template. ChartTemplateRobot Add(string name, object[] parameterValues); /// Adds a new Robot instance to a chart template. ChartTemplateRobot Add(RobotType type, object[] parameterValues); /// Returns a chart template robot by type if exists otherwise null. ChartTemplateRobot Get(string id); /// Removes a Robot instance from a chart template. bool Remove(ChartTemplateRobot chartTemplateRobot); /// Gets the number of all Robots attached to a chart. int Count {get;} } /// Represents collection of chart templates and provide access to chart template API. public interface ChartTemplates { /// Checks if a chart template with passed name exists or not. bool Contains(string chartTemplateName); /// Creates a new chart template based on a chart. ChartTemplate Create(string chartTemplateName, Chart chart); /// Creates a new chart template. ChartTemplate Create(string chartTemplateName); /// Duplicates or creates a copy of an existing chart template. ChartTemplate Duplicate(string chartTemplateName, ChartTemplate chartTemplate); /// Returns a chart template by name if exists otherwise null. ChartTemplate Get(string chartTemplateName); /// Removes an existing chart template. bool Remove(ChartTemplate chartTemplate); /// Gets or sets default chart template. ChartTemplate DefaultTemplate {get; set;} /// Occurs when a new chart template is added. event Action Added; /// Occurs when a chart template is removed. event Action Removed; } /// Represents the Text chart object. Allows place the text anywhere on the chart, bound to the chart. public interface ChartText { /// Gets or sets the rotation angle of the text in degrees, measured clockwise around the text anchor point. The text can be fully rotated; any value is accepted and normalized to the 0 to 360 range. The default value is 0, which renders horizontal text. double Angle {get; set;} /// Gets or sets the text color. Color Color {get; set;} /// Gets or sets the font style of the text. string FontFamily {get; set;} /// Gets or sets the font size of text double FontSize {get; set;} /// Gets or sets the horizontal alignment of the text regarding the anchor point. HorizontalAlignment HorizontalAlignment {get; set;} /// Gets or sets if the text is Bold or not bool IsBold {get; set;} /// Gets or sets if the text is Italic or not bool IsItalic {get; set;} /// Gets or sets if the text is Underlined or not bool IsUnderlined {get; set;} /// Gets or sets the text content. string Text {get; set;} /// Gets or sets the Time line value. DateTime Time {get; set;} /// Gets or sets the vertical alignment of the text regarding the anchor point. VerticalAlignment VerticalAlignment {get; set;} /// Gets or sets the Y-axis value. double Y {get; set;} } /// Represents the Trend Line chart object. A straight line that can be drawn from point 1 to the point 2 in any direction to mark the trends on the chart. public interface ChartTrendLine { /// Calculates Y-axis value corresponding the specified bar index. double CalculateY(int barIndex); /// Calculates Y-axis value corresponding the specified time value. double CalculateY(DateTime time); /// Gets or sets the color of the Trend Line. Color Color {get; set;} /// Defines if the Trend Line extends to infinity. bool ExtendToInfinity {get; set;} /// Gets or sets the Trend Line style. LineStyle LineStyle {get; set;} /// Defines the trend line angle. bool ShowAngle {get; set;} /// Gets or sets the thickness of the Trend Line. int Thickness {get; set;} /// Gets or sets the value 1 on the Time line. DateTime Time1 {get; set;} /// Gets or sets the value 2 on the Time line. DateTime Time2 {get; set;} /// Gets or sets the value 1 on the Y-axis. double Y1 {get; set;} /// Gets or sets the value 2 on the Y-axis. double Y2 {get; set;} } /// Represents the Triangle chart object. public interface ChartTriangle { /// Gets or sets the value 1 on the Time line. DateTime Time1 {get; set;} /// Gets or sets the value 2 on the Time line. DateTime Time2 {get; set;} /// Gets or sets the value 3 on the Time line. DateTime Time3 {get; set;} /// Gets or sets the value 1 on the Y-axis. double Y1 {get; set;} /// Gets or sets the value 2 on the Y-axis. double Y2 {get; set;} /// Gets or sets the value 3 on the Y-axis. double Y3 {get; set;} } /// Represents the predefined chart types. public enum ChartType { /// The Bar chart. Bars, /// The Candlestick chart. Candlesticks, /// The Line chart. Line, /// The Dots chart. Dots, /// The Area chart. Area, /// The HLC chart. Hlc, } /// Provides data for the chart type change event. public class ChartTypeEventArgs { /// Gets the chart. public Chart Chart {get;} } /// Represents the Vertical Line chart object. The line parallel to the Y-axis that can be set on a certain time value on the X-axis. public interface ChartVerticalLine { /// Gets or sets the line color. Color Color {get; set;} /// Gets or sets the line style. LineStyle LineStyle {get; set;} /// Gets or sets the line thickness. int Thickness {get; set;} /// Gets or sets the value on the Time line. DateTime Time {get; set;} } /// Provides data for chart visibility changed event public class ChartVisibilityChangedEventArgs { /// The chart that event belonges to. public Chart Chart {get;} } /// Provides data for the chart type change event. public class ChartZoomEventArgs { /// Gets the chart. public Chart Chart {get;} } /// Represents the Checkbox. public class CheckBox : Control { /// Initializes a new instance of the checkbox class. public CheckBox(); /// Gets or sets the content. public ControlBase Content {get; set;} /// Gets or sets a value indicating whether the checkbox is checked. public bool? IsChecked {get; set;} /// Checks if the checkbox may be of three states - checked, unchecked and indeterminate. public bool IsThreeState {get; set;} /// Gets or sets the checkbox text. public string Text {get; set;} /// Occurs when checked. public event Action Checked; /// Occurs when clicked. public event Action Click; /// Occurs when indeterminate. public event Action Indeterminate; /// Occurs when unchecked. public event Action Unchecked; } /// Provides data for the checkbox event. public class CheckBoxEventArgs { /// Gets the checkbox data. public CheckBox CheckBox {get;} } /// Provides access to system Clipboard. public interface Clipboard { /// Returns a string containing text data on the Clipboard. string GetText(); /// Stores text data on the Clipboard. void SetText(string text); } /// System Clipboard Permission public interface ClipboardPermission { } /// Represents the cloud between the indicator lines. public class CloudAttribute : Attribute { /// The cloud between the indicator lines. public CloudAttribute(string firstLineName, string secondLineName); /// Cloud color when the first line is above the second one. If not specified, the color of the first line is used. public string FirstColor {get; set;} /// The name of the first indicator line. public string FirstLineName {get;} /// The cloud opacity. Value can be set from 0 (transparent) to 1 (opaque). Values higher than 1 will be set to 1, values below 0 will be set to 0. Opacity is multiplied by the alpha channel of the active color (first or second color). Default opacity value is 0.2. public double Opacity {get; set;} /// Cloud color when the second line is above the first one. If not specified, color of the second line is used. public string SecondColor {get; set;} /// The name of the second indicator line. public string SecondLineName {get;} } /// Represents an ARGB (alpha, red, green, blue) color. public sealed class Color { /// Creates a color from alpha, red, green and blue components. public static Color FromArgb(int alpha, int red, int green, int blue); /// Creates a color from existing color, but with new specified alpha value. public static Color FromArgb(int alpha, Color baseColor); /// Creates a color from a 32-bit ARGB value. public static Color FromArgb(int argb); /// Creates a color from red, green and blue values. The alpha value is implicitly 255 (fully opaque). public static Color FromArgb(int red, int green, int blue); /// Attempts to convert a hex string to a Color. public static Color FromHex(string hex); /// Creates a color from the specified name of a predefined color. public static Color FromName(string name); /// Get the 32-bit ARGB color value. public int ToArgb(); /// Get the hex string representation of the color. public string ToHexString(); /// Gets the alpha component value of the color. public byte A {get;} /// Gets a system-defined color that has an ARGB value of #FFF0F8FF. public static Color AliceBlue {get;} /// Gets a system-defined color that has an ARGB value of #FFFAEBD7. public static Color AntiqueWhite {get;} /// Gets a system-defined color that has an ARGB value of #FF00FFFF. public static Color Aqua {get;} /// Gets a system-defined color that has an ARGB value of #FF7FFFD4. public static Color Aquamarine {get;} /// Gets a system-defined color that has an ARGB value of #FFF0FFFF. public static Color Azure {get;} /// Gets the blue component value of the color. public byte B {get;} /// Gets a system-defined color that has an ARGB value of #FFF5F5DC. public static Color Beige {get;} /// Gets a system-defined color that has an ARGB value of #FFFFE4C4. public static Color Bisque {get;} /// Gets a system-defined color that has an ARGB value of #FF000000. public static Color Black {get;} /// Gets a system-defined color that has an ARGB value of #FFFFEBCD. public static Color BlanchedAlmond {get;} /// Gets a system-defined color that has an ARGB value of #FF0000FF. public static Color Blue {get;} /// Gets a system-defined color that has an ARGB value of #FF8A2BE2. public static Color BlueViolet {get;} /// Gets a system-defined color that has an ARGB value of #FFA52A2A. public static Color Brown {get;} /// Gets a system-defined color that has an ARGB value of #FFDEB887. public static Color BurlyWood {get;} /// Gets a system-defined color that has an ARGB value of #FF5F9EA0. public static Color CadetBlue {get;} /// Gets a system-defined color that has an ARGB value of #FF7FFF00. public static Color Chartreuse {get;} /// Gets a system-defined color that has an ARGB value of #FFD2691E. public static Color Chocolate {get;} /// Gets a system-defined color that has an ARGB value of #FFFF7F50. public static Color Coral {get;} /// Gets a system-defined color that has an ARGB value of #FF6495ED. public static Color CornflowerBlue {get;} /// Gets a system-defined color that has an ARGB value of #FFFFF8DC. public static Color Cornsilk {get;} /// Gets a system-defined color that has an ARGB value of #FFDC143C. public static Color Crimson {get;} /// Gets a system-defined color that has an ARGB value of #FF00FFFF. public static Color Cyan {get;} /// Gets a system-defined color that has an ARGB value of #FF00008B. public static Color DarkBlue {get;} /// Gets a system-defined color that has an ARGB value of #FF008B8B. public static Color DarkCyan {get;} /// Gets a system-defined color that has an ARGB value of #FFB8860B. public static Color DarkGoldenrod {get;} /// Gets a system-defined color that has an ARGB value of #FFA9A9A9. public static Color DarkGray {get;} /// Gets a system-defined color that has an ARGB value of #FF006400. public static Color DarkGreen {get;} /// Gets a system-defined color that has an ARGB value of #FFBDB76B. public static Color DarkKhaki {get;} /// Gets a system-defined color that has an ARGB value of #FF8B008B. public static Color DarkMagenta {get;} /// Gets a system-defined color that has an ARGB value of #FF556B2F. public static Color DarkOliveGreen {get;} /// Gets a system-defined color that has an ARGB value of #FFFF8C00. public static Color DarkOrange {get;} /// Gets a system-defined color that has an ARGB value of #FF9932CC. public static Color DarkOrchid {get;} /// Gets a system-defined color that has an ARGB value of #FF8B0000. public static Color DarkRed {get;} /// Gets a system-defined color that has an ARGB value of #FFE9967A. public static Color DarkSalmon {get;} /// Gets a system-defined color that has an ARGB value of #FF8FBC8F. public static Color DarkSeaGreen {get;} /// Gets a system-defined color that has an ARGB value of #FF483D8B. public static Color DarkSlateBlue {get;} /// Gets a system-defined color that has an ARGB value of #FF2F4F4F. public static Color DarkSlateGray {get;} /// Gets a system-defined color that has an ARGB value of #FF00CED1. public static Color DarkTurquoise {get;} /// Gets a system-defined color that has an ARGB value of #FF9400D3. public static Color DarkViolet {get;} /// Gets a system-defined color that has an ARGB value of #FFFF1493. public static Color DeepPink {get;} /// Gets a system-defined color that has an ARGB value of #FF00BFFF. public static Color DeepSkyBlue {get;} /// Gets a system-defined color that has an ARGB value of #FF696969. public static Color DimGray {get;} /// Gets a system-defined color that has an ARGB value of #FF1E90FF. public static Color DodgerBlue {get;} /// Gets a system-defined color that has an ARGB value of #FFB22222. public static Color Firebrick {get;} /// Gets a system-defined color that has an ARGB value of #FFFFFAF0. public static Color FloralWhite {get;} /// Gets a system-defined color that has an ARGB value of #FF228B22. public static Color ForestGreen {get;} /// Gets a system-defined color that has an ARGB value of #FFFF00FF. public static Color Fuchsia {get;} /// Gets the green component value of the color. public byte G {get;} /// Gets a system-defined color that has an ARGB value of #FFDCDCDC. public static Color Gainsboro {get;} /// Gets a system-defined color that has an ARGB value of #FFF8F8FF. public static Color GhostWhite {get;} /// Gets a system-defined color that has an ARGB value of #FFFFD700. public static Color Gold {get;} /// Gets a system-defined color that has an ARGB value of #FFDAA520. public static Color Goldenrod {get;} /// Gets a system-defined color that has an ARGB value of #FF808080. public static Color Gray {get;} /// Gets a system-defined color that has an ARGB value of #FF008000. public static Color Green {get;} /// Gets a system-defined color that has an ARGB value of #FFADFF2F. public static Color GreenYellow {get;} /// Gets a system-defined color that has an ARGB value of #FFF0FFF0. public static Color Honeydew {get;} /// Gets a system-defined color that has an ARGB value of #FFFF69B4. public static Color HotPink {get;} /// Gets a system-defined color that has an ARGB value of #FFCD5C5C. public static Color IndianRed {get;} /// Gets a system-defined color that has an ARGB value of #FF4B0082. public static Color Indigo {get;} /// Gets a system-defined color that has an ARGB value of #FFFFFFF0. public static Color Ivory {get;} /// Gets a system-defined color that has an ARGB value of #FFF0E68C. public static Color Khaki {get;} /// Gets a system-defined color that has an ARGB value of #FFE6E6FA. public static Color Lavender {get;} /// Gets a system-defined color that has an ARGB value of #FFFFF0F5. public static Color LavenderBlush {get;} /// Gets a system-defined color that has an ARGB value of #FF7CFC00. public static Color LawnGreen {get;} /// Gets a system-defined color that has an ARGB value of #FFFFFACD. public static Color LemonChiffon {get;} /// Gets a system-defined color that has an ARGB value of #FFADD8E6. public static Color LightBlue {get;} /// Gets a system-defined color that has an ARGB value of #FFF08080. public static Color LightCoral {get;} /// Gets a system-defined color that has an ARGB value of #FFE0FFFF. public static Color LightCyan {get;} /// Gets a system-defined color that has an ARGB value of #FFFAFAD2. public static Color LightGoldenrodYellow {get;} /// Gets a system-defined color that has an ARGB value of #FFD3D3D3. public static Color LightGray {get;} /// Gets a system-defined color that has an ARGB value of #FF90EE90. public static Color LightGreen {get;} /// Gets a system-defined color that has an ARGB value of #FFFFB6C1. public static Color LightPink {get;} /// Gets a system-defined color that has an ARGB value of #FFFFA07A. public static Color LightSalmon {get;} /// Gets a system-defined color that has an ARGB value of #FF20B2AA. public static Color LightSeaGreen {get;} /// Gets a system-defined color that has an ARGB value of #FF87CEFA. public static Color LightSkyBlue {get;} /// Gets a system-defined color that has an ARGB value of #FF778899. public static Color LightSlateGray {get;} /// Gets a system-defined color that has an ARGB value of #FFB0C4DE. public static Color LightSteelBlue {get;} /// Gets a system-defined color that has an ARGB value of #FFFFFFE0. public static Color LightYellow {get;} /// Gets a system-defined color that has an ARGB value of #FF00FF00. public static Color Lime {get;} /// Gets a system-defined color that has an ARGB value of #FF32CD32. public static Color LimeGreen {get;} /// Gets a system-defined color that has an ARGB value of #FFFAF0E6. public static Color Linen {get;} /// Gets a system-defined color that has an ARGB value of #FFFF00FF. public static Color Magenta {get;} /// Gets a system-defined color that has an ARGB value of #FF800000. public static Color Maroon {get;} /// Gets a system-defined color that has an ARGB value of #FF66CDAA. public static Color MediumAquamarine {get;} /// Gets a system-defined color that has an ARGB value of #FF0000CD. public static Color MediumBlue {get;} /// Gets a system-defined color that has an ARGB value of #FFBA55D3. public static Color MediumOrchid {get;} /// Gets a system-defined color that has an ARGB value of #FF9370DB. public static Color MediumPurple {get;} /// Gets a system-defined color that has an ARGB value of #FF3CB371. public static Color MediumSeaGreen {get;} /// Gets a system-defined color that has an ARGB value of #FF7B68EE. public static Color MediumSlateBlue {get;} /// Gets a system-defined color that has an ARGB value of #FF00FA9A. public static Color MediumSpringGreen {get;} /// Gets a system-defined color that has an ARGB value of #FF48D1CC. public static Color MediumTurquoise {get;} /// Gets a system-defined color that has an ARGB value of #FFC71585 public static Color MediumVioletRed {get;} /// Gets a system-defined color that has an ARGB value of #FF191970. public static Color MidnightBlue {get;} /// Gets a system-defined color that has an ARGB value of #FFF5FFFA. public static Color MintCream {get;} /// Gets a system-defined color that has an ARGB value of #FFFFE4E1. public static Color MistyRose {get;} /// Gets a system-defined color that has an ARGB value of #FFFFE4B5. public static Color Moccasin {get;} /// Gets a system-defined color that has an ARGB value of #FFFFDEAD. public static Color NavajoWhite {get;} /// Gets a system-defined color that has an ARGB value of #FF000080. public static Color Navy {get;} /// Gets a system-defined color that has an ARGB value of #FFFDF5E6. public static Color OldLace {get;} /// Gets a system-defined color that has an ARGB value of #FF808000. public static Color Olive {get;} /// Gets a system-defined color that has an ARGB value of #FF6B8E23. public static Color OliveDrab {get;} /// Gets a system-defined color that has an ARGB value of #FFFFA500. public static Color Orange {get;} /// Gets a system-defined color that has an ARGB value of #FFFF4500. public static Color OrangeRed {get;} /// Gets a system-defined color that has an ARGB value of #FFDA70D6. public static Color Orchid {get;} /// Gets a system-defined color that has an ARGB value of #FFEEE8AA. public static Color PaleGoldenrod {get;} /// Gets a system-defined color that has an ARGB value of #FF98FB98. public static Color PaleGreen {get;} /// Gets a system-defined color that has an ARGB value of #FFAFEEEE. public static Color PaleTurquoise {get;} /// Gets a system-defined color that has an ARGB value of #FFDB7093. public static Color PaleVioletRed {get;} /// Gets a system-defined color that has an ARGB value of #FFFFEFD5. public static Color PapayaWhip {get;} /// Gets a system-defined color that has an ARGB value of #FFFFDAB9. public static Color PeachPuff {get;} /// Gets a system-defined color that has an ARGB value of #FFCD853F. public static Color Peru {get;} /// Gets a system-defined color that has an ARGB value of #FFFFC0CB. public static Color Pink {get;} /// Gets a system-defined color that has an ARGB value of #FFDDA0DD. public static Color Plum {get;} /// Gets a system-defined color that has an ARGB value of #FFB0E0E6. public static Color PowderBlue {get;} /// Gets a system-defined color that has an ARGB value of #FF800080. public static Color Purple {get;} /// Gets the red component value of the color. public byte R {get;} /// Gets a system-defined color that has an ARGB value of #FFFF0000. public static Color Red {get;} /// Gets a system-defined color that has an ARGB value of #FFBC8F8F. public static Color RosyBrown {get;} /// Gets a system-defined color that has an ARGB value of #FF4169E1. public static Color RoyalBlue {get;} /// Gets a system-defined color that has an ARGB value of #FF8B4513. public static Color SaddleBrown {get;} /// Gets a system-defined color that has an ARGB value of #FFFA8072. public static Color Salmon {get;} /// Gets a system-defined color that has an ARGB value of #FFF4A460. public static Color SandyBrown {get;} /// Gets a system-defined color that has an ARGB value of #FF2E8B57. public static Color SeaGreen {get;} /// Gets a system-defined color that has an ARGB value of #FFFFF5EE. public static Color SeaShell {get;} /// Gets a system-defined color that has an ARGB value of #FFA0522D. public static Color Sienna {get;} /// Gets a system-defined color that has an ARGB value of #FFC0C0C0. public static Color Silver {get;} /// Gets a system-defined color that has an ARGB value of #FF87CEEB. public static Color SkyBlue {get;} /// Gets a system-defined color that has an ARGB value of #FF6A5ACD. public static Color SlateBlue {get;} /// Gets a system-defined color that has an ARGB value of #FF708090. public static Color SlateGray {get;} /// Gets a system-defined color that has an ARGB value of #FFFFFAFA. public static Color Snow {get;} /// Gets a system-defined color that has an ARGB value of #FF00FF7F. public static Color SpringGreen {get;} /// Gets a system-defined color that has an ARGB value of #FF4682B4. public static Color SteelBlue {get;} /// Gets a system-defined color that has an ARGB value of #FFD2B48C. public static Color Tan {get;} /// Gets a system-defined color that has an ARGB value of #FF008080. public static Color Teal {get;} /// Gets a system-defined color that has an ARGB value of #FFD8BFD8. public static Color Thistle {get;} /// Gets a system-defined color that has an ARGB value of #FFFF6347. public static Color Tomato {get;} /// Gets a system-defined color that has an ARGB value of #00FFFFFF. public static Color Transparent {get;} /// Gets a system-defined color that has an ARGB value of #FF40E0D0. public static Color Turquoise {get;} /// Gets a system-defined color that has an ARGB value of #FFEE82EE. public static Color Violet {get;} /// Gets a system-defined color that has an ARGB value of #FFF5DEB3. public static Color Wheat {get;} /// Gets a system-defined color that has an ARGB value of #FFFFFFFF. public static Color White {get;} /// Gets a system-defined color that has an ARGB value of #FFF5F5F5. public static Color WhiteSmoke {get;} /// Gets a system-defined color that has an ARGB value of #FFFFFF00. public static Color Yellow {get;} /// Gets a system-defined color that has an ARGB value of #FF9ACD32. public static Color YellowGreen {get;} /// Represents empty color. public static Color Empty; } /// Represents the ColorPicker control. public class ColorPicker : ControlBase { /// Initializes a new instance of the ColorPicker class. public ColorPicker(); /// Gets or sets if color picker is stretched or not. public bool IsStretched {get; set;} /// Gets or sets selected color. public Color SelectedColor {get; set;} /// Occurs when selected color is changed. public event Action SelectedColorChanged; } /// Provides data for the ColorPicker SelectedColorChanged event. public class ColorPickerSelectedColorChangedEventArgs { /// Gets the color picker control. public ColorPicker ColorPicker {get;} /// Gets the new selected color. public Color NewSelectedColor {get;} /// Gets the previous selected color. public Color PreviousSelectedColor {get;} } /// Represents the color theme. public enum ColorTheme { /// The dark color theme. Dark, /// The light color theme. Light, } /// Provides data for the color theme change event. public class ColorThemeChangeEventArgs { /// Gets the color theme. public ColorTheme ColorTheme {get;} } /// A control that shows drop down list of items and allows user to select a single item from the list public class ComboBox : Control { /// Creates a new empty ComboBox with default ComboBox Style public ComboBox(); /// Adds a new item to the ComboBox public void AddItem(string item); /// Removes an existing item from the ComboBox public void RemoveItem(string item); /// Set / Get the ComboBox selected item index public int SelectedIndex {get; set;} /// Set / Get the ComboBox selected item public string SelectedItem {get; set;} /// This event will trigger if the ComboBox selected item changed public event Action SelectedItemChanged; } /// Provides data for ComboBox SelectedItemChanged event handlers public class ComboBoxSelectedItemChangedEventArgs { /// The ComboBox that it is selected item changed public ComboBox ComboBox {get;} /// The new selected item of ComboBox public string SelectedItem {get;} } /// Represents a plugin command. public interface Command { /// Gets command unique Id. Guid Id {get;} /// Gets / sets if command is enabled or not. bool IsEnabled {get; set;} /// Gets / sets command tooltips. string ToolTip {get; set;} /// Gets command type. CommandType Type {get;} } /// Represents a plugin command callback arguments. public class CommandArgs { /// Gets the command associated with these arguments. public Command Command {get;} /// Gets the context in which the command is executed. public object Context {get;} } /// Represents the result of a command execution. public class CommandResult { /// Initialises a new instance of the CommandResult class. public CommandResult(ControlBase child); /// Gets the child control associated with the command result. public ControlBase Child {get;} } /// Represents the predefined types of plugin commands. public enum CommandType { /// A command for chart group container toolbar. ChartContainerToolbar, } /// Represents the collection of plugin commands. public interface Commands { /// Adds a new command with a callback. Command Add(CommandType type, Action callback); /// Adds a new command with a callback. Command Add(CommandType type, Action callback, SvgIcon icon); /// Adds a new command with a callback. Command Add(CommandType type, Func callback); /// Adds a new command with a callback and icon. Command Add(CommandType type, Func callback, SvgIcon icon); /// Returns a command by Id. Command GetById(Guid id); /// Returns all commands based on type. Command[] GetByType(CommandType type); /// Removes a command by Id. bool Remove(Guid id); /// Returns number of all commands. int Count {get;} } /// Provides access to the properties describing an asynchronous algo compilation operation. public class CompilationOperation { /// True if compilation operation is being executed, false if it completed. public bool IsExecuting {get;} /// The result of compilation operation. public CompilationResult Result {get;} } /// Compilation options container. public class CompilationOptions { /// Creates compilation options. public CompilationOptions(); /// Gets / Inits inclusion of source code in output algo file (Default is False). public bool IncludeSourceCode {get; set;} /// Gets / Inits output algo file path, if not provided default platform algo path will be used. public string OutputAlgoFilePath {get; set;} } /// The result of an algo compilation. public class CompilationResult { /// Gets compilation errors if Succeeded was False, otherwise null. public IReadonlyList Errors {get;} /// Gets the result of compilation, True if succeeded otherwise False. public bool Succeeded {get;} } /// Provides access to compiler for algos. public interface Compiler { /// Compiles an algo. CompilationResult Compile(string csprojFilePath); /// Compiles an algo. CompilationResult Compile(string csprojFilePath, CompilationOptions options); /// Compiles an algo asynchronously and calls the passed callback when compilation finishes. CompilationOperation CompileAsync(string csprojFilePath, Action callback); /// Compiles an algo asynchronously and calls the passed callback when compilation finishes. CompilationOperation CompileAsync(string csprojFilePath, Action callback, CompilationOptions options); } /// Represents the Chart Control class. public abstract class Control : ControlBase { /// Gets or sets the color of the chart control background. public Color BackgroundColor {get; set;} /// Gets or sets the font family. public string FontFamily {get; set;} /// Gets or sets the font size. public double FontSize {get; set;} /// Gets or sets the font style. public FontStyle FontStyle {get; set;} /// Gets or sets the font weight. public FontWeight FontWeight {get; set;} /// Gets or sets the color of the chart control foreground. Check the Color class for the ARGB (alpha, red, green, blue) color values, or use the strings Color.Red, Color.FromName("Red"), Color.FromArgb(255, 0, 0), Color.FromHex("#ff0000"), "Red", "#ff0000". public Color ForegroundColor {get; set;} /// Gets or sets the horizontal content alignment. public HorizontalAlignment HorizontalContentAlignment {get; set;} /// Gets or sets the chart control padding. Property value can be set using Thickness, number, or a string new Thickness(5), new Thickness(1, 2, 3, 4), 5, "5", "1 2 3 4". public Thickness Padding {get; set;} /// Gets or sets the vertical content alignment. public VerticalAlignment VerticalContentAlignment {get; set;} } /// Represents the base of chart controls. public abstract class ControlBase { /// Sets the property to the default value and removes its privelege over the style. public void ResetProperty(ControlProperty property); /// Gets or sets the position of the chart control to the bottom of the chart area. Works only when the control is inside the Canvas panel. public double Bottom {get; set;} /// Specifies the dock position of the chart control instance. Works only inside the DockPanel. public Dock Dock {get; set;} /// Gets or sets the hight of the chart control. public double Height {get; set;} /// Gets or sets the horizontal alignment of the chart control instance. public HorizontalAlignment HorizontalAlignment {get; set;} /// Gets or sets the value indicating whether this instance of the chart control is enabled. public bool IsEnabled {get; set;} /// Gets or sets a value that declares if the chart control instance is visible for the mouse hit testing. If set to false, then the control will not handle any mouse events. public bool IsHitTestVisible {get; set;} /// Gets or sets the value indicating whether this instance of the chart control instance is visible. public bool IsVisible {get; set;} /// Gets or sets the position of the chart control to the left side of the chart area. Works only when the control is inside the Canvas panel. public double Left {get; set;} /// Gets or sets the level of thickness of the margin of the chart control instance. Property value can be set using Thickness, number, or a string new Thickness(5), new Thickness(1, 2, 3, 4), 5, "5", "1 2 3 4". public Thickness Margin {get; set;} /// Gets or sets the maximum height of the chart control. public double MaxHeight {get; set;} /// Gets or sets the maximum width of the chart control. public double MaxWidth {get; set;} /// Gets or sets the minimum height of the chart control. public double MinHeight {get; set;} /// Gets or sets the minimum width of the chart control. public double MinWidth {get; set;} /// Gets or sets the level of opacity of the chart control instance. Can be set from 0 (transparent) to 1 (opaque). Values higher than 1 will be set to 1, values below 0 will be set to 0. public double Opacity {get; set;} /// Gets or sets the position of the chart control to the rignt side of the chart area. Works only when the control is inside the Canvas panel. public double Right {get; set;} /// Gets or sets the style of a chart control. public Style Style {get; set;} /// Gets or sets the position of the chart control to the top of the chart area. Works only when the control is inside the Canvas panel. public double Top {get; set;} /// Gets the unique identifier of a chart control. public Guid UniqueId {get;} /// Gets or sets the vertical alignment of the chart control instance. public VerticalAlignment VerticalAlignment {get; set;} /// Gets or sets the width of the chart control. public double Width {get; set;} } /// Represents the Control property enumeration used in Style to get or set a style for a specific property. public enum ControlProperty { /// The background color. Property value can be set using color values, or use the strings Color.Red, Color.FromName("Red"), Color.FromArgb(255, 0, 0), Color.FromHex("#ff0000"), "Red", "#ff0000". BackgroundColor, /// The foreground color. Property value can be set using color values, or use the strings Color.Red, Color.FromName("Red"), Color.FromArgb(255, 0, 0), Color.FromHex("#ff0000"), "Red", "#ff0000". ForegroundColor, /// The opacity of the control. Can be set from 0 (transparent) to 1 (opaque). Values higher than 1 will be set to 1, values below 0 will be set to 0. Opacity, /// The minimum width of the control. MinWidth, /// The maximum width of the control. MaxWidth, /// The minimum hight of the control. MinHeight, /// The maximum hight of the control. MaxHeight, /// The width of the control. Width, /// The height of the control. Height, /// The padding of the control. Property value can be set using Thickness, number, or a string new Thickness(5), new Thickness(1, 2, 3, 4), 5, "5", "1 2 3 4". Padding, /// The thickness of the border of the control. Property value can be set using Thickness, number, or a string new Thickness(5), new Thickness(1, 2, 3, 4), 5, "5", "1 2 3 4". BorderThickness, /// The radius of the corner of the control. Property value can be set using CornerRadius, number, or a string: new CornerRadius(5), new CornerRadius(1, 2, 3, 4). CornerRadius, /// The horizontal content alignment. HorizontalContentAlignment, /// The vertical content alignment. VerticalContentAlignment, /// The alignment of the content. TextAlignment, /// The margin of the content. Property value can be set using Thickness, number, or a string new Thickness(5), new Thickness(1, 2, 3, 4), 5, "5", "1 2 3 4". Margin, /// The content font weight. Property value can be set using the FontWeight enumerations: FontWeight.Bold, FontWeight.SemiBold, FontWeight.Light, FontWeight.Thin, etc. FontWeight, /// The content font style. Property value can be set using the FontStyle enumeration: FontWeight.Italic or FontWeight.Oblique. FontStyle, /// The font family. FontFamily, /// The font size. FontSize, /// The border color. Property value can be set using color values, or use the strings Color.Red, Color.FromName("Red"), Color.FromArgb(255, 0, 0), Color.FromHex("#ff0000"), "Red", "#ff0000". BorderColor, /// The caret color. Property value can be set using color values, or use the strings Color.Red, Color.FromName("Red"), Color.FromArgb(255, 0, 0), Color.FromHex("#ff0000"), "Red", "#ff0000". CaretColor, } /// Represents the chart control state. public enum ControlState { /// The hover. Hover, /// The pressed. Pressed, /// The disabled. Disabled, /// The checked. Checked, /// The dark theme. DarkTheme, /// The light theme. LightTheme, } /// Represents the radii of a rectangle's corners. public sealed struct CornerRadius : ValueType { /// Initializes a new instance of the CornerRadius structure. public CornerRadius(double topLeft, double topRight, double bottomRight, double bottomLeft); /// Initializes a new instance of the CornerRadius structure. public CornerRadius(double uniformRadius); /// Gets or sets the radius of the bottom-left corner. public double BottomLeft {get; set;} /// Gets or sets the radius of the bottom-right corner. public double BottomRight {get; set;} /// Gets or sets the radius of the top-left corner. public double TopLeft {get; set;} /// Gets or sets the radius of the top-right corner. public double TopRight {get; set;} } /// Represents a custom OHLC bar. public sealed struct CustomBar : ValueType { /// Creates a new custom bar. public CustomBar(DateTime time, double open, double high, double low, double close, long volume); /// Gets close price of bar. public double Close {get;} /// Gets high price of bar. public double High {get;} /// Gets low price of bar. public double Low {get;} /// Gets open price of bar. public double Open {get;} /// Gets open time of bar. public DateTime Time {get;} /// Gets volume of bar. public long Volume {get;} } /// Represents a mutable collection of OHLC bars that will be used for a custom time frame / symbol. public interface CustomBars { /// Appends a new bar to the end of bars collection. void AppendBar(CustomBar bar); /// Appends a collection of bars to the end of bars collection. void AppendBars(IEnumerable bars); /// Prepends a new bar to the start of bars collection. void PrependBar(CustomBar bar); /// Prepends a collection of bars to the start of bars collection. void PrependBars(IEnumerable bars); /// Updates the last bar. void UpdateLastBar(double open, double high, double low, double close, long volume); /// Gets readonly bars. Bars Bars {get;} /// Gets IsLoaded status, If true it means custom bars is being used and can't be removed. bool IsLoaded {get;} /// Gets symbol of custom bars. Symbol Symbol {get;} /// Gets timeframe of custom bars. TimeFrame TimeFrame {get;} /// Occurs when user scrolls back on a custom bars chart. event Action NeedsMore; } /// Provides data for CustomBars NeedsMore event. public class CustomBarsNeedsMoreEventArgs { /// Gets custom bars that needs more bars. public CustomBars CustomBars {get;} } /// Represents the custom control to create reusable controls with customized look and behavior. public abstract class CustomControl : ControlBase { /// Adds a child control. protected void AddChild(ControlBase childControl); } /// Represents a custom frame. public interface CustomFrame { /// Get / set child control of frame. ControlBase Child {get; set;} } /// Represents a custom symbol. public interface CustomSymbol { /// Adds bars for a time frame that will be used for this custom symbol. CustomBars AddBars(TimeFrame timeFrame); /// Returns bars of a time frame if exists otherwise null. CustomBars GetBars(TimeFrame timeFrame); /// Removes all existing unloaded custom bars that aren't being used. void RemoveAllUnloadedBars(); /// Removes bars of a time frame which has no user. bool RemoveBars(TimeFrame timeFrame); /// Updates current symbol quotes. void UpdateQuote(double? bid, double? ask); /// Gets symbol administrative charge. Administrative fee will be charged instead of SWAP if account is marked as SWAP free. Only applicable for SWAP free trading accounts. double AdministrativeCharge {get; set;} /// Gets / sets the Day of the week (in UTC) when Administrative Fee charge amount will be tripled. Only applicable for SWAP free trading accounts. DayOfWeek? AdministrativeCharge3DaysRollover {get; set;} /// Gets the current ask price for this symbol. double Ask {get;} /// Gets / sets BarsNeeded handler, it's triggered when bars are needed for a time frame of current custom symbol. Action BarsNeeded {get; set;} /// Gets / sets the symbol base asset. Asset BaseAsset {get; set;} /// Gets the current bid price for this symbol. double Bid {get;} /// Gets / sets the amount of base commission for the symbol. double Commission {get; set;} /// Gets / sets the symbol base commission calculation type. SymbolCommissionType CommissionType {get; set;} /// Gets / sets symbol description. string Description {get; set;} /// Gets / sets the symbol dynamic leverage. ICollection DynamicLeverage {get;} /// Gets / sets custom future contract settings. CustomSymbolFuturesSettings FuturesSettings {get; set;} /// Gets / sets symbol grace period. This is the number of days free of Administrative fee from the time of opening a position. Only applicable for SWAP free trading accounts. int GracePeriod {get; set;} /// Gets the custom symbol ID. long Id {get;} /// Gets / sets the lot size. long LotSize {get; set;} /// Gets / sets the symbol market hours. CustomSymbolMarketHours MarketHours {get;} /// Gets / sets the minimum amount of commission for the symbol. This is the amount of commission that will be paid by trader for any trade. Check MinCommissionType for interpretation of MinCommission value. double MinCommission {get; set;} /// Gets / sets the symbol minimum commission asset. If MinCommissionType is set to Asset then you can use this property to get that asset. The MinCommission value will be converted from MinCommissionAsset to account deposit asset at the moment of trade. Asset MinCommissionAsset {get; set;} /// Gets / sets the symbol minimum commission type. Use this property to interpret MinCommission value. SymbolMinCommissionType MinCommissionType {get; set;} /// Gets / sets the symbol minimum distances type. SymbolMinDistanceType MinDistanceType {get; set;} /// Gets / sets symbol minimum stop loss distance. Use MinDistanceType for interpretation. double MinStopLossDistance {get; set;} /// Gets / sets symbol minimum take profit distance. Use MinDistanceType for interpretation. double MinTakeProfitDistance {get; set;} /// Gets custom symbol unique name. string Name {get;} /// Gets / sets the symbol pip digits. int PipDigits {get; set;} /// Gets / sets the symbol profit and loss conversion fee rate. double PnLConversionFeeRate {get; set;} /// Gets / sets the symbol quote asset. Asset QuoteAsset {get; set;} /// Gets custom symbol sentiment. CustomSymbolSentiment Sentiment {get;} /// Gets / sets the Day of the week when Symbol SWAP charge amount will be tripled. DayOfWeek? Swap3DaysRollover {get; set;} /// Gets / sets the symbol SWAP calculation type. SymbolSwapCalculationType SwapCalculationType {get; set;} /// Gets / sets the SWAP charge for long positions of the symbol. double SwapLong {get; set;} /// Gets / sets symbol swap period. This is the number of days free of Administrative fee from the time of opening a position. int SwapPeriod {get; set;} /// Gets / sets the SWAP charge for short positions of the symbol. double SwapShort {get; set;} /// Gets / sets the SWAP time in minutes. int SwapTimeInMinutes {get; set;} /// Gets regular Symbol. Symbol Symbol {get;} /// Gets / sets the symbol tick digits. int TickDigits {get; set;} /// Gets / sets the maximum units value. double VolumeInUnitsMax {get; set;} /// Gets / sets the minimum units value. double VolumeInUnitsMin {get; set;} /// Gets / sets the step volume in units. double VolumeInUnitsStep {get; set;} /// Gets / sets whether swap is charged on weekends or not. bool WeekendSwaps {get; set;} /// Occurs when a custom bars is unloaded and not being used anymore. event Action BarsUnloaded; /// Occurs when user opens a new chart of current custom symbol. event Action NewChart; } /// Provides data for custom symbol BarsNeeded handler. public class CustomSymbolBarsNeededArgs { /// Gets custom bars. public CustomBars CustomBars {get;} /// Gets custom symbol. public CustomSymbol CustomSymbol {get;} } /// Provides data for custom symbol BarsUnloaded event. public class CustomSymbolBarsUnloadedEventArgs { /// Gets custom bars that was unloaded. public CustomBars CustomBars {get;} /// Gets custom symbol. public CustomSymbol CustomSymbol {get;} } /// Represents a custom symbol futures settings. public class CustomSymbolFuturesSettings { /// Creates a new custom symbol futures settings. public CustomSymbolFuturesSettings(DateTime lastTradeTime, DateTime expirationTime, double? maintenanceMargin); /// Gets the expiration time of future contract. public DateTime ExpirationTime {get;} /// Gets the last trade time of future contract. public DateTime LastTradeTime {get;} /// The amount of quote asset that will be taken as a margin per one traded lot. public double? MaintenanceMargin {get;} } /// Custom symbol tier of dynamic leverage. public class CustomSymbolLeverageTier { /// Creates a new custom symbol leverage tier. public CustomSymbolLeverageTier(double volume, double leverage); /// Leverage of dynamic leverage tier. public double Leverage {get;} /// Volume of dynamic leverage tier. public double Volume {get;} } /// Access to custom symbol's trading sessions schedule. public interface CustomSymbolMarketHours { /// Collection of all symbol's trading holidays ICollection Holidays {get;} /// Collection of all symbol's trading sessions ICollection Sessions {get;} } /// Provides data for custom symbol NewChart event. public class CustomSymbolNewChartEventArgs { /// Chart that is newly opened or switched to custom symbol. public Chart Chart {get;} /// Gets custom bars for the newly opened custom symbol chart. public CustomBars CustomBars {get;} /// Gets custom symbol. public CustomSymbol CustomSymbol {get;} } /// Represents a custom symbol sentiment. public interface CustomSymbolSentiment { /// Gets / sets buy percentage. double BuyPercentage {get; set;} /// Gets / sets sell percentage. double SellPercentage {get; set;} } /// Represents a custom symbol trading holiday. public class CustomSymbolTradingHoliday { /// Creates a new custom symbol trading holiday. public CustomSymbolTradingHoliday(string name, DateTime startTime, DateTime endTime, bool isRecurring); /// Gets the end date and time of the trading holiday. public DateTime EndTime {get;} /// Gets a value indicating whether the trading holiday is recurring. public bool IsRecurring {get;} /// Gets the name of the trading holiday. public string Name {get;} /// Gets the start date and time of the trading holiday. public DateTime StartTime {get;} } /// Custom symbol trading session schedule. public class CustomSymbolTradingSession { /// Creates a new custom symbol trading session. public CustomSymbolTradingSession(DayOfWeek startDay, DayOfWeek endDay, TimeSpan startTime, TimeSpan endTime); /// Day of week when trading session ends public DayOfWeek EndDay {get;} /// Time when trading session ends public TimeSpan EndTime {get;} /// Day of week when trading session starts public DayOfWeek StartDay {get;} /// Time when trading session starts public TimeSpan StartTime {get;} } /// Represents collection of custom symbols. public interface CustomSymbols { /// Adds a new custom symbol. CustomSymbol Add(string name, Asset baseAsset, Asset quoteAsset); /// Adds a new custom symbol based on existing symbol. CustomSymbol Add(string name, Symbol baseSymbol); /// Returns a custom symbol by it's name. CustomSymbol Get(string name); /// Removes a custom symbol. bool Remove(CustomSymbol customSymbol); } /// Represents a custom time frame. public interface CustomTimeFrame { /// Adds bars for a symbol that will be used for this custom time frame when needed. CustomBars AddBars(Symbol symbol); /// Returns bars of a symbol if exists otherwise null. CustomBars GetBars(Symbol symbol); /// Removes all existing unloaded custom bars that aren't being used. void RemoveAllUnloadedBars(); /// Removes bars of a symbol which is not being used. bool RemoveBars(Symbol symbol); /// Gets / sets BarsNeeded handler, it's triggered when bars are needed for a symbol of current time frame. Action BarsNeeded {get; set;} /// Gets / sets custom time frame description. string Description {get; set;} /// Gets Custom time frame unique name. string Name {get;} /// Gets regular time frame. TimeFrame TimeFrame {get;} /// Occurs when a custom bars is unloaded and not being used anymore. event Action BarsUnloaded; /// Occurs when user opens a new chart of current custom time frame. event Action NewChart; } /// Provides data for custom time frame BarsNeeded handler. public class CustomTimeFrameBarsNeededArgs { /// Gets custom bars. public CustomBars CustomBars {get;} /// Gets custom time frame. public CustomTimeFrame CustomTimeFrame {get;} } /// Provides data for custom time frame BarsUnloaded event. public class CustomTimeFrameBarsUnloadedEventArgs { /// Gets custom bars that was unloaded. public CustomBars CustomBars {get;} /// Gets custom time frame. public CustomTimeFrame CustomTimeFrame {get;} } /// Provides data for custom time frame NewChart event. public class CustomTimeFrameNewChartEventArgs { /// Chart that is newly opened or switched to custom time frame. public Chart Chart {get;} /// Gets custom bars for the newly opened custom time frame chart. public CustomBars CustomBars {get;} /// Gets custom time frame. public CustomTimeFrame CustomTimeFrame {get;} } /// Represents collection of custom time frames. public interface CustomTimeFrames { /// Adds a new custom time frame. CustomTimeFrame Add(string name); /// Returns a custom time frame by it's name. CustomTimeFrame Get(string name); /// Removes a custom time frame. bool Remove(CustomTimeFrame customTimeFrame); } /// Represents a read only list of values, typically used to represent market price series. The values are accessed with an array-like [] operator. public interface DataSeries { /// Access a value in the data series certain bars ago double Last(int index); /// Gets the total number of elements contained in the DataSeries. int Count {get;} /// Gets the value in the data series at the specified position. double Item {get;} /// Gets the last value of this DataSeries. double LastValue {get;} } /// Represents the date time picker control. public class DateTimePicker : ControlBase { /// Initializes a new instance of the DateTimePicker class. public DateTimePicker(); /// Gets or sets maximum value. public DateTime MaxValue {get; set;} /// Gets or sets minimum value. public DateTime MinValue {get; set;} /// Gets or sets whether show time picker input or not. public bool ShowTimeInput {get; set;} /// Gets or sets value. public DateTime Value {get; set;} /// Occurs when value is changed. public event Action ValueChanged; } /// Provides data for the DateTimePicker ValueChanged event. public class DateTimePickerValueChangedEventArgs { /// Gets the date time picker control. public DateTimePicker DateTimePicker {get;} /// Gets the new selected value. public DateTime NewValue {get;} /// Gets the old selected value. public DateTime OldValue {get;} } /// Represents a deal. public interface Deal { /// Gets the channel. string Channel {get;} /// If deal was an opening deal then this property will return the deals that closed current deal. IReadonlyList ClosedBy {get;} /// If deal was a closing deal then this property will return the deals that were closed by current deal. IReadonlyList Closing {get;} /// Gets the comment. string Comment {get;} /// Returns deal execution price if deal is filled otherwise null. double? ExecutionPrice {get;} /// Returns deal execution time. DateTime ExecutionTime {get;} /// Unique deal Id. long Id {get;} /// Gets the label. string Label {get;} /// Order Id. int OrderId {get;} /// Position Id. int PositionId {get;} /// Returns deal position impact if deal is filled otherwise null. DealPositionImpact? PositionImpact {get;} /// Returns status of deal. DealStatus Status {get;} /// Gets the symbol name. string SymbolName {get;} /// Gets the TradeType. TradeType TradeType {get;} /// Deal filled volume amount in units. double VolumeInUnits {get;} } /// Represents the impact of a deal on position. public enum DealPositionImpact { /// Opening deal. Opening, /// Closing deal. Closing, } /// Represents the different status of a deal. public enum DealStatus { /// Filled. Filled, /// Partially filled. PartiallyFilled, /// Rejected. Rejected, /// Error. Error, /// Missed. Missed, /// Internally rejected. InternallyRejected, } /// Represent the list of default styles for the built-in controls. public static class DefaultStyles { /// Gets the Button default style. public static Style ButtonStyle {get;} /// Gets the Checkbox default style. public static Style CheckBoxStyle {get;} /// Gets the ComboBox default style. public static Style ComboBoxStyle {get;} /// Gets the MultiSelect default style. public static Style MultiSelectStyle {get;} /// Gets the Radio Button default stile. public static Style RadioButtonStyle {get;} /// Gets the Scroll Viewer default style. public static Style ScrollViewerStyle {get;} /// Gets the Tab Control default style. public static Style TabControlStyle {get;} /// Gets the Tab Item default style. public static Style TabItemStyle {get;} /// Gets the Text Block default style. public static Style TextBlockStyle {get;} /// Gets the Text Box default style. public static Style TextBoxStyle {get;} /// Gets the Toggle Button default style. public static Style ToggleButtonStyle {get;} } /// Used to represent the properties of a detached window. public interface DetachedWindow { /// Get / Set height of the Window double Height {get; set;} /// Get / Set window left margin (X) double Left {get; set;} /// Get / Set the window maximum height double MaxHeight {get; set;} /// Get / Set the window maximum width double MaxWidth {get; set;} /// Get / Set the window minimum height double MinHeight {get; set;} /// Get / Set the window minimum width double MinWidth {get; set;} /// Get / Set the window resize mode ResizeMode ResizeMode {get; set;} /// Get / Set window top margin (Y) double Top {get; set;} /// Get / Set width of the window double Width {get; set;} /// Get / Set the window startup location WindowStartupLocation WindowStartupLocation {get; set;} } /// Specifies where a chart control will be docked inside the DockPanel. public enum Dock { /// Dock to the left side of the DockPanel. Left, /// Dock to the top of the DockPanel. Top, /// Dock to the right side of the DockPanel. Right, /// Dock to the bottom of the DockPanel. Bottom, } /// Defines the area where you can arrange child elemens either horizontally or vertically, relative to each other. public class DockPanel : Panel { /// Initializes a new instance of the DockPanel class. public DockPanel(); /// Indicates whether the last child element within a DockPanel stretches to fill the remaining available space. public bool LastChildFill {get; set;} } /// Provides data for the drawing color changed event. public class DrawingColorChangedEventArgs { /// Gets the drawing color. public Color DrawingColor {get;} } /// Represents the DropZone control that can be used as a file(s) input. public class DropZone : ControlBase { /// Initializes a new instance of the DropZone class. public DropZone(); /// Gets or sets the drop zone child object. public ControlBase Child {get; set;} /// Gets or sets the file extensions filter. public string[] FilterExtensions {get; set;} /// Gets or sets whether user can drop directories or not. public bool IsDirectoryDropAllowed {get; set;} /// Occurs when files are dropped. public event Action Dropped; } /// Provides data for the Dropzone Dropped event. public class DroppedEventArgs { /// Gets the Dropzone control. public DropZone DropZone {get;} /// Gets the dropped file paths. public IReadonlyList FilePaths {get;} } /// Represents the ellipse shape. public class Ellipse : Shape { /// Initializes a new instance of the Ellipse class. public Ellipse(); } /// Represents different character encoding types. public enum EncodingType { /// ASCII character set encoding. Ascii, /// Unicode character set encoding in big endian byte order. BigEndianUnicode, /// Latin1 character set (ISO-8859-1) encoding. Latin1, /// Unicode character set encoding in little endian byte order. Unicode, /// UTF-8 format character set encoding. Utf8, /// UTF-32 format character set encoding. Utf32, } /// Represents the different environments where an algo can run. public enum EnvironmentType { /// Represents the Desktop environment. Desktop, /// Represents the Cloud environment where algos can run. Cloud, /// Represents the Command Line Interface (CLI) environment. CLI, } /// Encapsulates an error code. public interface Error { /// The encapsulated error code. ErrorCode Code {get;} /// The result of the trade that produced the error TradeResult TradeResult {get;} } /// Enumeration of standard error codes. public enum ErrorCode { /// A generic technical error with a trade request. TechnicalError, /// The volume value is not valid BadVolume, /// There are not enough money in the account to trade with. NoMoney, /// The market is closed. MarketClosed, /// The server is disconnected. Disconnected, /// Position does not exist. EntityNotFound, /// Operation timed out. Timeout, /// Unknown symbol. UnknownSymbol, /// The invalid Stop Loss or Take Profit. InvalidStopLossTakeProfit, /// The invalid request. InvalidRequest, /// Occurs when accessing trading API without trading permission. NoTradingPermission, } /// The result of JavaScript execution on a WebView control. public class ExecuteScriptResult { /// Initializes a new instance of ExecuteScriptResult public ExecuteScriptResult(bool isSuccessful, string json); /// True if JavaScript execution was successful otherwise false public bool IsSuccessful {get;} /// Returned JSON result of execution. public string Json {get;} } /// Provides access to favorite TimeFrames API for plugins. public interface FavoriteTimeFrames { /// Adds a time frame to favorite TimeFrames. void Add(TimeFrame timeFrame); /// Returns True if passed TimeFrame is in favorite TimeFrames otherwise False. bool Contains(TimeFrame timeFrame); /// Removes a time frame from favorite TimeFrames. bool Remove(TimeFrame timeFrame); /// Occurs when new TimeFrames are added to favorite TimeFrames. event Action Added; /// Occurs when TimeFrames are removed from favorite TimeFrames. event Action Removed; } /// Provides data for the Favorite TimeFrames Added event. public class FavoriteTimeFramesAddedEventArgs { /// Gets the added time frames. public TimeFrame[] TimeFrames {get;} } /// Provides data for the Favorite TimeFrames Removed event. public class FavoriteTimeFramesRemovedEventArgs { /// Gets the removed time frames. public TimeFrame[] TimeFrames {get;} } /// Represents the Fibonacci Level. public interface FibonacciLevel { /// Defines if the level is visible. bool IsVisible {get; set;} /// Gets or sets the level percent. double Percent {get; set;} /// Gets or sets the level price. double? Price {get; set;} /// Gets or sets the level time. DateTime? Time {get; set;} [Obsolete("Use Percent instead")] double PercentLevel {get; set;} } /// Represents a file. public interface File { /// Appends lines to file. void AppendAllLines(string[] contents); /// Appends lines to file that has a specified encoding. void AppendAllLines(string[] contents, EncodingType encodingType); /// Append text to file. void AppendAllText(string contents); /// Appends text to file that has a specified encoding. void AppendAllText(string contents, EncodingType encodingType); /// Returns True if File exists otherwise False. bool Exists(); /// Reads the contents of the file into a byte array. byte[] ReadAllBytes(); /// Reads all the text in the file. string ReadAllText(); /// Reads all the text in the file that has a specified encoding. string ReadAllText(EncodingType encodingType); /// Reads a sequence of bytes from the file. byte[] ReadBytes(int offset, int count); /// Reads the lines of file. string[] ReadLines(); /// Reads the lines of file that has a specified encoding. string[] ReadLines(EncodingType encodingType); /// Overwrites file content with passed bytes. void WriteAllBytes(byte[] bytes); /// Overwrites file content with passed text content. void WriteAllText(string contents); /// Overwrites file content with passed text content that has a specified encoding. void WriteAllText(string contents, EncodingType encodingType); /// Writes a chunk of data to file specific position. void WriteBytes(byte[] bytes, int offset, int count); /// Gets the creation time of the file. DateTime CreationTime {get;} /// Gets the extension part of the file name, including the leading dot '.' even if it is the entire file name, or an empty string if no extension is present. string Extension {get;} /// Gets the time the current file was last accessed. DateTime LastAccessTime {get;} /// Gets the time when the current file was last written to. DateTime LastWriteTime {get;} /// Gets file name without path. string Name {get;} /// Gets file size in bytes. long Size {get;} } /// Represents the collection of plugin file associations. public interface FileAssociations { /// Adds a file extension to the list of associations along with a specified icon file path. void Add(string fileExtension, string iconFilePath); /// Adds a file extension to the list of associations along with a specified icon file path. void Add(string fileExtension, SvgIcon svgIcon); /// Adds a file extension to the list of associations without specifying an icon. void Add(string fileExtension); /// Checks if the specified file extension is already associated. bool Contains(string fileExtension); /// Removes a file extension from the list of associations. void Remove(string fileExtension); /// Event triggered when a file associated with a registered extension is opened. event Action FileOpened; } /// Provides data for plugin file associations file opened event. public class FileAssociationsFileOpenedEventArgs { /// Gets opened file path. public string FilePath {get;} } /// An enumeration of the different file dialog results. public enum FileDialogResult { /// File dialog is not supported in running environment. None, /// User closed the dialog. Cancel, /// User pressed Ok in dialog. OK, /// There was an error in file dialog operation. Error, } /// Specifies how the intersecting areas of PathFigure objects contained in a Geometry are combined to form the area of the Geometry. public enum FillRule { /// Rule that determines whether a point is in the fill region by drawing a ray from that point to infinity in any direction and counting the number of path segments within the given shape that the ray crosses. If this number is odd, the point is inside; if even, the point is outside. EvenOdd, /// Rule that determines whether a point is in the fill region of the path by drawing a ray from that point to infinity in any direction and then examining the places where a segment of the shape crosses the ray. Starting with a count of zero, add one each time a segment crosses the ray from left to right and subtract one each time a path segment crosses the ray from right to left. After counting the crossings, if the result is zero then the point is outside the path. Otherwise, it is inside. Nonzero, } /// Specifies style information applied to text. public enum FontStyle { /// Normal text. Normal, /// Oblique text. Oblique, /// Italic text. Italic, } /// Specifies the weight or thickness of the font. public enum FontWeight { /// The thin font. Thin, /// The extra light font. ExtraLight, /// The ultra light font. UltraLight, /// The light font. Light, /// The normal font. Normal, /// The regular font. Regular, /// The medium font. Medium, /// The demibold font. DemiBold, /// The semibold font. SemiBold, /// The bold font. Bold, /// The extra bold font. ExtraBold, /// The ultra bold font. UltraBold, /// The black font. Black, /// The Heavy font. Heavy, /// The Extra black font. ExtraBlack, /// The ultra black font. UltraBlack, } /// Base interface for chart frames. public interface Frame { /// Brings the chart frame to the front. void Activate(); /// Attaches frame to main chart container. bool Attach(); /// Attaches frame to passed chart container. bool Attach(ChartContainer targetContainer); /// Detaches frame from it is chart container. bool Detach(); /// Returns frame container. ChartContainer ChartContainer {get;} /// Returns current height of frame. double Height {get;} /// Returns frame Id. string Id {get;} /// Get / set frame index in container. int Index {get; set;} /// Returns true if frame is attached otherwise false. bool IsAttached {get;} /// Returns current width of frame. double Width {get;} /// Occurs when frame is attached. event Action Attached; /// Occurs when frame container is changed. event Action ContainerChanged; /// Occurs when frame is detached. event Action Detached; /// Occurs when frame size changes. event Action SizeChanged; } /// Provides data for the frame attached event. public class FrameAttachedEventArgs { /// Returns the frame. public Frame Frame {get;} } /// Provides data for the frame container changed event. public class FrameContainerChangedEventArgs { /// Returns the frame. public Frame Frame {get;} } /// Provides data for the frame detached event. public class FrameDetachedEventArgs { /// Returns the frame. public Frame Frame {get;} } /// Provides data for the frame size changed event. public class FrameSizeChangedEventArgs { /// Returns the frame. public Frame Frame {get;} } /// Provides data for the frames added event. public class FramesAddedEventArgs { /// Returns the added frames. public Frame[] AddedFrames {get;} } /// Provides data for the frames removed event. public class FramesRemovedEventArgs { /// Returns the removed frames. public Frame[] RemovedFrames {get;} } /// This class contains valuable functions that apply to DataSeries. public static class Functions { /// Returns true, if crossingSeries has crossed above crossedSeries, over the specified Period. public static bool HasCrossedAbove(DataSeries crossingSeries, DataSeries crossedSeries, int period); /// Checks if crossingSeries has crossed above value, sometime within the specified period. public static bool HasCrossedAbove(DataSeries crossingSeries, double value, int period); /// Returns true, if crossingSeries has crossed below crossedSeries, over the specified Period. public static bool HasCrossedBelow(DataSeries crossingSeries, DataSeries crossedSeries, int period); /// Checks if crossingSeries has crossed below the value, sometime within the specified period. public static bool HasCrossedBelow(DataSeries crossingSeries, double value, int period); /// Checks if the last value in a data series is less than the previous public static bool IsFalling(DataSeries series); /// Checks if the last value in a data series is greater than the previous. public static bool IsRising(DataSeries series); /// Finds the maximum value in a data series for a given period. public static double Maximum(DataSeries series, int period); /// Finds the minimum of a data series for a given period. public static double Minimum(DataSeries series, int period); /// Calculates the sum of a data series, over the specified period. public static double Sum(DataSeries series, int period); } /// Represents a future contract symbol settings. public interface FuturesSettings { /// Gets the expiration time of future contract. DateTime ExpirationTime {get;} /// Gets the last trade time of future contract. DateTime LastTradeTime {get;} /// The amount of quote asset that will be taken as a margin per one traded lot. double? MaintenanceMargin {get;} } /// Represents a Gann Level. public interface GannLevel { /// Defines if the level is visible. bool IsVisible {get; set;} /// Gets or sets the level ratio (e.g., 1.0 for 1x1, 2.0 for 2x1, 0.5 for 1x2). double Ratio {get; set;} } /// Represents the custom fitness calculation interface. public interface GetFitnessArgs { /// Gets the average profit for all trades in account deposit currency. double AverageTrade {get;} /// Gets the commissions of all trades in account deposit currency. double Commissions {get;} /// Gets the equity of the account (balance plus unrealized profit and loss). double Equity {get;} /// Gets all the historical trades. History History {get;} /// Gets total number of losing trades. double LosingTrades {get;} /// Gets the maximum amount of balance drawdown in account deposit currency. double MaxBalanceDrawdown {get;} /// Gets the maximum amount of balance drawdown in percentage (ex: 40%). It can return a positive value between 0-100. double MaxBalanceDrawdownPercentages {get;} /// Gets the maximum amount of equity drawdown in account deposit currency. double MaxEquityDrawdown {get;} /// Gets the maximum amount of equity drawdown in percentage (ex: 40%). It can return a positive value between 0-100. double MaxEquityDrawdownPercentages {get;} /// Gets the net profit of all trades in account deposit currency. double NetProfit {get;} /// Gets all pending orders. PendingOrders PendingOrders {get;} /// Gets all open positions. Positions Positions {get;} /// Gets the Profit Factor - the ratio of Total Net Profit divided by the Total Net Loss. double ProfitFactor {get;} /// Gets the swaps of all trades in account deposit currency. double Swaps {get;} /// Gets the total number of trades taken. double TotalTrades {get;} /// Gets the total number of winning trades. double WinningTrades {get;} [Obsolete("Deprecated.")] double SharpeRatio {get;} [Obsolete("Deprecated.")] double SortinoRatio {get;} } /// Represents the Grid class. public class Grid : Panel { /// Initializes a new grid on the chart. public Grid(); /// Initializes a new grid on the chart. public Grid(int rowsCount, int columnsCount); /// Adds a child element. public void AddChild(ControlBase child, int row, int column); /// Adds the child. public void AddChild(ControlBase child, int row, int column, int rowSpan, int columnSpan); /// Adds a column. public GridColumn AddColumn(); /// Adds columns. public void AddColumns(int count); /// Adds a row. public GridRow AddRow(); /// Adds a rows. public void AddRows(int count); /// Returns a child position info if exists otherwise null. public GridChildPositionInfo? GetChildPosition(ControlBase child); /// Removes a column. public void RemoveColumnAt(int index); /// Removes the row. public void RemoveRowAt(int index); /// Gets the read only list of the grid columns. public IReadonlyList Columns {get;} /// Gets the read only list of the grid rows. public IReadonlyList Rows {get;} /// Defines if the grid lines are visible. public bool ShowGridLines {get; set;} } /// Represents a Grid panel child position info. public sealed struct GridChildPositionInfo : ValueType { /// Gets column number of child. public int Column {get;} /// Gets column span of child. public int ColumnSpan {get;} /// Gets row number of child. public int Row {get;} /// Gets row span of child. public int RowSpan {get;} } /// Represents the column of the grid. public interface GridColumn { /// Sets the grid column width in pixels. void SetWidthInPixels(double value); /// Sets the grid column width in stars. void SetWidthInStars(double stars); /// Sets the grid column width to automatic. void SetWidthToAuto(); /// Gets the grid column index. int Index {get;} /// Defines the grid column maximum width. double MaxWidth {get; set;} /// Defines the grid column minimum width. double MinWidth {get; set;} /// Gets the grid column width. GridLength Width {get;} } /// Represents the length of the grid. public class GridLength { /// Gets or sets the type of the unit. public GridUnitType UnitType {get;} /// Gets or sets the value. public double Value {get;} } /// Represents the row of the grid. public interface GridRow { /// Sets the height of the grid row in pixels. void SetHeightInPixels(double value); /// Sets the height of the grid row in stars. void SetHeightInStars(double stars); /// Sets the height of the grid row to automatic. void SetHeightToAuto(); /// Gets the height of the grid row. GridLength Height {get;} /// Gets the grid row index. int Index {get;} /// Gets or sets the maximum height of the grid row. double MaxHeight {get; set;} /// Gets or sets the minimum height of the grid row. double MinHeight {get; set;} } /// Represents the type of the grid unit. public enum GridUnitType { /// The automatic definition of units for the grid. Auto, /// Calculate grid size in pixels. Pixel, /// Calculate grid size in stars. Star, } /// Represents a historical order. public interface HistoricalOrder { /// Order channel. string Channel {get;} /// Order comment. string Comment {get;} /// Order expiration time. DateTime? ExpirationTime {get;} /// Order filled quantity (lots). double? FilledQuantity {get;} /// Order filled time. DateTime? FilledTime {get;} /// Order filled volume in units. double? FilledVolumeInUnits {get;} /// Returns true if order has trailing stop loss. bool HasTrailingStop {get;} /// Unique order Id. long Id {get;} /// Order label. string Label {get;} /// Order type. HistoricalOrderType OrderType {get;} /// Unique position Id. int? PositionId {get;} /// Order quantity (lots). double Quantity {get;} /// Order status. HistoricalOrderStatus Status {get;} /// Order stop loss in Price. double? StopLoss {get;} /// Order stop loss in Pips. double? StopLossPips {get;} /// Trigger method for order's StopLoss StopTriggerMethod? StopLossTriggerMethod {get;} /// StopOrder trigger method. StopTriggerMethod? StopOrderTriggerMethod {get;} /// Order submitted time. DateTime SubmittedTime {get;} /// Order symbol. Symbol Symbol {get;} /// Order symbol name. string SymbolName {get;} /// Order take profit in Price. double? TakeProfit {get;} /// Order take profit in Pips. double? TakeProfitPips {get;} /// Order target price double TargetPrice {get;} /// Order Trade type (buy or sell) TradeType TradeType {get;} /// Order volume in units. double VolumeInUnits {get;} } /// Represents the status of HistoricalOrder. public enum HistoricalOrderStatus { /// Order filled Filled, /// Order expired Expired, /// Order created Created, /// Order accepted Accepted, /// Order error Error, /// Order cancelled Cancelled, } /// Represents the type of HistoricalOrder. public enum HistoricalOrderType { /// Limit order Limit, /// Market order Market, /// Market Range order MarketRange, /// Market on open order MarketOnOpen, /// Stop order Stop, /// Stop out order StopOut, /// Stop limit order StopLimit, /// Stop Loss / Take Profit order StopLossTakeProfit, } /// Provides access to methods of the Historical Orders collection public interface HistoricalOrders { /// Finds historical orders by label. HistoricalOrder[] FindAll(string label); /// Finds historical orders by label and symbol name. HistoricalOrder[] FindAll(string label, string symbolName); /// Finds historical orders by label, symbol name, and trade type. HistoricalOrder[] FindAll(string label, string symbolName, TradeType tradeType); /// Finds a historical order by Id. HistoricalOrder FindById(int id); /// Finds last historical order by label. HistoricalOrder FindLast(string label); /// Finds last historical order by label and symbol name. HistoricalOrder FindLast(string label, string symbolName); /// Finds last historical order by label, symbol name, and trade type. HistoricalOrder FindLast(string label, string symbolName, TradeType tradeType); /// Returns count of historical orders. int Count {get;} /// Access historical orders by their index. HistoricalOrder Item {get;} } /// Represents the historical trade interface. public interface HistoricalTrade { /// Account balance after the Deal was filled double Balance {get;} /// Gets the channel via which the trade was executed in a string format. string Channel {get;} /// Gets the closing deal. Deal ClosingDeal {get;} /// Gets the unique closing deal identifier. int ClosingDealId {get;} /// The execution price of the Closing Deal. double ClosingPrice {get;} /// Time of the Closing Deal. DateTime ClosingTime {get;} /// The comment. string Comment {get;} /// Commission owed. double Commissions {get;} /// The VWAP (Volume Weighted Average Price) of the Opening Deals that are closed. double EntryPrice {get;} /// Time of the Opening Deal, or the time of the first Opening deal that was closed. DateTime EntryTime {get;} /// Profit and loss before swaps and commission double GrossProfit {get;} /// The label. string Label {get;} /// Profit and loss including swaps and commissions double NetProfit {get;} /// Represents the winning or loosing pips double Pips {get;} /// Gets the position unique identifier. int PositionId {get;} /// The Quantity (in lots) that was closed by the Closing Deal double Quantity {get;} /// Swap is the overnight interest rate if any, accrued on the position. double Swap {get;} /// Gets the trade symbol. Symbol Symbol {get;} /// Gets the symbol name. string SymbolName {get;} /// The TradeType of the Opening Deal. TradeType TradeType {get;} /// The Volume that was closed by the Closing Deal. double VolumeInUnits {get;} [Obsolete("Use SymbolName instead")] string SymbolCode {get;} [Obsolete("Use VolumeInUnits instead")] long Volume {get;} } /// Provides access to methods of the historical trades collection public interface History { /// Find all historical trades by the label HistoricalTrade[] FindAll(string label); /// Find all historical trades by label, symbol name HistoricalTrade[] FindAll(string label, string symbolName); /// Find all historical trades by label, symbol name and trade type HistoricalTrade[] FindAll(string label, string symbolName, TradeType tradeType); /// Find HistoricalTrade by closing deal Id. HistoricalTrade FindByClosingDealId(int closingDealId); /// Find all historical trades related to a position. HistoricalTrade[] FindByPositionId(int positionId); /// Find last historical trade by its label HistoricalTrade FindLast(string label); /// Find last historical trade by its label, symbol name HistoricalTrade FindLast(string label, string symbolName); /// Find last historical trade by its label, symbol name and trade type HistoricalTrade FindLast(string label, string symbolName, TradeType tradeType); /// Total number of historical trades int Count {get;} /// Find a historical trade by index HistoricalTrade Item {get;} [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] HistoricalTrade FindLast(string label, Symbol symbol); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] HistoricalTrade FindLast(string label, Symbol symbol, TradeType tradeType); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] HistoricalTrade[] FindAll(string label, Symbol symbol); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] HistoricalTrade[] FindAll(string label, Symbol symbol, TradeType tradeType); } /// Describes horizontal position related to an anchor point or a parent element public enum HorizontalAlignment { /// Center horizontal alignment. Center, /// Left horizontal alignment. Left, /// Right horizontal alignment. Right, /// Stretch horizontal alignment. Stretch, } /// Provides data for Plugin Hotkeys handler. public class HotkeyArgs { /// Keyboard key public Key Key {get;} /// Modifiers key that was used with the Key public ModifierKeys Modifiers {get;} } /// Provides access to Hotkeys API for plugins. public interface Hotkeys { /// Clears all added hotkeys. void Clear(); /// Removes an hotkey. bool Remove(Key key); /// Removes an hotkey. bool Remove(Key key, ModifierKeys modifiers); /// Adds a new hotkey. bool TryAdd(Key key, Action handler); /// Adds a new hotkey. bool TryAdd(Key key, ModifierKeys modifiers, Action handler); } /// The Https interface contains the methods necessary for sending HTTP requests. public interface Http { /// Performs a GET request to the specified URI. HttpResponse Get(Uri uri); /// Performs a GET request to the specified URI. HttpResponse Get(string uri); /// Performs a GET request to the specified URI asynchronously. void GetAsync(Uri uri, Action callback); /// Performs a GET request to the specified URI asynchronously. void GetAsync(string uri, Action callback); /// Performs a request to the specified URI. The request method depends on the value of the request.Method property. HttpResponse Send(HttpRequest request); /// Performs a request to the specified URI. The request method depends on the value of the request.Method property. void SendAsync(HttpRequest request, Action callback); } /// Represents errors that may occur during HTTP request public sealed class HttpException : Exception { } /// An enumeration of different HTTP Methods. public enum HttpMethod { /// Represents an HTTP GET protocol method. Get, /// Represents an HTTP POST protocol method. Post, /// Represents an HTTP DELETE protocol method. Delete, /// Represents an HTTP PUT protocol method. Put, /// Represents the HTTP PATCH protocol method. Patch, /// Represents an HTTP HEAD protocol method. Head, /// Represents an HTTP OPTIONS protocol method. Options, /// Represents an HTTP TRACE protocol method. Trace, } /// The class representing an HTTP request. public sealed class HttpRequest { /// The default class constructor. public HttpRequest(Uri uri); /// Gets or sets the request body. If a GET, TRACE, HEAD, CONNECT, and OPTIONS request is performed, the value of this property is ignored. public string Body {get; set;} /// Gets the request headers. public HttpRequestHeaders Headers {get;} /// Gets or sets the request method. The default value is Get. public HttpMethod Method {get; set;} /// Gets or sets the request timeout. The default value is 100,000 milliseconds (100 seconds). public TimeSpan Timeout {get; set;} /// Gets or sets the request URI. public Uri Uri {get;} /// Gets or sets the request version. The default value is 2.0. public Version Version {get; set;} /// Gets or sets the request version policy. The default value is RequestVersionOrLower . public HttpVersionPolicy VersionPolicy {get; set;} } /// The class that represents an HTTP request headers collection. public sealed class HttpRequestHeaders { /// Adds a new header. public void Add(string name, string value); /// Returns an enumerator that iterates through HttpRequestHeaders . public IEnumerator> GetEnumerator(); /// Returns an existing header value. public string GetValue(string name); /// Removes an existing header. public bool Remove(string name); /// Updates an existing header. public void Update(string name, string value); } /// The class representing an HTTP response. public sealed class HttpResponse { /// Gets the body of the response. public string Body {get;} /// Gets the exception thrown when sending HTTP request. public HttpException Exception {get;} /// Gets the headers contained in the response. public HttpResponseHeaders Headers {get;} /// Gets true if the response is successful, false otherwise. public bool IsSuccessful {get;} /// Gets the response status code. public int StatusCode {get;} } /// The class that represents an HTTP response headers collection. public sealed class HttpResponseHeaders { /// Returns an enumerator that iterates through HttpResponseHeaders . public IEnumerator> GetEnumerator(); /// Returns an existing header value. public string GetValue(string name); } /// An enumeration of different HTTP version policies. public enum HttpVersionPolicy { /// Use the requested version or downgrade to a lower one. This is the default behavior. RequestVersionOrLower, /// Use the highest available version, downgrading only to the requested version but not below. RequestVersionOrHigher, /// Only use the requested version. RequestVersionExact, } /// Represents the image chart control. public class Image : ControlBase { /// Initializes a new instance of the Image class. public Image(); /// Gets or sets the source of the image. public object Source {get; set;} /// Gets or sets a value that describes how an Image should be stretched to fill the destination rectangle. public Stretch Stretch {get; set;} /// Gets or sets a value that indicates how the image is scaled. public StretchDirection StretchDirection {get; set;} } /// Base class for Indicators. public abstract class Indicator : Algo { /// Adds current indicator to chart if not added yet. public ChartIndicator AddToChart(); /// Calculate the value(s) of indicator for the given index. public abstract void Calculate(int index); /// Cancel a Pending Order public TradeResult CancelPendingOrder(PendingOrder pendingOrder); /// Cancel a Pending Order in asynchronous execution mode public TradeOperation CancelPendingOrderAsync(PendingOrder pendingOrder, Action callback); /// Close a position public TradeResult ClosePosition(Position position); /// Close a position public TradeResult ClosePosition(Position position, long volume); /// Close a position public TradeResult ClosePosition(Position position, double volume); /// Close a position in asynchronous execution mode public TradeOperation ClosePositionAsync(Position position, Action callback); /// Close a position in asynchronous execution mode public TradeOperation ClosePositionAsync(Position position, long volume, Action callback); /// Close a position in asynchronous execution mode public TradeOperation ClosePositionAsync(Position position, double volume, Action callback); /// Execute a Market Order public TradeResult ExecuteMarketOrder(TradeType tradeType, string symbolName, double volume); /// Execute a Market Order public TradeResult ExecuteMarketOrder(TradeType tradeType, string symbolName, double volume, string label); /// Execute a Market Order public TradeResult ExecuteMarketOrder(TradeType tradeType, string symbolName, double volume, string label, double? stopLossPips, double? takeProfitPips); /// Execute a Market Order public TradeResult ExecuteMarketOrder(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits); /// Execute a Market Order public TradeResult ExecuteMarketOrder(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven); /// Execute a Market Order public TradeResult ExecuteMarketOrder(TradeType tradeType, string symbolName, double volume, string label, double? stopLossPips, double? takeProfitPips, string comment); /// Execute a Market Order public TradeResult ExecuteMarketOrder(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment); /// Execute a Market Order public TradeResult ExecuteMarketOrder(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, StopLossBreakEven stopLossBreakEven); /// Execute a Market Order public TradeResult ExecuteMarketOrder(TradeType tradeType, string symbolName, double volume, string label, double? stopLossPips, double? takeProfitPips, string comment, bool hasTrailingStop); /// Execute a Market Order public TradeResult ExecuteMarketOrder(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop); /// Execute a Market Order public TradeResult ExecuteMarketOrder(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven); /// Execute a Market Order public TradeResult ExecuteMarketOrder(TradeType tradeType, string symbolName, double volume, string label, double? stopLossPips, double? takeProfitPips, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Execute a Market Order public TradeResult ExecuteMarketOrder(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Execute a Market Order public TradeResult ExecuteMarketOrder(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, string symbolName, double volume, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, string symbolName, double volume, string label, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, string symbolName, double volume, string label, double? stopLossPips, double? takeProfitPips, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, string symbolName, double volume, string label, double? stopLossPips, double? takeProfitPips, string comment, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, StopLossBreakEven stopLossBreakEven, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, string symbolName, double volume, string label, double? stopLossPips, double? takeProfitPips, string comment, bool hasTrailingStop, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, string symbolName, double volume, string label, double? stopLossPips, double? takeProfitPips, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Execute a Market Order public TradeResult ExecuteMarketRangeOrder(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice); /// Execute a Market Order public TradeResult ExecuteMarketRangeOrder(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label); /// Execute a Market Order public TradeResult ExecuteMarketRangeOrder(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, double? stopLossPips, double? takeProfitPips); /// Execute a Market Order public TradeResult ExecuteMarketRangeOrder(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits); /// Execute a Market Order public TradeResult ExecuteMarketRangeOrder(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven); /// Execute a Market Order public TradeResult ExecuteMarketRangeOrder(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, double? stopLossPips, double? takeProfitPips, string comment); /// Execute a Market Order public TradeResult ExecuteMarketRangeOrder(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment); /// Execute a Market Order public TradeResult ExecuteMarketRangeOrder(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, StopLossBreakEven stopLossBreakEven); /// Execute a Market Order public TradeResult ExecuteMarketRangeOrder(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, double? stopLossPips, double? takeProfitPips, string comment, bool hasTrailingStop); /// Execute a Market Order public TradeResult ExecuteMarketRangeOrder(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop); /// Execute a Market Order public TradeResult ExecuteMarketRangeOrder(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven); /// Execute a Market Order public TradeResult ExecuteMarketRangeOrder(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, double? stopLossPips, double? takeProfitPips, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Execute a Market Order public TradeResult ExecuteMarketRangeOrder(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Execute a Market Order public TradeResult ExecuteMarketRangeOrder(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketRangeOrderAsync(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketRangeOrderAsync(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketRangeOrderAsync(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, double? stopLossPips, double? takeProfitPips, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketRangeOrderAsync(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketRangeOrderAsync(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketRangeOrderAsync(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, double? stopLossPips, double? takeProfitPips, string comment, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketRangeOrderAsync(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketRangeOrderAsync(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, StopLossBreakEven stopLossBreakEven, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketRangeOrderAsync(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, double? stopLossPips, double? takeProfitPips, string comment, bool hasTrailingStop, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketRangeOrderAsync(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketRangeOrderAsync(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketRangeOrderAsync(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, double? stopLossPips, double? takeProfitPips, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketRangeOrderAsync(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketRangeOrderAsync(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Custom initialization for the Indicator. This method is invoked when an indicator is launched. protected internal void Initialize(); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expirationTime); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expirationTime, long volume); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, long volume); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, long volume, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, long volume); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, long volume, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expirationTime, double volume); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expirationTime, double volume, bool hasTrailingStop); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, double? stopLimitRangePips); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, double? stopLimitRangePips); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, double? stopLimitRangePips, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, double? stopLimitRangePips); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, double? stopLimitRangePips, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expirationTime, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expirationTime, long volume, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, long volume, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, long volume, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, long volume, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, long volume, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expirationTime, double volume, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expirationTime, double volume, bool hasTrailingStop, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, double? stopLimitRangePips, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, double? stopLimitRangePips, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, double? stopLimitRangePips, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, double? stopLimitRangePips, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, double? stopLimitRangePips, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify the volume of a position public TradeResult ModifyPosition(Position position, double volume); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, double? stopLoss, double? takeProfit, ProtectionType? protectionType); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, double? stopLoss, double? takeProfit, ProtectionType? protectionType, bool hasTrailingStop); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, bool hasTrailingStop); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, bool hasTrailingStop); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, double? stopLoss, double? takeProfit, ProtectionType? protectionType, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, double volume, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, double? stopLoss, double? takeProfit, ProtectionType? protectionType, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, double? stopLoss, double? takeProfit, ProtectionType? protectionType, bool hasTrailingStop, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, bool hasTrailingStop, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, bool hasTrailingStop, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, double? stopLoss, double? takeProfit, ProtectionType? protectionType, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Called when Indicator is destroyed. protected internal void OnDestroy(); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, StopLossBreakEven stopLossBreakEven); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, StopLossBreakEven stopLossBreakEven); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, StopLossBreakEven stopLossBreakEven); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, StopLossBreakEven stopLossBreakEven); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, StopLossBreakEven stopLossBreakEven, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, StopLossBreakEven stopLossBreakEven, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, StopLossBreakEven stopLossBreakEven, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, StopLossBreakEven stopLossBreakEven, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, StopLossBreakEven stopLossBreakEven); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, StopLossBreakEven stopLossBreakEven); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, StopLossBreakEven stopLossBreakEven); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, StopLossBreakEven stopLossBreakEven); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, StopLossBreakEven stopLossBreakEven, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, StopLossBreakEven stopLossBreakEven, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, StopLossBreakEven stopLossBreakEven, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, StopLossBreakEven stopLossBreakEven, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, StopLossBreakEven stopLossBreakEven); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, StopLossBreakEven stopLossBreakEven); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, StopLossBreakEven stopLossBreakEven); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, StopLossBreakEven stopLossBreakEven); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, StopLossBreakEven stopLossBreakEven, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, StopLossBreakEven stopLossBreakEven, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, StopLossBreakEven stopLossBreakEven, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, StopLossBreakEven stopLossBreakEven, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify the direction of trade at position public TradeResult ReversePosition(Position position); /// Modify the direction of trade and volume of a position public TradeResult ReversePosition(Position position, double volume); /// Reverses Position in asynchronous execution mode public TradeOperation ReversePositionAsync(Position position, Action callback); /// Reverses Position in asynchronous execution mode public TradeOperation ReversePositionAsync(Position position, double volume, Action callback); /// Sets appearance of an indicator bar output from startIndex to last index. protected void SetBarColor(IndicatorBarOutput barOutput, int barIndex, Color outlineColor); /// Sets appearance of an indicator bar output from startIndex to startIndex + count. protected void SetBarColor(IndicatorBarOutput barOutput, int barIndex, Color outlineColor, Color fillColor); /// Sets appearance of an indicator bar output from startIndex to last index. protected void SetBarColor(IndicatorBarOutput barOutput, int barIndex, Color outlineColor, Color fillColor, Color volumeColor); /// Sets appearance of an indicator line output from startIndex to last index. protected void SetLineAppearance(IndicatorLineOutput lineOutput, int startIndex, Color color); /// Sets appearance of an indicator line output from startIndex to last index. protected void SetLineAppearance(IndicatorLineOutput lineOutput, int startIndex, Color color, int thickness); /// Sets appearance of an indicator line output from startIndex to last index. protected void SetLineAppearance(IndicatorLineOutput lineOutput, int startIndex, Color color, int thickness, LineStyle lineStyle); /// Sets appearance of an indicator line output from startIndex to startIndex + count. protected void SetLineAppearance(IndicatorLineOutput lineOutput, int startIndex, int count, Color color); /// Sets appearance of an indicator line output from startIndex to startIndex + count. protected void SetLineAppearance(IndicatorLineOutput lineOutput, int startIndex, int count, Color color, int thickness); /// Sets appearance of an indicator line output from startIndex to startIndex + count. protected void SetLineAppearance(IndicatorLineOutput lineOutput, int startIndex, int count, Color color, int thickness, LineStyle lineStyle); /// Contains information of the current account. public IAccount Account {get;} /// Defines the area where the indicator is placed. public IndicatorArea IndicatorArea {get;} /// Returns true, if Calculate is invoked for the last bar public bool IsLastBar {get;} /// The latest trade result public TradeResult LastResult {get;} /// Contains all Permissions information public Permissions Permissions {get;} [Obsolete("Use overload with IndicatorLineOutput instead")] protected void SetLineAppearance(IndicatorLine line, int startIndex, Color color); [Obsolete("Use overload with IndicatorLineOutput instead")] protected void SetLineAppearance(IndicatorLine line, int startIndex, Color color, int thickness); [Obsolete("Use overload with IndicatorLineOutput instead")] protected void SetLineAppearance(IndicatorLine line, int startIndex, Color color, int thickness, LineStyle lineStyle); [Obsolete("Use overload with IndicatorLineOutput instead")] protected void SetLineAppearance(IndicatorLine line, int startIndex, int count, Color color); [Obsolete("Use overload with IndicatorLineOutput instead")] protected void SetLineAppearance(IndicatorLine line, int startIndex, int count, Color color, int thickness); [Obsolete("Use overload with IndicatorLineOutput instead")] protected void SetLineAppearance(IndicatorLine line, int startIndex, int count, Color color, int thickness, LineStyle lineStyle); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, Action callback); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeResult ModifyPosition(Position position, double? stopLoss, double? takeProfit); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeResult ModifyPosition(Position position, double? stopLoss, double? takeProfit, bool hasTrailingStop); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeResult ModifyPosition(Position position, double? stopLoss, double? takeProfit, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeOperation ModifyPositionAsync(Position position, double? stopLoss, double? takeProfit, Action callback); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeOperation ModifyPositionAsync(Position position, double? stopLoss, double? takeProfit, bool hasTrailingStop, Action callback); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeOperation ModifyPositionAsync(Position position, double? stopLoss, double? takeProfit, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, DateTime? expirationTime); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, DateTime? expirationTime, long volume); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, DateTime? expirationTime, double volume); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, DateTime? expirationTime, double volume, bool hasTrailingStop); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, double? stopLimitRangePips); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, Action callback); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, DateTime? expirationTime, Action callback); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, DateTime? expirationTime, long volume, Action callback); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, DateTime? expirationTime, double volume, Action callback); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, Action callback); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, DateTime? expirationTime, double volume, bool hasTrailingStop, Action callback); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, double? stopLimitRangePips, Action callback); [Obsolete("Use IsLastBar property instead.")] public bool IsRealTime {get;} } /// Represents the area where the Indicator is placed. public interface IndicatorArea { } /// Provides data for the indicator area adding event. public class IndicatorAreaAddedEventArgs : IndicatorAreaEventArgs { } /// The arguments for the indicator area event. public abstract class IndicatorAreaEventArgs { /// Gets the area. public IndicatorArea Area {get;} /// Gets the chart. public Chart Chart {get;} } /// Provides data for the indicator area removing event. public class IndicatorAreaRemovedEventArgs : IndicatorAreaEventArgs { } /// Indicator Attribute. Applies metadata to enable the indicator plot. public sealed class IndicatorAttribute : Attribute { /// Initializes a new instance of the IndicatorAttribute public IndicatorAttribute(); /// Gets or sets the access rights required for Indicator. public AccessRights AccessRights {get; set;} /// Gets or sets additional info url. public string AdditionalInfoUrl {get; set;} /// Indicates whether this instance automatically rescales the chart or not. Default value is true. public bool AutoRescale {get; set;} /// Indicates whether this instance is overlayed on the chart or plotted on a separate indicator panel public bool IsOverlay {get; set;} /// Gets or sets whether the indicator is a percentage indicator. If one or more percentage indicators are added to the same panel, they will share the same scale. The default value is false . public bool IsPercentage {get; set;} /// The name of the Indicator. public string Name {get;} /// The price scale precision. public int ScalePrecision {get; set;} /// Gets or sets the chart timezone of the displayed indicator. public string TimeZone {get; set;} [Obsolete("Deprecated.")] public IndicatorAttribute(string name); [Obsolete("Deprecated.")] public static int UnspecifiedScalePrecision; } /// The interface representing an indicator bars output. Provides properties that allow for accessing various information about a bars output. public interface IndicatorBarOutput { /// Gets or sets the color of the area chart. Color AreaChartFillColor {get; set;} /// Gets or sets the color of the bear candle fill. Color BearFillColor {get; set;} /// Gets or sets the color of the bear candle or bar outline. Color BearOutlineColor {get; set;} /// Gets or sets the color of the bull candle fill. Color BullFillColor {get; set;} /// Gets or sets the color of the bull candle or bar outline. Color BullOutlineColor {get; set;} /// Gets or sets the type of the chart - Bar, Candlesticks, Line or Dots chart. ChartType ChartType {get; set;} /// Gets or sets the color of the dot chart. Color DotChartColor {get; set;} /// Gets or sets the visibility of a line. bool IsVisible {get; set;} /// Gets the name of a line. string Name {get;} /// Gets or sets the color of the tick volume bars. Color TickVolumeColor {get; set;} } /// The interface representing an indicator bars that are displayed as an output. public interface IndicatorBars { /// Gets the Close price bars data. DataSeries ClosePrices {get;} /// Gets the number of bars. int Count {get;} /// Gets the High price bars data. DataSeries HighPrices {get;} /// Gets or sets a bar based on it is index. OhlcvBar Item {get; set;} /// Gets the Low price bars data. DataSeries LowPrices {get;} /// Gets the Open price bars data. DataSeries OpenPrices {get;} /// Gets the indicator output. IndicatorBarOutput Output {get;} /// Gets the Tick volumes data. DataSeries TickVolumes {get;} } /// Represents a mutable array of values. An extension of DataSeries used to represent indicator values. public interface IndicatorDataSeries { /// Gets or sets the value at the specified index. double Item {get; set;} /// Gets the indicator line output. IndicatorLineOutput LineOutput {get;} [Obsolete("Use LineOutput instead")] IndicatorLine Line {get;} } /// The interface representing an indicator line. Provides properties that allow for accessing various information about a line. public interface IndicatorLineOutput { /// Gets or sets the Color of a line. Color Color {get; set;} /// Gets or sets the visibility of a line. bool IsVisible {get; set;} /// Gets or sets the LineStyle of a line. LineStyle LineStyle {get; set;} /// Gets the name of a line. string Name {get;} /// Gets the PlotType of a line. PlotType PlotType {get;} /// Gets or sets whether line should stick to bottom of it's panel or not similar to Tick Volume (Default: false). bool StickToBottom {get; set;} /// Gets or sets the thickness of a line. float Thickness {get; set;} } /// Represents an indicator algorithm type. public interface IndicatorType { /// Gets collection of indicator bar outputs. IReadonlyList Bars {get;} /// Gets collection of indicator line outputs. IReadonlyList Lines {get;} /// Gets collection of indicator parameters. IReadonlyList Parameters {get;} [Obsolete("Use Lines instead")] IReadonlyList Outputs {get;} } /// Represents an indicator type bar output. public interface IndicatorTypeBarOutput { /// Gets default color of the area chart. Color DefaultAreaChartFillColor {get;} /// Gets default bear fill color. Color DefaultBearFillColor {get;} /// Gets default bear outline color. Color DefaultBearOutlineColor {get;} /// Gets default bull fill color. Color DefaultBullFillColor {get;} /// Gets default bull outline color. Color DefaultBullOutlineColor {get;} /// Gets default chart type. ChartType DefaultChartType {get;} /// Gets default color of the dot chart. Color DefaultDotChartColor {get;} /// Gets default tick volume color. Color DefaultTickVolumeColor {get;} /// Gets output name. string Name {get;} } /// Represents an indicator type line output. public interface IndicatorTypeLineOutput { /// Gets default color. Color DefaultColor {get;} /// Gets default line style. LineStyle DefaultLineStyle {get;} /// Gets the PlotType . PlotType DefaultPlotType {get;} /// Gets default thickness. float DefaultThickness {get;} /// Gets output name. string Name {get;} } /// Represents the predefined algo installation errors. public enum InstallationError { /// Installation error due to lack of permission by user. Forbidden, /// Installation error due to algo file being invalid. InvalidFile, /// Installation error due to algo file not found in provided path (Only for file path based installations). FileNotFound, /// Installation error due to algo file downloading error (Only for URI based installations). DownloadError, /// When user cancels installation dialog. Canceled, /// Unknown or unrecognized error. Unknown, } /// Provides access to the properties describing an asynchronous algo installation operation. public class InstallationOperation { /// True if installation operation is being executed, false if it completed. public bool IsExecuting {get;} /// The result of installation operation. public InstallationResult Result {get;} } /// Algo Installation Permission public interface InstallationPermission { } /// The result of an algo installation. public class InstallationResult { /// Returns algo installation error if algo installation failed otherwise null. public InstallationError? Error {get;} /// Returns True if algo installation succeeded otherwise false. public bool Succeeded {get;} } /// Specifies the possible key values on a keyboard. public enum Key { /// No key pressed. None, /// The Cancel key. Cancel, /// The Backspace key. Back, /// The Tab key. Tab, /// The Linefeed key. LineFeed, /// The Clear key. Clear, /// The Enter key. Enter, /// The Pause key. Pause, /// The Caps Lock key. CapsLock, /// The IME Kana mode key. KanaMode, /// The IME Junja mode key. JunjaMode, /// The IME Final mode key. FinalMode, /// The IME Hanja mode key. HanjaMode, /// The ESC key. Escape, /// The IME Convert key. ImeConvert, /// The IME NonConvert key. ImeNonConvert, /// The IME Accept key. ImeAccept, /// The IME Mode change request. ImeModeChange, /// The Spacebar key. Space, /// The Page Up key. PageUp, /// The Page Down key. PageDown, /// The End key. End, /// The Home key. Home, /// The Left Arrow key. Left, /// The Up Arrow key. Up, /// The Right Arrow key. Right, /// The Down Arrow key. Down, /// The Select key. Select, /// The Print key. Print, /// The Execute key. Execute, /// The Print Screen key. PrintScreen, /// The Insert key. Insert, /// The Delete key. Delete, /// The Help key. Help, /// The 0 (zero) key. D0, /// The 1 (one) key. D1, /// The 2 key. D2, /// The 3 key. D3, /// The 4 key. D4, /// The 5 key. D5, /// The 6 key. D6, /// The 7 key. D7, /// The 8 key. D8, /// The 9 key. D9, /// The A key. A, /// The B key. B, /// The C key. C, /// The D key. D, /// The E key. E, /// The F key. F, /// The G key. G, /// The H key. H, /// The I key. I, /// The J key. J, /// The K key. K, /// The L key. L, /// The M key. M, /// The N key. N, /// The O key. O, /// The P key. P, /// The Q key. Q, /// The R key. R, /// The S key. S, /// The T key. T, /// The U key. U, /// The V key. V, /// The W key. W, /// The X key. X, /// The Y key. Y, /// The Z key. Z, /// The left Windows logo key (Microsoft Natural Keyboard). LWin, /// The right Windows logo key (Microsoft Natural Keyboard). RWin, /// The Application key (Microsoft Natural Keyboard). Apps, /// The Computer Sleep key. Sleep, /// The 0 key on the numeric keypad. NumPad0, /// The 1 key on the numeric keypad. NumPad1, /// The 2 key on the numeric keypad. NumPad2, /// The 3 key on the numeric keypad. NumPad3, /// The 4 key on the numeric keypad. NumPad4, /// The 5 key on the numeric keypad. NumPad5, /// The 6 key on the numeric keypad. NumPad6, /// The 7 key on the numeric keypad. NumPad7, /// The 8 key on the numeric keypad. NumPad8, /// The 9 key on the numeric keypad. NumPad9, /// The Multiply key. Multiply, /// The Add key. Add, /// The Separator key. Separator, /// The Subtract key. Subtract, /// The Decimal key. Decimal, /// The Divide key. Divide, /// The F1 key. F1, /// The F2 key. F2, /// The F3 key. F3, /// The F4 key. F4, /// The F5 key. F5, /// The F6 key. F6, /// The F7 key. F7, /// The F8 key. F8, /// The F9 key. F9, /// The F10 key. F10, /// The F11 key. F11, /// The F12 key. F12, /// The F13 key. F13, /// The F14 key. F14, /// The F15 key. F15, /// The F16 key. F16, /// The F17 key. F17, /// The F18 key. F18, /// The F19 key. F19, /// The F20 key. F20, /// The F21 key. F21, /// The F22 key. F22, /// The F23 key. F23, /// The F24 key. F24, /// The Num Lock key. NumLock, /// The Scroll Lock key. Scroll, /// The left Shift key. LeftShift, /// The right Shift key. RightShift, /// The left CTRL key. LeftCtrl, /// The right CTRL key. RightCtrl, /// The left ALT key. LeftAlt, /// The right ALT key. RightAlt, /// The Browser Back key. BrowserBack, /// The Browser Forward key. BrowserForward, /// The Browser Refresh key. BrowserRefresh, /// The Browser Stop key. BrowserStop, /// The Browser Search key. BrowserSearch, /// The Browser Favorites key. BrowserFavorites, /// The Browser Home key. BrowserHome, /// The Volume Mute key. VolumeMute, /// The Volume Down key. VolumeDown, /// The Volume Up key. VolumeUp, /// The Media Next Track key. MediaNextTrack, /// The Media Previous Track key. MediaPreviousTrack, /// The Media Stop key. MediaStop, /// The Media Play Pause key. MediaPlayPause, /// The Launch Mail key. LaunchMail, /// The Select Media key. SelectMedia, /// The Launch Application1 key. LaunchApplication1, /// The Launch Application2 key. LaunchApplication2, /// The OEM 1 key. Oem1, /// The OEM Addition key. OemPlus, /// The OEM Comma key. OemComma, /// The OEM Minus key. OemMinus, /// The OEM Period key. OemPeriod, /// The OEM 2 key. Oem2, /// The OEM 3 key. Oem3, /// The ABNT_C1 (Brazilian) key. AbntC1, /// The ABNT_C2 (Brazilian) key. AbntC2, /// The OEM 4 key. Oem4, /// The OEM 5 key. Oem5, /// The OEM 6 key. Oem6, /// The OEM 7 key. Oem7, /// The OEM 8 key. Oem8, /// The OEM 102 key. Oem102, /// A special key masking the real key being processed by an IME. ImeProcessed, /// A special key masking the real key being processed as a system key. System, /// The OEM ATTN key. OemAttn, /// The OEM FINISH key. OemFinish, /// The OEM COPY key. OemCopy, /// The OEM AUTO key. OemAuto, /// The OEM ENLW key. OemEnlw, /// The OEM BACKTAB key. OemBackTab, /// The ATTN key. Attn, /// The CRSEL key. CrSel, /// The EXSEL key. ExSel, /// The ERASE EOF key. EraseEof, /// The PLAY key. Play, /// The ZOOM key. Zoom, /// A constant reserved for future use. NoName, /// The PA1 key. Pa1, /// The OEM Clear key. OemClear, /// The key is used with another key to create a single combined character. DeadCharProcessed, } /// Represents the application language. public interface Language { /// Gets the culture name of the language. string CultureName {get;} /// Gets the two-letter code of the language. string TwoLetterCode {get;} } /// Provides data for the language changed event. public class LanguageChangedEventArgs { /// Gets the language. public Language Language {get;} } /// Levels Attribute. Applies metadata to enable the plot of level lines. public sealed class LevelsAttribute : Attribute { /// Initializes a new LevelsAttribute instance public LevelsAttribute(double[] levels); /// The array of price values that are ploted as level lines public double[] Levels {get; set;} } /// Represents the line shape. public class Line : Shape { /// Initializes a new instance of the Line class. public Line(); /// Gets or sets x-axis point 1 data. public double X1 {get; set;} /// Gets or sets the x-axis point 2 data. public double X2 {get; set;} /// Gets or sets the y-axis point 2 data. public double Y1 {get; set;} /// Gets or sets the y-axis point 2 data. public double Y2 {get; set;} } /// Describes a mechanism by which a line box is determined for each line. public enum LineStackingStrategy { /// The stack height is determined by the block element line-height property value. BlockLineHeight, /// The stack height is the smallest value that containing all the inline elements on that line when those elements are properly aligned. MaxHeight, } /// An enumeration of different stroke styles used to render lines. public enum LineStyle { /// A solid line: ----- Solid, /// A dotted line: ..... Dots, /// A dotted line, large gap between dots: . . . . DotsRare, /// A dotted line, extra large gap between dots: . . . . DotsVeryRare, /// A mixed line / dot style is used to render the line: - . - . - . LinesDots, /// Lines with gaps are used to render the line: - - - - Lines, } /// Represents the predefined chart linked groups. public enum LinkedChartGroup { /// No Group. None, /// A Group. A, /// B Group. B, /// C Group. C, /// D Group. D, /// E Group. E, /// F Group. F, /// G Group. G, /// H Group. H, } /// Represents the local storage API. public interface LocalStorage { /// Saves all data to the disk. When using local storage, data is automatically saved every minute. Use this method if you want to save data without delays. void Flush(LocalStorageScope localStorageScope); /// Gets an object from local storage. This method will search all available scopes (Instance -> Type -> Device) and stops on first found value. T GetObject(string key); /// Gets an object from local storage. T GetObject(string key, LocalStorageScope localStorageScope); /// Gets a string value from local storage. This method will search all available scopes (Instance -> Type -> Device) and stops on first found value. string GetString(string key); /// Gets a string value from local storage. string GetString(string key, LocalStorageScope localStorageScope); /// Reloads all values from the disk. When calling this method, unsaved pending changes may be lost. To avoid losing information, call the Flush() method first. void Reload(LocalStorageScope localStorageScope); /// Removes an element from local storage. This method will search all available scopes (Instance -> Type -> Device) and stops on first found value. void Remove(string key); /// Removes an element from local storage. void Remove(string key, LocalStorageScope localStorageScope); /// Saves an object to local storage. The storage scope is LocalStorageScope.Instance. void SetObject(string key, object obj); /// Saves an object to local storage. void SetObject(string key, object obj, LocalStorageScope localStorageScope); /// Saves a string value to local storage. The storage scope is LocalStorageScope.Instance. void SetString(string key, string value); /// Saves a string value to local storage. void SetString(string key, string value, LocalStorageScope localStorageScope); } /// Represents errors that occur during local storage operations. This exception will be passed to cBot / indicator OnException method. public sealed class LocalStorageException : Exception { } /// Defines the local storage scope. public enum LocalStorageScope { /// The value is stored and can be accessed only by a specific running instance of a cBot/Indicator. Instance, /// The value is stored and can be accessed by all running instances of one or more cBot(s)/Indicator(s). Type, /// The value is stored and can be accessed by all running instances of a cBots/Indicators on this device. Device, } /// Provides plugins access to main menu API. public interface MainMenu { /// Adds a new bottom custom item to main menu. MainMenuBottomCustomItem AddBottomItem(string name, SvgIcon icon); /// Adds a new custom item to main menu. MainMenuOwnCustomItem AddItem(string name, SvgIcon icon); /// Allows checking if a bottom custom item exist with passed name or not. bool ContainsBottomItem(string name); /// Allows checking if a custom item exist with passed name or not. bool ContainsItem(string name); /// Returns a built-in item by type. MainMenuBuiltInItem GetBuiltInItem(MainMenuBuiltInItemType type); /// Removes a previously added bottom item from main menu. bool RemoveBottomItem(MainMenuBottomCustomItem item); /// Removes a previously added custom item from main menu. bool RemoveItem(MainMenuOwnCustomItem item); /// Tries to change selected item to passed built-in item. bool TryChangeSelectedItem(MainMenuBuiltInItem builtInItem); /// Tries to change selected item to passed custom item. bool TryChangeSelectedItem(MainMenuOwnCustomItem customItem); /// Gets a collection of built-in items. IReadonlyList BuiltInItems {get;} /// Gets or sets main menu expanded state. bool IsExpanded {get; set;} /// Gets or sets main menu selected item. MainMenuItem SelectedItem {get;} /// Occurs when main menu selected item changes. event Action SelectedItemChanged; } /// Represents a bottom custom item in main menu. public interface MainMenuBottomCustomItem { /// Get / set handler of bottom item. Action Handler {get; set;} /// Gets name of item. string Name {get;} } /// Represents a bottom item in main menu. public interface MainMenuBottomItem { } /// Represents a built-in item in main menu. public interface MainMenuBuiltInItem { /// Gets type of built-in item. MainMenuBuiltInItemType Type {get;} } /// Represents main menu section built-in item types. public enum MainMenuBuiltInItemType { /// Trade Trade, /// Copy Copy, /// Algo Algo, /// Analyze Analyze, /// Invite Invite, } /// Represents a custom item in main menu. public interface MainMenuCustomItem { /// Gets name of item. string Name {get;} } /// Represents a item in main menu. public interface MainMenuItem { } /// Represents a custom item in main menu which is owned / added by plugin. public interface MainMenuOwnCustomItem { /// Get / set content of item. ControlBase Child {get; set;} } /// Provides data for the main menu selected item changed event. public class MainMenuSelectedItemChangedEventArgs { /// Gets new selected item. public MainMenuItem NewItem {get;} /// Gets old selected item. public MainMenuItem OldItem {get;} } /// Represents errors that occur during loading market data (Bars/Ticks) public sealed class MarketDataLoadException : Exception { } /// Access to MarketDepth Ask Entries, Bid Entries and the event at which the market depth gets updated public interface MarketDepth { /// The total number of Ask entries IReadonlyList AskEntries {get;} /// The total number of Bid entries IReadonlyList BidEntries {get;} /// The event at which the market depth gets updated event Action Updated; } /// Provides access to market depth prices and volumes public interface MarketDepthEntry { /// The price of this market depth entry double Price {get;} /// The volume of this market depth entry double VolumeInUnits {get;} [Obsolete("Use VolumeInUnits instead")] long Volume {get;} } /// Represents the predefined market sessions. public enum MarketSession { /// None None, /// Wellington Wellington, /// Tokyo Tokyo, /// Sydney Sydney, /// Singapore Singapore, /// Frankfurt Frankfurt, /// London London, /// NewYork NewYork, } /// The arguments for MarketSessionsChanged event. public class MarketSessionChangedEventArgs { /// All current sessions including any new sessions that have just begun. The value of NewSessions is always equal to the value of the MarketSessions property of a cBot / indicator. Returns MarketSession.None if no new sessions started when the MarketSessionsChanged event was triggered. public MarketSession NewSessions {get;} /// Returns the previous value of the MarketSessions property before the MarketSessionsChanged event was triggered. Returns MarketSession.None if no previous sessions ended when the event was triggered. public MarketSession PreviousSessions {get;} } /// Provides data for the message handler. public class MessageArgs { /// Gets message sender ChartId. ChartId is null for plugin sent messages. public string ChartId {get;} /// Gets the message. public TMessage Message {get;} /// Gets message sender instance Id. public string SenderInstanceId {get;} /// Gets message subscription. public MessageSubscription Subscription {get;} } /// A message dialog window that you can use to show a message with buttons public static class MessageBox { /// Shows a MessageBox with just a text public static MessageBoxResult Show(string messageBoxText); /// Shows a MessageBox with text and caption / title public static MessageBoxResult Show(string messageBoxText, string caption); /// Shows a MessageBox with text, caption / title, and button public static MessageBoxResult Show(string messageBoxText, string caption, MessageBoxButton button); /// Shows a MessageBox with text, caption / title, button, and an image icon public static MessageBoxResult Show(string messageBoxText, string caption, MessageBoxButton button, MessageBoxImage icon); /// Shows a MessageBox with text, caption / title, button, icon, and a default result public static MessageBoxResult Show(string messageBoxText, string caption, MessageBoxButton button, MessageBoxImage icon, MessageBoxResult defaultResult); /// Shows a MessageBox with text that is a child of another window public static MessageBoxResult Show(Window owner, string messageBoxText); /// Shows a MessageBox with text, and caption / title that is a child of another window public static MessageBoxResult Show(Window owner, string messageBoxText, string caption); /// Shows a MessageBox with text, caption / title, and button that is a child of another window public static MessageBoxResult Show(Window owner, string messageBoxText, string caption, MessageBoxButton button); /// Shows a MessageBox with text, caption / title, button, and image icon that is a child of another window public static MessageBoxResult Show(Window owner, string messageBoxText, string caption, MessageBoxButton button, MessageBoxImage icon); /// Shows a MessageBox with text, caption / title, button, icon, and a default result that is a child of another window public static MessageBoxResult Show(Window owner, string messageBoxText, string caption, MessageBoxButton button, MessageBoxImage icon, MessageBoxResult defaultResult); } /// This Enum contains MessageBox buttons public enum MessageBoxButton { /// Show just an OK button on MessageBox OK, /// Show an OK and Cancel button on MessageBox OKCancel, /// Show Yes, No, and Cancel button on MessageBox YesNoCancel, /// Show Yes and No button on MessageBox YesNo, } /// This Enum contains MessageBox image icons public enum MessageBoxImage { /// The default value, MessageBox without any icon None, /// Shows an error icon on MessageBox Error, /// Shows a question icon on MessageBox Question, /// Shows a warning icon on MessageBox Warning, /// Shows an information icon on MessageBox Information, } /// This Enum contains MessageBox results public enum MessageBoxResult { /// The default result for MessageBox None, /// MessageBox result if OK button clicked by user OK, /// MessageBox result if Cancel button clicked by user Cancel, /// MessageBox result if Yes button clicked by user Yes, /// MessageBox result if No button clicked by user No, } /// Represents a message subscription. public interface MessageSubscription { /// Unsubscribes current subscription. void Unsubscribe(); /// Gets subscription Id. string Id {get;} /// GGets message subject. string Subject {get;} } /// Provides access to messaging API. public interface Messages { /// Sends a message for a specific subject. void Send(string subject, TMessage message); /// Subscribes to a message subject. MessageSubscription Subscribe(string subject, Action> handler); } /// Specifies the set of modifier keys. public enum ModifierKeys { /// No modifiers are pressed. None, /// The ALT key. Alt, /// The CTRL key. Control, /// The SHIFT key. Shift, } /// Specifies the Monte Carlo simulation method that is applied to a completed backtest. public enum MonteCarloMethod { /// Randomly reorders the backtest trades. The total net profit stays the same, but the equity path, the drawdowns and the risk of ruin change, showing how much the result depended on the order the trades happened in. Reshuffle, /// Draws trades at random with replacement, so some trades repeat and others are left out. The total profit varies between iterations, estimating how sensitive the result is to the specific trades that occurred. Bootstrap, /// Resamples fixed size blocks of consecutive trades, preserving the short winning and losing streaks that a plain bootstrap would break apart. The block length is taken from the BlockSize property. BlockBootstrap, /// Resamples random length blocks of consecutive trades, preserving streaks while avoiding the artificial cut points that fixed size blocks introduce. The BlockSize property is used as the mean block length. StationaryBootstrap, /// Reshuffles the historical price returns and re-runs the full backtest on each synthetic price path. The strategy reacts to the new prices, so the trades, the profit and the drawdowns all differ. This method is slower than the resampling ones and can take several minutes. SyntheticPricePath, } /// Represents the optional Monte Carlo simulation that is attached to a backtest. A backtest produces a single equity curve, the one historical ordering of its trades. A Monte Carlo simulation re-runs that result many times, each time resampling or perturbing it, and reports the distribution of the outcomes instead of the single historical path. public class MonteCarloSettings { /// Initializes a new instance of the MonteCarloSettings record. The method and the output file path are required, every other setting is optional. public MonteCarloSettings(MonteCarloMethod method, string outputFilePath); public MonteCarloSettings(MonteCarloSettings original); /// Gets the number of consecutive trades that are kept together when resampling. It is used only by the BlockBootstrap and StationaryBootstrap methods and is ignored by the others. It must be greater than or equal to 1 and the default value is 5. public int BlockSize {get; set;} /// Gets the number of simulated iterations. When it is 0, the default, the method default is used, which is 1000 for the resampling methods and 100 for SyntheticPricePath. Any other value outside the range of the method, which is 100 to 100000 for the resampling methods and 100 to 1000 for SyntheticPricePath, is reported as an invalid settings error instead of being clamped. public int Iterations {get; set;} /// Gets the Monte Carlo simulation method. public MonteCarloMethod Method {get;} /// Gets the destination file path for the Monte Carlo result JSON. The file uses the same snapshot format the desktop Monte Carlo tab saves, so it can be loaded back by the desktop application. public string OutputFilePath {get;} /// Gets the equity level that is treated as account ruin. The risk of ruin is the share of the simulations whose equity drops to or below this level. It must be greater than or equal to 0 and the default value is 0. public double RuinFloor {get; set;} /// Gets the random seed that makes the simulation reproducible. The same seed with the same inputs produces the same result, even across application restarts. The default value is 0. public int Seed {get; set;} /// Gets the starting equity used as the additive base for the simulated equity curves. When it is 0, the default, the initial balance of the backtest is used. public double StartingEquity {get; set;} } /// An enumeration of the different MovingAverage weighting (smoothing) methods. public enum MovingAverageType { /// Use uniform weighting. Represents indicator of SimpleMovingAverage type. Simple, /// Use exponential weighting. Represents indicator of ExponentialMovingAverage type. Exponential, /// Represents indicator of TimeSeriesMovingAverage type. TimeSeries, /// Represents indicator of TriangularMovingAverage type. Triangular, /// VIDYA (Variable Index Dynamic Average) variable length weighting. Represents indicator of VariableIndexDynamicAverage type. VIDYA, /// Represents indicator of WeightedMovingAverage type. Weighted, /// Represents indicator of WellesWilderSmoothing type. WilderSmoothing, /// Represents indicator of HullMovingAverage type. Hull, /// Represents indicator of DoubleExponentialMovingAverage type. DoubleExponential, /// Represents indicator of TripleExponentialMovingAverage type. TripleExponential, /// Represents indicator of KaufmanAdaptiveMovingAverage type. KaufmanAdaptive, } /// A control that shows list of unique items and allows user to select multiple items from the list public class MultiSelect : Control { /// Creates a new empty MultiSelect with default MultiSelect Style public MultiSelect(); /// Adds a new item to the MultiSelect public bool AddItem(string item); /// Removes an existing item from the MultiSelect public bool RemoveItem(string item); /// Selects all items on the MultiSelect public void SelectAllItems(); /// Selects item on the MultiSelect public bool SelectItem(string item); /// Selects items on the MultiSelect public void SelectItems(IEnumerable items); /// Unselects all items on the MultiSelect public void UnselectAllItems(); /// Unselects item on the MultiSelect public bool UnselectItem(string item); /// Unselects items on the MultiSelect public void UnselectItems(IEnumerable items); /// Get the read-only copy of MultiSelect items public IReadonlyList Items {get;} /// Get the read-only copy of MultiSelect selected items public IReadonlyList SelectedItems {get;} /// This event will trigger if the MultiSelect selected items changed public event Action SelectedItemsChanged; } /// Provides data for MultiSelect SelectedItemsChanged event handlers public class MultiSelectSelectedItemsChangedEventArgs { /// The ComboBox that it is selected item changed public MultiSelect MultiSelect {get;} } /// Represents a common dialog box that allows a user to create a new order. public class NewOrderDialog { /// Creates a NewOrderDialog. public NewOrderDialog(); /// Shows the dialog. public void ShowDialog(); /// Gets or sets the Comment. public string Comment {get; set;} /// Gets or sets the Expiration. public DateTime? Expiration {get; set;} /// Gets or sets the HasTrailingStop. public bool HasTrailingStop {get; set;} /// Gets or sets the MarketRangePips. public double? MarketRangePips {get; set;} /// Gets or sets the OrderType. public OrderType OrderType {get; set;} /// Gets or sets the StopLimitRangePips. public double? StopLimitRangePips {get; set;} /// Gets or sets the StopLossPips. public double? StopLossPips {get; set;} /// Gets or sets Trigger method for order StopLoss public StopTriggerMethod? StopLossTriggerMethod {get; set;} /// Gets or sets the HasTrailingStop. public StopTriggerMethod? StopOrderTriggerMethod {get; set;} /// Gets or sets the SymbolName. public string SymbolName {get; set;} /// Gets or sets the TakeProfitPips. public double? TakeProfitPips {get; set;} /// Gets or sets the TargetPrice. public double? TargetPrice {get; set;} /// Gets or sets the TradeType. public TradeType TradeType {get; set;} /// Gets or sets the Volume. public double? Volume {get; set;} } /// Represents a OHLCV Bar object. public sealed struct OhlcvBar : ValueType { /// Create a OHLCV bar. public OhlcvBar(double open, double high, double low, double close, long tickVolume); /// Gets the Close price. public double Close {get;} /// Gets the High price. public double High {get;} /// Gets the Low price. public double Low {get;} /// Gets the open price. public double Open {get;} /// Gets the Tick volume. public long TickVolume {get;} } /// Represents a common dialog box that allows a user to specify a filename for one or more files to open. public class OpenFileDialog { /// Creates an OpenFileDialog. public OpenFileDialog(); /// Resets all dialog properties to their default values. public void Reset(); /// Shows a file dialog, with the owner as the main Window public FileDialogResult ShowDialog(); /// Shows a file dialog, with the passed owner window. public FileDialogResult ShowDialog(Window owner); /// Gets or sets a value indicating whether a file dialog automatically adds an extension to a file name if the user omits an extension. public bool AddExtension {get; set;} /// Gets or sets a value that specifies the default extension string to use to filter the list of files that are displayed. public string DefaultExt {get; set;} /// Gets a string containing the full path of the file selected in a file dialog. public string FileName {get;} /// Gets an array that contains one file name for each selected file. public string[] FileNames {get;} /// Gets or sets the filter string that determines what types of files are displayed in file dialog. public string Filter {get; set;} /// Gets or sets the initial directory that is displayed by a file dialog. public string InitialDirectory {get; set;} /// Gets or sets an option indicating whether OpenFileDialog allows users to select multiple files. public bool Multiselect {get; set;} /// Gets or sets a string shown in the title bar of the dialog. If this property is null, a localized default from the operating system itself will be used. public string Title {get; set;} /// Gets or sets a value indicating whether the dialog accepts only valid file names. public bool ValidateNames {get; set;} } /// Represents a common dialog box that allows the user to open one or more folders. public class OpenFolderDialog { /// Creates an OpenFolderDialog. public OpenFolderDialog(); /// Resets all dialog properties to their default values. public void Reset(); /// Shows a file dialog, with the owner as the main Window public FileDialogResult ShowDialog(); /// Shows a file dialog, with the passed owner window. public FileDialogResult ShowDialog(Window owner); /// Gets a string containing the full path of the folder selected in an open folder dialog. public string FolderName {get;} /// Gets or sets the initial directory that is displayed by a file dialog. public string InitialDirectory {get; set;} /// Gets or sets a string shown in the title bar of the dialog. If this property is null, a localized default from the operating system itself will be used. public string Title {get; set;} } /// Provides methods and events to manage and monitor cBot parameter optimization processes. public interface Optimization { /// Starts an optimization process. OptimizationProcess Start(RobotType robotType, string symbolName, TimeFrame timeFrame, OptimizationSettings settings, OptimizationParameter[] parameters); /// Starts an optimization process across multiple time frames. Use this overload to optimize the time frame alongside the cBot parameters, mirroring the desktop UI where the time frame can itself be part of the optimization. Each time frame is combined with the supplied parameter set during the optimization. OptimizationProcess Start(RobotType robotType, string symbolName, IEnumerable timeFrames, OptimizationSettings settings, OptimizationParameter[] parameters); /// Occurs when the optimization process is completed. event Action Completed; /// Occurs when an individual optimization pass completes. event Action PassCompleted; /// Occurs when the optimization progress changes. event Action ProgressChanged; } /// A bool cBot parameter, optimized over a set of values or held fixed. public class OptimizationBooleanParameter : OptimizationParameter`1 { /// Optimizes the parameter over the given values. public OptimizationBooleanParameter(string name, IEnumerable values); /// Holds the parameter fixed at the given value. public OptimizationBooleanParameter(string name, bool value); public OptimizationBooleanParameter(OptimizationBooleanParameter original); /// Gets the discrete set of values to optimize over. public IReadOnlyList Values {get;} } /// A Color cBot parameter. Not optimizable; always held fixed. public class OptimizationColorParameter : OptimizationParameter`1 { /// Holds the parameter fixed at the given value. public OptimizationColorParameter(string name, Color value); public OptimizationColorParameter(OptimizationColorParameter original); } /// Provides data for the optimization completed event. public class OptimizationCompletedEventArgs { public OptimizationCompletedEventArgs(OptimizationCompletedEventArgs original); /// Gets the best pass by the configured criteria or custom fitness, or null if no pass completed. public OptimizationPass BestPass {get;} /// Gets the full optimization result as JSON (the .optres content). public string JsonReport {get;} /// Gets the optimization process that has completed. public OptimizationProcess Process {get;} } /// A single optimization criterion: a performance index and the direction to optimize it. public sealed struct OptimizationCriterion : ValueType { /// A single optimization criterion: a performance index and the direction to optimize it. public OptimizationCriterion(OptimizationCriterionType Type, OptimizationCriterionDirection Direction); /// Whether to maximize or minimize the index. public OptimizationCriterionDirection Direction {get; set;} /// The performance index to optimize. public OptimizationCriterionType Type {get; set;} } /// The direction in which an optimization criterion is optimized. public enum OptimizationCriterionDirection { /// Maximize the index. Maximize, /// Minimize the index. Minimize, } /// The performance index used as an optimization criterion. public enum OptimizationCriterionType { /// Net profit. NetProfit, /// Profit factor. ProfitFactor, /// Maximum equity drawdown, as a percentage. MaxEquityDrawdownPercentages, /// Maximum balance drawdown, as a percentage. MaxBalanceDrawdownPercentages, /// Maximum equity drawdown, in deposit currency. MaxEquityDrawdown, /// Maximum balance drawdown, in deposit currency. MaxBalanceDrawdown, /// Number of winning trades. WinningTrades, /// Number of losing trades. LosingTrades, /// Total number of trades. TotalTrades, /// Average trade result. AverageTrade, } /// A DataSeries cBot parameter, held fixed at a standard series type. The selector is StandardSeriesType — a live DataSeries cannot itself be an optimization input, and data series parameters cannot be optimized over multiple values. public class OptimizationDataSeriesParameter : OptimizationParameter`1 { /// Holds the parameter fixed at the given value. public OptimizationDataSeriesParameter(string name, StandardSeriesType value); public OptimizationDataSeriesParameter(OptimizationDataSeriesParameter original); } /// A DateOnly cBot parameter, optimized over a date range or held fixed. public class OptimizationDateOnlyParameter : OptimizationParameter`1 { /// Optimizes the parameter over the range the minimum to the maximum by the step. public OptimizationDateOnlyParameter(string name, DateOnly min, DateOnly max, TimeSpan step); /// Holds the parameter fixed at the given value. public OptimizationDateOnlyParameter(string name, DateOnly value); public OptimizationDateOnlyParameter(OptimizationDateOnlyParameter original); /// Gets the inclusive maximum of the range. public DateOnly Max {get;} /// Gets the inclusive minimum of the range. public DateOnly Min {get;} /// Gets the step of the range, as a time span. public TimeSpan Step {get;} } /// A DateTime cBot parameter, optimized over a date-time range or held fixed. public class OptimizationDateTimeParameter : OptimizationParameter`1 { /// Optimizes the parameter over the range the minimum to the maximum by the step. public OptimizationDateTimeParameter(string name, DateTime min, DateTime max, TimeSpan step); /// Holds the parameter fixed at the given value. public OptimizationDateTimeParameter(string name, DateTime value); public OptimizationDateTimeParameter(OptimizationDateTimeParameter original); /// Gets the inclusive maximum of the range. public DateTime Max {get;} /// Gets the inclusive minimum of the range. public DateTime Min {get;} /// Gets the step of the range, as a time span. public TimeSpan Step {get;} } /// A double cBot parameter, optimized over a numeric range or held fixed. public class OptimizationDoubleParameter : OptimizationParameter`1 { /// Optimizes the parameter over the range the minimum to the maximum by the step. public OptimizationDoubleParameter(string name, double min, double max, double step); /// Holds the parameter fixed at the given value. public OptimizationDoubleParameter(string name, double value); public OptimizationDoubleParameter(OptimizationDoubleParameter original); /// Gets the inclusive maximum of the range. public double Max {get;} /// Gets the inclusive minimum of the range. public double Min {get;} /// Gets the step of the range. public double Step {get;} } /// An enum cBot parameter, optimized over a set of members or held fixed. The CLR enum type is resolved from the cBot metadata, so members are supplied by their string names. public class OptimizationEnumParameter : OptimizationParameter`1 { /// Optimizes over the enum members named by the given values. public OptimizationEnumParameter(string name, IEnumerable values); /// Holds the parameter fixed at the enum member named by the given value. public OptimizationEnumParameter(string name, string value); public OptimizationEnumParameter(OptimizationEnumParameter original); /// Gets the discrete set of enum member names to optimize over. public IReadOnlyList Values {get;} } /// Describes why an optimization process failed. public enum OptimizationError { /// No error. None, /// An unspecified error occurred. Other, /// Optimization is not supported on .NET Framework 4. Net4IsNotSupported, /// No connection to the server. NoConnection, /// No historical data is available for the requested period. NoHistoricalData, /// Optimization is not supported in the current environment. NotSupported, /// The optimization settings are invalid. InvalidSettings, /// No parameter was marked for optimization, or a parameter's range or values are invalid. InvalidParameters, } /// A File cBot parameter (a file path). Not optimizable; always held fixed. public class OptimizationFileParameter : OptimizationParameter`1 { /// Holds the parameter fixed at the given value. public OptimizationFileParameter(string name, string value); public OptimizationFileParameter(OptimizationFileParameter original); } /// An int cBot parameter, optimized over an integer range or held fixed. public class OptimizationIntegerParameter : OptimizationParameter`1 { /// Optimizes the parameter over the range the minimum to the maximum by the step. public OptimizationIntegerParameter(string name, int min, int max, int step); /// Holds the parameter fixed at the given value. public OptimizationIntegerParameter(string name, int value); public OptimizationIntegerParameter(OptimizationIntegerParameter original); /// Gets the inclusive maximum of the range. public int Max {get;} /// Gets the inclusive minimum of the range. public int Min {get;} /// Gets the step of the range. public int Step {get;} } /// Specifies the method used to explore the parameter space during optimization. public enum OptimizationMethod { /// Genetic algorithm — explores a subset of parameter combinations heuristically. Genetic, /// Grid search — exhaustively evaluates every parameter combination. Grid, } /// An Enum[] (multi-enum) cBot parameter. Not optimizable; always held fixed. Members are supplied by their string names. public class OptimizationMultiEnumParameter : OptimizationParameter`1 { /// Holds the parameter fixed at the given value. public OptimizationMultiEnumParameter(string name, IReadOnlyList value); public OptimizationMultiEnumParameter(OptimizationMultiEnumParameter original); } /// A MultiFile (a set of file paths) cBot parameter. Not optimizable; always held fixed. public class OptimizationMultiFileParameter : OptimizationParameter`1 { /// Holds the parameter fixed at the given value. public OptimizationMultiFileParameter(string name, IReadOnlyList value); public OptimizationMultiFileParameter(OptimizationMultiFileParameter original); } /// A Symbol[] (multi-symbol) cBot parameter. Not optimizable; always held fixed. public class OptimizationMultiSymbolParameter : OptimizationParameter`1 { /// Holds the parameter fixed at the given value. public OptimizationMultiSymbolParameter(string name, IReadOnlyList value); public OptimizationMultiSymbolParameter(OptimizationMultiSymbolParameter original); } /// A TimeFrame[] (multi-time-frame) cBot parameter. Not optimizable; always held fixed. public class OptimizationMultiTimeFrameParameter : OptimizationParameter`1 { /// Holds the parameter fixed at the given value. public OptimizationMultiTimeFrameParameter(string name, IReadOnlyList value); public OptimizationMultiTimeFrameParameter(OptimizationMultiTimeFrameParameter original); } /// Base type for a cBot parameter's optimization configuration. One derived record exists for each AlgoParameterType. public abstract class OptimizationParameter { /// Gets a value indicating whether the parameter is included in the sweep. When false, the parameter is held fixed at its value. public bool IsOptimized {get;} /// Gets the cBot parameter name (must match its property name). public string Name {get;} } /// Base type for a typed optimization parameter that carries a scalar value (used when the parameter is held fixed). public abstract class OptimizationParameter : OptimizationParameter { /// Gets the scalar value used when the parameter is held fixed. public T Value {get;} } /// Represents a single completed optimization pass and its key statistics. public interface OptimizationPass { /// Gets the fitness value of the pass. double Fitness {get;} /// Gets the pass id. int Id {get;} /// Gets the full per-pass backtest result as JSON. string JsonReport {get;} /// Gets the maximum equity drawdown of the pass, as a percentage. double MaxEquityDrawdownPercentages {get;} /// Gets the net profit of the pass. double NetProfit {get;} /// Gets the exact parameter values this pass used, keyed by parameter name. IReadOnlyDictionary ParameterValues {get;} /// Gets the profit factor of the pass. double ProfitFactor {get;} /// Gets the time frame of the pass. TimeFrame TimeFrame {get;} /// Gets the total number of trades in the pass. int TotalTrades {get;} } /// Provides data for the optimization pass completed event. public class OptimizationPassCompletedEventArgs { public OptimizationPassCompletedEventArgs(OptimizationPassCompletedEventArgs original); /// Gets the pass that completed. public OptimizationPass Pass {get;} /// Gets the optimization process that produced the pass. public OptimizationProcess Process {get;} } /// Represents an optimization process with methods and properties to monitor its status and results. public interface OptimizationProcess { /// Terminates the optimization process. void Terminate(); /// Gets the best pass by the configured criteria or custom fitness, or null if no pass has completed. OptimizationPass BestPass {get;} /// Gets a value indicating whether the optimization process is completed. bool IsCompleted {get;} /// Gets the optimization result as JSON (the .optres content): configuration plus every pass with its statistics. Returns null if the optimization is not finished or an error occurred. The format matches the desktop optimization "Save results", so the JSON can be opened or imported by the desktop optimization UI. string JsonReport {get;} /// Gets the error information if the optimization process failed. OptimizationError OptimizationError {get;} /// Gets the passes completed so far, ordered by pass id. While running this grows as passes finish; on completion it holds every pass. IReadOnlyList Passes {get;} /// Occurs when the optimization process is completed. event Action Completed; /// Occurs when an individual optimization pass completes. event Action PassCompleted; /// Occurs when the optimization progress changes. event Action ProgressChanged; } /// Provides data for the optimization progress changed event. public class OptimizationProgressChangedEventArgs { public OptimizationProgressChangedEventArgs(OptimizationProgressChangedEventArgs original); /// Gets the description of the current operation. public string Operation {get;} /// Gets the optimization process that reported progress. public OptimizationProcess Process {get;} /// Gets the progress percentage of the current operation. public double Progress {get;} } /// Represents settings for configuring an optimization process. public class OptimizationSettings { /// Initializes a new instance of the OptimizationSettings record. public OptimizationSettings(DateTime startTimeUtc, DateTime endTimeUtc, double balance, IEnumerable criteria); public OptimizationSettings(OptimizationSettings original); /// Gets a value that indicates whether the commission type and value of the optimized symbol are applied automatically. When it is set to true the Commission and CommissionType properties are ignored. The default value is false. public bool ApplyCommissionAutomatically {get; set;} /// Gets a value indicating whether the best pass is auto-selected on completion. public bool AutoSelectBest {get; set;} /// Gets the initial balance for each pass. public double Balance {get;} /// Gets the commission value, it is interpreted based on the CommissionType property value. It is ignored when ApplyCommissionAutomatically is set to true. The default value is 0. public double Commission {get; set;} /// Gets the commission type that defines how the Commission property value is interpreted. It is ignored when ApplyCommissionAutomatically is set to true. The default value is SymbolCommissionType.UsdPerMillionUsdVolume. public SymbolCommissionType CommissionType {get; set;} /// Gets the number of CPU cores used to run passes in parallel. Must be greater than or equal to 1. Zero will use the platform default which is ProcessorCount / 2 + 1. public int Cores {get; set;} /// Gets the standard optimization criteria. Ignored when OptimizationSettings.UseCustomFitness is true. public IReadOnlyList Criteria {get;} /// Gets the path to the data file used for the optimization. public string DataFile {get; set;} /// Gets the data mode used for the optimization. public BacktestingDataMode DataMode {get; set;} /// Gets the end time in UTC for the optimization period. public DateTime EndTimeUtc {get;} /// Gets the optimization method. Defaults to OptimizationMethod.Genetic. public OptimizationMethod Method {get; set;} /// Gets a value indicating whether historical data for additional symbols is downloaded to convert profit and margin into the account deposit currency precisely. When true, real historical exchange rates of the additional symbols are used; when false, the default, approximated rates are used. Enabling it can increase the run time and the amount of downloaded data. public bool PreciseConversion {get; set;} /// Gets the spread in pips. public double SpreadPips {get; set;} /// Gets the start time in UTC for the optimization period. public DateTime StartTimeUtc {get;} /// Gets a value indicating whether to use the cBot's custom GetFitness instead of OptimizationSettings.Criteria. public bool UseCustomFitness {get; set;} [Obsolete("Use Commission with CommissionType instead")] public double CommissionUsdPerMillionUsd {get; set;} } /// A string cBot parameter. Not optimizable; always held fixed. public class OptimizationStringParameter : OptimizationParameter`1 { /// Holds the parameter fixed at the given value. public OptimizationStringParameter(string name, string value); public OptimizationStringParameter(OptimizationStringParameter original); } /// A Symbol cBot parameter, optimized over a set of symbols or held fixed. public class OptimizationSymbolParameter : OptimizationParameter`1 { /// Optimizes the parameter over the given values. public OptimizationSymbolParameter(string name, IEnumerable values); /// Holds the parameter fixed at the given value. public OptimizationSymbolParameter(string name, Symbol value); public OptimizationSymbolParameter(OptimizationSymbolParameter original); /// Gets the discrete set of symbols to optimize over. public IReadOnlyList Values {get;} } /// A TimeFrame cBot parameter, optimized over a set of time frames or held fixed. public class OptimizationTimeFrameParameter : OptimizationParameter`1 { /// Optimizes the parameter over the given values. public OptimizationTimeFrameParameter(string name, IEnumerable values); /// Holds the parameter fixed at the given value. public OptimizationTimeFrameParameter(string name, TimeFrame value); public OptimizationTimeFrameParameter(OptimizationTimeFrameParameter original); /// Gets the discrete set of time frames to optimize over. public IReadOnlyList Values {get;} } /// A TimeSpan cBot parameter, optimized over a range or held fixed. public class OptimizationTimeSpanParameter : OptimizationParameter`1 { /// Optimizes the parameter over the range the minimum to the maximum by the step. public OptimizationTimeSpanParameter(string name, TimeSpan min, TimeSpan max, TimeSpan step); /// Holds the parameter fixed at the given value. public OptimizationTimeSpanParameter(string name, TimeSpan value); public OptimizationTimeSpanParameter(OptimizationTimeSpanParameter original); /// Gets the inclusive maximum of the range. public TimeSpan Max {get;} /// Gets the inclusive minimum of the range. public TimeSpan Min {get;} /// Gets the step of the range. public TimeSpan Step {get;} } /// Represents the different types of orders. public enum OrderType { /// Market order. Market, /// Limit order. Limit, /// Stop order. Stop, /// Stop limit order. StopLimit, } /// Defines the different orientations that panel layout can have. public enum Orientation { /// Elements in the panel layout should be horizontally oriented. Horizontal, /// Elements in the panel layout should be vertically oriented. Vertical, } /// This attribute is used for marking an indicator IndicatorDataSeries property as a line Output. public sealed class OutputAttribute : Attribute { /// Initializes a new instance of the OutputAttribute and sets the name. public OutputAttribute(string lineName); /// Gets or sets description for output that will be shown in UI. public string Description {get; set;} /// Gets or sets if Output line color is customizable or not. public bool IsColorCustomizable {get; set;} /// Gets or sets if output last value should be visible or not in instance title (default: true). public bool IsLastValueVisibleInTitle {get; set;} /// Gets or sets default visibility of output. public bool IsVisible {get; set;} /// Gets or sets the Color of the Output property. This Color will be used when the line for this Output is plotted. public string LineColor {get; set;} /// Gets or sets the Line Style for given Output property. By default it is set to Solid public LineStyle LineStyle {get; set;} /// The plot name public string Name {get;} /// Plot type. public PlotType PlotType {get; set;} /// Sets the Width of the Output property. public float Thickness {get; set;} [Obsolete("Use LineColor instead.")] public Colors Color {get; set;} [Obsolete("Use PlotType instead.")] public bool IsHistogram {get; set;} } /// The types of owners for windows public enum OwnerType { /// The default owner type, which means the window has no owner None, /// The chart owns the window Chart, /// The application main window owns the window Application, } /// Provides a base class for all Panel elements. Use Panel elements to position and arrange child objects. public abstract class Panel : ControlBase { /// Adds the child element. public void AddChild(ControlBase child); /// Returns True if panel has passed child otherwise false. public bool HasChild(ControlBase child); /// Removes the child element. public void RemoveChild(ControlBase child); /// Gets or sets the color of the panel background. public Color BackgroundColor {get; set;} /// Gets count of panel children. public int ChildCount {get;} /// Gets panel children. public IEnumerable Children {get;} } /// The Parameter Attribute class. public class ParameterAttribute : Attribute { /// Initializes a new ParameterAttribute instance and sets the name. public ParameterAttribute(string name); /// Initializes a new instance of the ParameterAttribute class. public ParameterAttribute(); /// Gets or sets the default value of this Parameter property. public object DefaultValue {get; set;} /// Gets or sets description for input parameter that will be shown in UI. public string Description {get; set;} /// Groups parameters in UI. public string Group {get; set;} /// Gets or sets whether parameter value should be visible or not in instance title (default: true). public bool IsValueVisibleInTitle {get; set;} /// Gets or sets the maximum value of this Parameter property. It is used for validating user input. public object MaxValue {get; set;} /// Gets or sets the minimum value of this Parameter property. It is used for validating user input. public object MinValue {get; set;} /// The input parameter name. public string Name {get;} /// Gets or sets the step of this Parameter. Step is used in NumericUpDown controls in parameter editors. public double Step {get; set;} } /// Describes the shape at the end of a line or segment. public enum PenLineCap { /// A cap that does not extend past the last point of the line. Comparable to no line cap. Flat, /// A rectangle that has a height equal to the line thickness and a length equal to half the line thickness. Square, /// A semicircle that has a diameter equal to the line thickness. Round, /// An isosceles right triangle whose base length is equal to the thickness of the line. Triangle, } /// Describes the shape that joins two lines or segments. public enum PenLineJoin { /// Regular angular vertices. Miter, /// Beveled vertices. Bevel, /// Rounded vertices. Round, } /// Provides access to properties of pending orders public interface PendingOrder { /// Shortcut for Robot.CancelPendingOrder method TradeResult Cancel(); /// Shortcut for Robot.ModifyPendingOrder method to change Expiration Time TradeResult ModifyExpirationTime(DateTime? expirationTime); /// Shortcut for Robot.ModifyPendingOrder method to change Stop Limit Range TradeResult ModifyStopLimitRange(double stopLimitRangePips); /// Shortcut for the Robot.ModifyPosition method to change the StopLoss Break-Even. TradeResult ModifyStopLossBreakEven(StopLossBreakEven stopLossBreakEven); /// Shortcut for Robot.ModifyPendingOrder method to change Stop Loss TradeResult ModifyStopLossPips(double? stopLossPips); /// Shortcut for Robot.ModifyPendingOrder method to change Stop Loss TradeResult ModifyStopLossPrice(double? stopLoss); /// Shortcut for the Robot.ModifyTakeProfit method to change the Take Profit protection TradeResult ModifyTakeProfit(RelativeTakeProfitProtections takeProfitProtections); /// Shortcut for the Robot.ModifyTakeProfit method to change the Take Profit protection TradeResult ModifyTakeProfit(AbsoluteTakeProfitProtections takeProfitProtections); /// Shortcut for Robot.ModifyPendingOrder method to change Take Profit TradeResult ModifyTakeProfitPips(double? takeProfitPips); /// Shortcut for Robot.ModifyPendingOrder method to change Take Profit TradeResult ModifyTakeProfitPrice(double? takeProfit); /// Shortcut for Robot.ModifyPendingOrder method to change Target Price TradeResult ModifyTargetPrice(double targetPrice); /// Shortcut for Robot.ModifyPendingOrder method to change VolumeInUnits TradeResult ModifyVolume(double volume); /// The absolute take profit protections of the order. Null if order has no take profit. AbsoluteTakeProfitProtections AbsoluteTakeProfitProtections {get;} /// Gets the channel via which the order was placed in a string format. string Channel {get;} /// User assigned Order Comment string Comment {get;} /// Gets the current price of the symbol for which the pending order is placed. double CurrentPrice {get;} /// Gets the distance in pips between the current price of the symbol and the target price of the pending order (via TargetPrice ). double DistancePips {get;} /// The order Expiration time The Timezone used is set in the Robot attribute DateTime? ExpirationTime {get;} /// When HasTrailingStop set to true, server updates Stop Loss every time position moves in your favor. bool HasTrailingStop {get;} /// Unique order Id. int Id {get;} /// User assigned identifier for the order. string Label {get;} /// Gets the time when an order was last updated. The timezone used is set in the algorithm class attribute. DateTime? LastUpdateTime {get;} /// Specifies whether this order is Stop or Limit. PendingOrderType OrderType {get;} /// Gets the order protection type. ProtectionType ProtectionType {get;} /// Quantity (lots) of this order double Quantity {get;} /// The relative take profit protections of the order. Null if order has no take profit. RelativeTakeProfitProtections RelativeTakeProfitProtections {get;} /// Maximum limit from order target price, where order can be executed. double? StopLimitRangePips {get;} /// The order stop loss in price double? StopLoss {get;} /// The stop loss break even of the order. StopLossBreakEven StopLossBreakEven {get;} /// The order stop loss in pips double? StopLossPips {get;} /// Trigger method for order's StopLoss StopTriggerMethod? StopLossTriggerMethod {get;} /// Determines how pending order will be triggered in case it is a StopOrder StopTriggerMethod? StopOrderTriggerMethod {get;} /// Gets the order submission time. DateTime SubmittedTime {get;} /// Gets the order symbol. Symbol Symbol {get;} /// Gets the symbol name. string SymbolName {get;} /// The order take profit in price double? TakeProfit {get;} /// The order take profit in pips double? TakeProfitPips {get;} /// The order target price. double TargetPrice {get;} /// Specifies whether this order is to buy or sell. TradeType TradeType {get;} /// Volume of this order. double VolumeInUnits {get;} [Obsolete("Use SymbolName instead")] string SymbolCode {get;} [Obsolete("Use VolumeInUnits instead")] long Volume {get;} } /// The reason for the order cancellation. public enum PendingOrderCancellationReason { /// THe order was cancelled by trader. Cancelled, /// The order was cancelled due to expiration. Expired, /// The order fill was rejected and the order was cancelled. Rejected, } /// Provides data for the pending order cancellation event. public class PendingOrderCancelledEventArgs { /// Gets the pending order that was cancelled. public PendingOrder PendingOrder {get;} /// Gets the reason for the pending order cancellation. public PendingOrderCancellationReason Reason {get;} } /// Provides data for the pending order creation events. public class PendingOrderCreatedEventArgs { /// Gets the pending order that was created. public PendingOrder PendingOrder {get;} } /// Provides data for the pending order fill event. public class PendingOrderFilledEventArgs { /// Gets the pending order that was filled. public PendingOrder PendingOrder {get;} /// Gets the position that was filled from the pending order. public Position Position {get;} } /// Provides data for the pending order modification event. public class PendingOrderModifiedEventArgs { /// Gets the pending order that was modified. public PendingOrder PendingOrder {get;} } /// Represents the type of pending order. public enum PendingOrderType { /// A limit order is an order to buy or sell at a specific price or better. Limit, /// A stop order is an order to buy or sell once the price of the symbol reaches a specified price. Stop, /// A stop limit order is an order to buy or sell once the price of the symbol reaches specific price. Order has a parameter for maximum distance from that target price, where it can be executed. StopLimit, } /// Provides access to methods of the Pending Orders collection public interface PendingOrders { /// Find PendingOrder by Id. PendingOrder FindById(int id); /// Total number of pending orders int Count {get;} /// Find a pending order by index PendingOrder Item {get;} /// Occurs when pending order is cancelled event Action Cancelled; /// Occurs when pending order is created event Action Created; /// Occurs when pending order is filled event Action Filled; /// Occurs when pending order is modified event Action Modified; } /// Base interface for Permissions public interface Permission { /// Requests the permission from user. bool Request(); /// True if Permission is given by user otherwise false. bool IsAllowed {get;} } /// Provides all permissions state. public interface Permissions { /// Chart robots permission. ChartRobotsPermission ChartRobotsPermission {get;} /// System Clipboard permission. ClipboardPermission ClipboardPermission {get;} /// Algo installation permission. InstallationPermission InstallationPermission {get;} /// Trading permission. TradingPermission TradingPermission {get;} } /// The Plot type. public enum PlotType { /// Plot Indicator result as a line. Line, /// Plot Indicator result as a histogram. Histogram, /// Plot Indicator result as a sequence of points. Points, /// Plot Indicator result as a line with breaks where there are no values in the IndicatorDataSeries. DiscontinuousLine, } /// Base class for Plugins. public abstract class Plugin { /// Invokes asynchronously the specified code on the main Plugin thread. public void BeginInvokeOnMainThread(Action action); /// Cancel a Pending Order public TradeResult CancelPendingOrder(PendingOrder pendingOrder); /// Cancel a Pending Order in asynchronous execution mode public TradeOperation CancelPendingOrderAsync(PendingOrder pendingOrder, Action callback); /// Close a position public TradeResult ClosePosition(Position position); /// Close a position public TradeResult ClosePosition(Position position, long volume); /// Close a position public TradeResult ClosePosition(Position position, double volume); /// Close a position in asynchronous execution mode public TradeOperation ClosePositionAsync(Position position, Action callback); /// Close a position in asynchronous execution mode public TradeOperation ClosePositionAsync(Position position, long volume, Action callback); /// Close a position in asynchronous execution mode public TradeOperation ClosePositionAsync(Position position, double volume, Action callback); /// Returns a new IndicatorDataSeries. public IndicatorDataSeries CreateDataSeries(string symbolName, TimeFrame timeFrame); /// Execute a Market Order public TradeResult ExecuteMarketOrder(TradeType tradeType, string symbolName, double volume); /// Execute a Market Order public TradeResult ExecuteMarketOrder(TradeType tradeType, string symbolName, double volume, string label); /// Execute a Market Order public TradeResult ExecuteMarketOrder(TradeType tradeType, string symbolName, double volume, string label, double? stopLossPips, double? takeProfitPips); /// Execute a Market Order public TradeResult ExecuteMarketOrder(TradeType tradeType, string symbolName, double volume, string label, double? stopLossPips, double? takeProfitPips, string comment); /// Execute a Market Order public TradeResult ExecuteMarketOrder(TradeType tradeType, string symbolName, double volume, string label, double? stopLossPips, double? takeProfitPips, string comment, bool hasTrailingStop); /// Execute a Market Order public TradeResult ExecuteMarketOrder(TradeType tradeType, string symbolName, double volume, string label, double? stopLossPips, double? takeProfitPips, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Execute a Market Order public TradeResult ExecuteMarketOrder(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Execute a Market Order public TradeResult ExecuteMarketOrder(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Execute a Market Order public TradeResult ExecuteMarketOrder(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits); /// Execute a Market Order public TradeResult ExecuteMarketOrder(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven); /// Execute a Market Order public TradeResult ExecuteMarketOrder(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment); /// Execute a Market Order public TradeResult ExecuteMarketOrder(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, StopLossBreakEven stopLossBreakEven); /// Execute a Market Order public TradeResult ExecuteMarketOrder(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop); /// Execute a Market Order public TradeResult ExecuteMarketOrder(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, string symbolName, double volume, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, string symbolName, double volume, string label, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, string symbolName, double volume, string label, double? stopLossPips, double? takeProfitPips, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, string symbolName, double volume, string label, double? stopLossPips, double? takeProfitPips, string comment, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, string symbolName, double volume, string label, double? stopLossPips, double? takeProfitPips, string comment, bool hasTrailingStop, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, string symbolName, double volume, string label, double? stopLossPips, double? takeProfitPips, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, StopLossBreakEven stopLossBreakEven, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven, Action callback); /// Execute a Market Order public TradeResult ExecuteMarketRangeOrder(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice); /// Execute a Market Order public TradeResult ExecuteMarketRangeOrder(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label); /// Execute a Market Order public TradeResult ExecuteMarketRangeOrder(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, double? stopLossPips, double? takeProfitPips); /// Execute a Market Order public TradeResult ExecuteMarketRangeOrder(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, double? stopLossPips, double? takeProfitPips, string comment); /// Execute a Market Order public TradeResult ExecuteMarketRangeOrder(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, double? stopLossPips, double? takeProfitPips, string comment, bool hasTrailingStop); /// Execute a Market Order public TradeResult ExecuteMarketRangeOrder(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, double? stopLossPips, double? takeProfitPips, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Execute a Market Range Order public TradeResult ExecuteMarketRangeOrder(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Execute a Market Range Order public TradeResult ExecuteMarketRangeOrder(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Execute a Market Order public TradeResult ExecuteMarketRangeOrder(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits); /// Execute a Market Order public TradeResult ExecuteMarketRangeOrder(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven); /// Execute a Market Order public TradeResult ExecuteMarketRangeOrder(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment); /// Execute a Market Order public TradeResult ExecuteMarketRangeOrder(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, StopLossBreakEven stopLossBreakEven); /// Execute a Market Order public TradeResult ExecuteMarketRangeOrder(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop); /// Execute a Market Order public TradeResult ExecuteMarketRangeOrder(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketRangeOrderAsync(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketRangeOrderAsync(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketRangeOrderAsync(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, double? stopLossPips, double? takeProfitPips, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketRangeOrderAsync(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, double? stopLossPips, double? takeProfitPips, string comment, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketRangeOrderAsync(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, double? stopLossPips, double? takeProfitPips, string comment, bool hasTrailingStop, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketRangeOrderAsync(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, double? stopLossPips, double? takeProfitPips, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Execute a market range order in asynchronous execution mode public TradeOperation ExecuteMarketRangeOrderAsync(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Execute a market range order in asynchronous execution mode public TradeOperation ExecuteMarketRangeOrderAsync(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketRangeOrderAsync(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketRangeOrderAsync(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketRangeOrderAsync(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketRangeOrderAsync(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, StopLossBreakEven stopLossBreakEven, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketRangeOrderAsync(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketRangeOrderAsync(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expirationTime); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expirationTime, long volume); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, long volume); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, long volume, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, long volume); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, long volume, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expirationTime, double volume); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expirationTime, double volume, bool hasTrailingStop); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, double? stopLimitRangePips); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, double? stopLimitRangePips); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, double? stopLimitRangePips, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, double? stopLimitRangePips); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, double? stopLimitRangePips, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expirationTime, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expirationTime, long volume, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, long volume, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, long volume, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, long volume, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, long volume, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expirationTime, double volume, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expirationTime, double volume, bool hasTrailingStop, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, double? stopLimitRangePips, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, double? stopLimitRangePips, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, double? stopLimitRangePips, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, double? stopLimitRangePips, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, double? stopLimitRangePips, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify the volume of a position public TradeResult ModifyPosition(Position position, double volume); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, double? stopLoss, double? takeProfit, ProtectionType? protectionType); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, double? stopLoss, double? takeProfit, ProtectionType? protectionType, bool hasTrailingStop); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, bool hasTrailingStop); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, bool hasTrailingStop); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, double? stopLoss, double? takeProfit, ProtectionType? protectionType, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, double volume, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, double? stopLoss, double? takeProfit, ProtectionType? protectionType, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, double? stopLoss, double? takeProfit, ProtectionType? protectionType, bool hasTrailingStop, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, bool hasTrailingStop, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, bool hasTrailingStop, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, double? stopLoss, double? takeProfit, ProtectionType? protectionType, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Called if there is an error executing a trade operation. protected internal void OnError(Error error); /// Called on each unhandled exception. protected internal void OnException(Exception exception); /// Called when Plugin is being started. Override this method to initialize your Plugin. protected internal void OnStart(); /// Called when Plugin is stopped. protected internal void OnStop(); /// Called when the timer interval has elapsed. protected void OnTimer(); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, StopLossBreakEven stopLossBreakEven); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, StopLossBreakEven stopLossBreakEven); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, StopLossBreakEven stopLossBreakEven); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, StopLossBreakEven stopLossBreakEven); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, StopLossBreakEven stopLossBreakEven, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, StopLossBreakEven stopLossBreakEven, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, StopLossBreakEven stopLossBreakEven, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, StopLossBreakEven stopLossBreakEven, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, StopLossBreakEven stopLossBreakEven); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, StopLossBreakEven stopLossBreakEven); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, StopLossBreakEven stopLossBreakEven); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, StopLossBreakEven stopLossBreakEven); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, StopLossBreakEven stopLossBreakEven, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, StopLossBreakEven stopLossBreakEven, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, StopLossBreakEven stopLossBreakEven, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, StopLossBreakEven stopLossBreakEven, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, StopLossBreakEven stopLossBreakEven); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, StopLossBreakEven stopLossBreakEven); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, StopLossBreakEven stopLossBreakEven); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, StopLossBreakEven stopLossBreakEven); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, StopLossBreakEven stopLossBreakEven, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, StopLossBreakEven stopLossBreakEven, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, StopLossBreakEven stopLossBreakEven, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, StopLossBreakEven stopLossBreakEven, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Prints text representation of the specified object to the log. public void Print(object value); /// Prints a message to the Log public void Print(object[] parameters); /// Prints a message to the Log. public void Print(string message, object[] parameters); /// Updates Bars, Positions, PendingOrders, History, etc. And sends postponed events after Thread sleep call. If you put the main thread on sleep by calling Thread sleep method then you have to call RefreshData after Thread wakes up to send the postponed events while thread was sleeping. public void RefreshData(); /// Modify the direction of trade at position public TradeResult ReversePosition(Position position); /// Modify the direction of trade and volume of a position public TradeResult ReversePosition(Position position, double volume); /// Reverses Position in asynchronous execution mode public TradeOperation ReversePositionAsync(Position position, Action callback); /// Reverses Position in asynchronous execution mode public TradeOperation ReversePositionAsync(Position position, double volume, Action callback); /// Suspends the plugin until the specified timespan elapses. public void Sleep(TimeSpan timespan); /// Suspends the plugin until the specified number of milliseconds elapses. public void Sleep(int milliseconds); /// Suspends the plugin until the specified datetime . public void Sleep(DateTime dateTime); /// Contains all Account information public IAccount Account {get;} /// Provides access to installed Algorithms. public AlgoRegistry AlgoRegistry {get;} /// Represents the application. public Application Application {get;} /// Gets the active symbol panel. public Asp Asp {get;} /// Converts an asset to another asset. public IAssetConverter AssetConverter {get;} /// Returns list of all available assets. public Assets Assets {get;} /// Provides access to cBot backtesting from plugins, including custom backtesting data sources. public Backtesting Backtesting {get;} /// Returns chart manager. public ChartManager ChartManager {get;} /// Provides access to Chart Templates. public ChartTemplates ChartTemplates {get;} /// Provides access to system Clipboard. public Clipboard Clipboard {get;} /// Provides access to commands. public Commands Commands {get;} /// Provides access to algo compiler. public Compiler Compiler {get;} /// Provides access to custom symbols API. public CustomSymbols CustomSymbols {get;} /// Provides access to file associations. public FileAssociations FileAssociations {get;} /// Provides access to historical orders. public HistoricalOrders HistoricalOrders {get;} /// Represents the collection of all historical trades of the account. public History History {get;} /// Provides access to hotkeys API. public Hotkeys Hotkeys {get;} /// Send HTTP requests. public Http Http {get;} /// Access to the built-in Indicators. public IIndicatorsAccessor Indicators {get;} /// The latest trade result public TradeResult LastResult {get;} /// Access the local storage API. public LocalStorage LocalStorage {get;} /// Provides access to main menu API. public MainMenu MainMenu {get;} /// Provides access to Market Data. public MarketData MarketData {get;} /// Returns current market sessions. public MarketSession MarketSessions {get;} /// Access the messaging API. public Messages Messages {get;} /// Represents the notifications, such as sounds and email. public INotifications Notifications {get;} /// Provides access to cBot parameter optimization. public Optimization Optimization {get;} /// The array of all Pending Orders of the account. public PendingOrders PendingOrders {get;} /// Contains all Permissions information public Permissions Permissions {get;} /// The list of all open positions of the account. public Positions Positions {get;} /// Provides access to Price Alerts. public PriceAlerts PriceAlerts {get;} /// Server related information. public IServer Server {get;} /// Gets the symbol names. public Symbols Symbols {get;} /// Returns the current server time. The shortcut to the Server.Time property. public DateTime Time {get;} /// Provides access to TimeFrames API. public TimeFrameManager TimeFrameManager {get;} /// Gets collection of available TimeFrames. public TimeFrames TimeFrames {get;} /// Returns the current server time in UTC. The shortcut to the Server.TimeInUtc property. public DateTime TimeInUtc {get;} /// TimeZone of a Plugin. public TimeZoneInfo TimeZone {get;} /// Access to the Timer object. public Timer Timer {get;} /// Gets the Trade Watch panel. public TradeWatch TradeWatch {get;} /// Access account transactions. public Transactions Transactions {get;} /// Gets the watchlist. public Watchlists Watchlists {get;} /// Occurs when market sessions change. public event Action MarketSessionsChanged; [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, Action callback); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeResult ModifyPosition(Position position, double? stopLoss, double? takeProfit); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeResult ModifyPosition(Position position, double? stopLoss, double? takeProfit, bool hasTrailingStop); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeResult ModifyPosition(Position position, double? stopLoss, double? takeProfit, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeOperation ModifyPositionAsync(Position position, double? stopLoss, double? takeProfit, Action callback); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeOperation ModifyPositionAsync(Position position, double? stopLoss, double? takeProfit, bool hasTrailingStop, Action callback); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeOperation ModifyPositionAsync(Position position, double? stopLoss, double? takeProfit, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, DateTime? expirationTime); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, DateTime? expirationTime, long volume); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, DateTime? expirationTime, double volume); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, DateTime? expirationTime, double volume, bool hasTrailingStop); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, double? stopLimitRangePips); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, Action callback); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, DateTime? expirationTime, Action callback); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, DateTime? expirationTime, long volume, Action callback); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, DateTime? expirationTime, double volume, Action callback); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, Action callback); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, DateTime? expirationTime, double volume, bool hasTrailingStop, Action callback); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, double? stopLimitRangePips, Action callback); } /// Sealed class PluginAttribute. public sealed class PluginAttribute : Attribute { /// Initializes a new PluginAttribute instance. public PluginAttribute(); /// Gets or sets the access rights required for the Plugin. public AccessRights AccessRights {get; set;} /// Gets or sets additional info url. public string AdditionalInfoUrl {get; set;} /// Sets the timezone for all the Plugin datetime references public string TimeZone {get; set;} } /// Represents a plugin algorithm type. public interface PluginType { /// Returns true if plugin is enabled otherwise false. bool IsEnabled {get;} /// Gets collection of Plugin parameters. IReadonlyList Parameters {get;} } /// Represents an x- and y-coordinate pair in two-dimensional space. public class Point { /// Initializes a new instance of the Point class. public Point(double x, double y); /// Gets or sets the x-coordinate of this Point. public double X {get;} /// Gets or sets the y-coordinate of this Point. public double Y {get;} } /// Draws a polygon, which is a connected series of lines that form a closed shape. public class Polygon : Shape { /// Initializes a new instance of the Polygon class. public Polygon(); /// Gets or sets a FillRule enumeration that specifies how the interior fill of the shape is determined. public FillRule FillRule {get; set;} /// Gets or sets a collection that contains the vertex points of the polygon. public Point[] Points {get; set;} } /// Draws a series of connected straight lines. public class Polyline : Shape { /// Initializes a new instance of the Polyline class. public Polyline(); /// Gets or sets a FillRule enumeration that specifies how the interior fill of the shape is determined. public FillRule FillRule {get; set;} /// Gets or sets a collection that contains the vertex points of the Polyline. public Point[] Points {get; set;} } /// Represents a popup notification. public interface PopupNotification { /// Completes an InProgress popup notification. void Complete(PopupNotificationState finalState); /// Gets state of popup notification. PopupNotificationState State {get;} } /// Represents different states for popup notifications. public enum PopupNotificationState { /// In progress. InProgress, /// Success. Success, /// Error. Error, /// Partial. Partial, /// Information. Information, } /// Taking or opening a position means buying or selling a trading pair. public interface Position { /// Shortcut for the Robot.ClosePosition method. TradeResult Close(); /// Shortcut for the Robot.ModifyPosition method to change the StopLoss Break-Even. TradeResult ModifyStopLossBreakEven(StopLossBreakEven stopLossBreakEven); /// Shortcut for the Robot.ModifyPosition method to change the Stop Loss pips TradeResult ModifyStopLossPips(double? stopLossPips); /// Shortcut for Robot.ModifyPosition method to change the Stop Loss. TradeResult ModifyStopLossPrice(double? stopLoss); /// Shortcut for the Robot.ModifyPosition method to change the Take Profit protection TradeResult ModifyTakeProfit(RelativeTakeProfitProtections takeProfitProtections); /// Shortcut for the Robot.ModifyPosition method to change the Take Profit protection TradeResult ModifyTakeProfit(AbsoluteTakeProfitProtections takeProfitProtections); /// Shortcut for the Robot.ModifyPosition method to change the Take Profit pips TradeResult ModifyTakeProfitPips(double? takeProfitPips); /// Shortcut for Robot.ModifyPosition method to change the Take Profit. TradeResult ModifyTakeProfitPrice(double? takeProfit); /// Shortcut for the Robot.ModifyPosition method to change the Trailing Stop. TradeResult ModifyTrailingStop(bool hasTrailingStop); /// Shortcut for the Robot.ModifyPosition method to change the VolumeInUnits. TradeResult ModifyVolume(double volume); /// Shortcut for the Robot.ReversePosition method to change the direction of the trade. TradeResult Reverse(); /// Shortcut for the Robot.ReversePosition method to change the direction of trade and the volume. TradeResult Reverse(double volume); /// The take profit protections of the position. Null if position has no take profit. AbsoluteTakeProfitProtections AbsoluteTakeProfitProtections {get;} /// Gets the channel via which the position was placed in a string format. string Channel {get;} /// Comment can be used as a note for the order. string Comment {get;} /// Commission Amount of the request to trade one way (Buy/Sell) associated with this position. double Commissions {get;} /// Gets the position current market price. If Position's TradeType is Buy it returns Symbol current Bid price. If position's TradeType is Sell it returns Symbol current Ask price. double CurrentPrice {get;} /// Gets the position deals. IReadonlyList Deals {get;} /// Entry price of the position. double EntryPrice {get;} /// Entry time of trade associated with the position. The Timezone used is set in the cBot attribute. DateTime EntryTime {get;} /// Gross profit accrued by the order associated with the position. double GrossProfit {get;} /// When HasTrailingStop set to true, the server updates the Stop Loss every time the position moves in your favor. bool HasTrailingStop {get;} /// The position's unique identifier. int Id {get;} /// Label can be used to represent the order. string Label {get;} /// Gets the time when a position was last updated. The timezone used is set in the algorithm class attribute. DateTime? LastUpdateTime {get;} /// The amount of used margin by the position. double Margin {get;} /// The Net profit of the position. double NetProfit {get;} /// Represents the winning or loosing pips of the position. double Pips {get;} /// Quantity of lots traded by the position. double Quantity {get;} /// The Stop Loss level of the position. double? StopLoss {get;} /// The stop loss break even of the position. StopLossBreakEven StopLossBreakEven {get;} /// Trigger method for the position's Stop Loss. StopTriggerMethod? StopLossTriggerMethod {get;} /// Swap is the overnight interest rate if any, accrued on the position. double Swap {get;} /// Gets the position symbol. Symbol Symbol {get;} /// Gets the symbol name. string SymbolName {get;} /// The take profit level of the position. double? TakeProfit {get;} /// Trade type (Buy/Sell) of the position. TradeType TradeType {get;} /// The amount traded by the position. double VolumeInUnits {get;} [Obsolete("Use SymbolName instead")] string SymbolCode {get;} [Obsolete("Use VolumeInUnits instead")] long Volume {get;} [Obsolete("Use GrossProfit instead")] decimal Profit {get;} } /// The reason for closing the position. public enum PositionCloseReason { /// Positions was closed by the trader. Closed, /// Position was closed by the Stop Loss. StopLoss, /// Position was closed by the Take Profit. TakeProfit, /// Position was closed because the Stop Out level reached. StopOut, } /// Provides data for the position closing event. public class PositionClosedEventArgs { /// Provides data for the closing positions event. public PositionClosedEventArgs(Position position, PositionCloseReason reason); /// Gets the position being closed. public Position Position {get;} /// Gets the reason of the position being closed. public PositionCloseReason Reason {get;} } /// Provides data for the position modification event. public class PositionModifiedEventArgs { /// Gets or sets the modified position. public Position Position {get;} } /// Provides data for the position opening event. public class PositionOpenedEventArgs { /// Gets or sets the position being opened. public Position Position {get;} } /// Provides access to methods of the positions collection. public interface Positions { /// Find a position by its label. Position Find(string label); /// Find a position by its label and symbol name. Position Find(string label, string symbolName); /// Find a position by its label, symbol name and trade type Position Find(string label, string symbolName, TradeType tradeType); /// Find all positions with this label. Position[] FindAll(string label); /// Find all positions with this label and symbol name. Position[] FindAll(string label, string symbolName); /// Finds all the positions of this label, symbol name and trade type. Position[] FindAll(string label, string symbolName, TradeType tradeType); /// Find Position by Id. Position FindById(int id); /// The total number of open positions. int Count {get;} /// Finds a position by index. Position Item {get;} /// Occurs each time a position is closed. event Action Closed; /// Occurs each time a position is modified. event Action Modified; /// Occurs each time a position is opened. event Action Opened; [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] Position Find(string label, Symbol symbol); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] Position Find(string label, Symbol symbol, TradeType tradeType); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] Position[] FindAll(string label, Symbol symbol); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] Position[] FindAll(string label, Symbol symbol, TradeType tradeType); } /// Represents a price alert. public interface PriceAlert { /// Updates price alert. void Update(Symbol symbol, double price, PriceAlertQuoteType quoteType, PriceAlertCondition condition); /// Updates price alert. void Update(Symbol symbol, double price, PriceAlertQuoteType quoteType, PriceAlertCondition condition, bool showPopup, string message); /// Get condition. PriceAlertCondition Condition {get;} /// Get unique Id. long Id {get;} /// Get/set last update time. DateTime LastUpdateTime {get;} /// Get optional message. string Message {get;} /// Get price level. double Price {get;} /// Get quote type. PriceAlertQuoteType QuoteType {get;} /// Get if the price alert will show a pop-up. bool ShowPopup {get;} /// Get symbol. Symbol Symbol {get;} } /// Provides data for the price alert added event. public class PriceAlertAddedEventArgs { /// Gets added price alert. public PriceAlert PriceAlert {get;} } /// Represents the price alert conditions. public enum PriceAlertCondition { /// Price alert will be triggered if symbol price is above or equal than alert price. HigherOrEqual, /// Price alert will be triggered if symbol price is lower or equal than alert price. LowerOrEqual, } /// Represents the price alert quote types. public enum PriceAlertQuoteType { /// Symbol Bid price will be used for price alert. Bid, /// Symbol Ask price will be used for price alert. Ask, } /// Provides data for the price alert removed event. public class PriceAlertRemovedEventArgs { /// Gets removed price alert. public PriceAlert PriceAlert {get;} } /// Provides data for the price alert triggered event. public class PriceAlertTriggeredEventArgs { /// Gets triggered price alert. public PriceAlert PriceAlert {get;} } /// Provides data for the price alert updated event. public class PriceAlertUpdatedEventArgs { /// Gets updated price alert. public PriceAlert PriceAlert {get;} } /// Represents a collection of price alerts. public interface PriceAlerts { /// Adds a new price alert. PriceAlert Add(Symbol symbol, double price, PriceAlertQuoteType quoteType, PriceAlertCondition condition); /// Finds a price alert by its Id. PriceAlert Find(long id); /// Finds all price alerts by their symbol. PriceAlert[] FindAll(string symbolName); /// Removes a price alert. bool Remove(PriceAlert priceAlert); /// Gets the total number of active price alerts. int Count {get;} /// Occurs when a new price alert is added. event Action Added; /// Occurs when a price alert is removed. event Action Removed; /// Occurs when a price alert is triggered. event Action Triggered; /// Occurs when a price alert is updated. event Action Updated; } /// Represents the Id for price data, it's used for backtesting data sources. public sealed struct PriceDataSourceId : ValueType { /// Represents the Id for price data, it's used for backtesting data sources. public PriceDataSourceId(Symbol Symbol, TimeFrame TimeFrame); /// Symbol public Symbol Symbol {get; set;} /// TimeFrame public TimeFrame TimeFrame {get; set;} } /// An enumeration of the different price types. [Obsolete("Use StandardSeriesType instead.")] public enum PriceType { /// Bar Open price. Open, /// Bar High price. High, /// Bar Low price. Low, /// Bar close price. Close, /// Bar tick volume. TickVolume, /// Bar median price. Median, /// Bar typical price. Typical, /// Bar weighted price. Weighted, /// Bar average price. Average, } /// Progress bar control. public class ProgressBar : ControlBase { /// Initializes a new instance of the ProgressBar class. public ProgressBar(); /// Gets / sets whether the ProgressBar shows actual values or generic, continuous progress feedback. public bool IsIndeterminate {get; set;} /// Get / set progress bar maximum value amount if type is Determinate (default is 100). public double Maximum {get; set;} /// Get / set progress bar minimum value amount if type is Determinate (default is 0). public double Minimum {get; set;} /// Get / set progress bar value amount if type is Determinate. public double Value {get; set;} } /// Defines types of amounts you can use for using symbol volume methods. public enum ProportionalAmountType { /// Account Balance. Balance, /// Account Equity. Equity, } /// The protection type for orders and positions. public enum ProtectionType { /// No protection. None, /// Relative or distance based protection type. Relative, /// Absolute or price based protection type. Absolute, } /// Reporesents the Radiobutton chart control type. public class RadioButton : Control { /// Initializes a new instance of the Radiobutton class. public RadioButton(); /// Gets or sets the content. public ControlBase Content {get; set;} /// Gets or sets the name of the group. public string GroupName {get; set;} /// Defines if the radiobutton is checked. public bool IsChecked {get; set;} /// Gets or sets the text. public string Text {get; set;} /// Occurs when checked. public event Action Checked; /// Occurs when clicked. public event Action Click; /// Occurs when unchecked. public event Action Unchecked; } /// Represents the radio button actions. public class RadioButtonEventArgs { /// Gets the radiobutton data. public RadioButton RadioButton {get;} } /// Represents errors that occur when API rate limits are exceeded. public sealed class RateLimitException : Exception { } /// Represents the rectangle. public class Rectangle : Shape { /// Initializes a new instance of the Rectangle class. public Rectangle(); /// Gets or sets the x-axis radius of the ellipse that is used to round the corners of the rectangle. public double RadiusX {get; set;} /// Gets or sets the y-axis radius of the ellipse that is used to round the corners of the rectangle. public double RadiusY {get; set;} } /// Represents a stop loss defined as a distance (in pips) from the order's entry price. public class RelativeStopLossProtection { /// Represents a stop loss defined as a distance (in pips) from the order's entry price. public RelativeStopLossProtection(double Distance); public RelativeStopLossProtection(RelativeStopLossProtection original); /// The stop loss distance, in pips, from the order's entry price. public double Distance {get; set;} } /// Represents the final take profit in a relative take profit ladder, closing the remaining order volume at a distance (in pips) from the entry price. public class RelativeTakeProfitLastProtection { /// Represents the final take profit in a relative take profit ladder, closing the remaining order volume at a distance (in pips) from the entry price. public RelativeTakeProfitLastProtection(double Distance); public RelativeTakeProfitLastProtection(RelativeTakeProfitLastProtection original); /// The take profit distance, in pips, from the order's entry price. public double Distance {get; set;} } /// Represents a partial take profit closing a portion of the order volume at a distance (in pips) from the entry price. public class RelativeTakeProfitProtection { /// Represents a partial take profit closing a portion of the order volume at a distance (in pips) from the entry price. public RelativeTakeProfitProtection(double Volume, double Distance); public RelativeTakeProfitProtection(RelativeTakeProfitProtection original); /// The take profit distance, in pips, from the order's entry price. public double Distance {get; set;} /// The portion of the order volume to close when the take profit is triggered. public double Volume {get; set;} } /// Represents a ladder of up to four partial take profits at distances (in pips) from the entry price, followed by a final take profit that closes any remaining volume. public class RelativeTakeProfitProtections { /// Initializes a new instance with only a final take profit. public RelativeTakeProfitProtections(RelativeTakeProfitLastProtection lastTakeProfit); /// Initializes a new instance with one partial take profit and a final take profit. public RelativeTakeProfitProtections(RelativeTakeProfitProtection firstTakeProfit, RelativeTakeProfitLastProtection lastTakeProfit); /// Initializes a new instance with two partial take profits and a final take profit. public RelativeTakeProfitProtections(RelativeTakeProfitProtection firstTakeProfit, RelativeTakeProfitProtection secondTakeProfit, RelativeTakeProfitLastProtection lastTakeProfit); /// Initializes a new instance with three partial take profits and a final take profit. public RelativeTakeProfitProtections(RelativeTakeProfitProtection firstTakeProfit, RelativeTakeProfitProtection secondTakeProfit, RelativeTakeProfitProtection thirdTakeProfit, RelativeTakeProfitLastProtection lastTakeProfit); /// Initializes a new instance with four partial take profits and a final take profit. public RelativeTakeProfitProtections(RelativeTakeProfitProtection firstTakeProfit, RelativeTakeProfitProtection secondTakeProfit, RelativeTakeProfitProtection thirdTakeProfit, RelativeTakeProfitProtection fourthTakeProfit, RelativeTakeProfitLastProtection lastTakeProfit); public RelativeTakeProfitProtections(RelativeTakeProfitProtections original); /// Gets the first partial take profit, if any. public RelativeTakeProfitProtection FirstTakeProfit {get;} /// Gets the fourth partial take profit, if any. public RelativeTakeProfitProtection FourthTakeProfit {get;} /// Gets the final take profit that closes the remaining volume. public RelativeTakeProfitLastProtection LastTakeProfit {get;} /// Gets the second partial take profit, if any. public RelativeTakeProfitProtection SecondTakeProfit {get;} /// Gets the third partial take profit, if any. public RelativeTakeProfitProtection ThirdTakeProfit {get;} } /// Types of resize modes for windows public enum ResizeMode { /// For windows that cannot be resized NoResize, /// For windows that can only be minimized CanMinimize, /// For windows that can be resized from all directions CanResize, /// For windows that can only be resized by the bottom edge resize grip CanResizeWithGrip, } /// Base class for all cBots. public class Robot : Algo { /// Robot class constructor public Robot(); /// Cancel a Pending Order public TradeResult CancelPendingOrder(PendingOrder pendingOrder); /// Cancel a Pending Order in asynchronous execution mode public TradeOperation CancelPendingOrderAsync(PendingOrder pendingOrder, Action callback); /// Close a position public TradeResult ClosePosition(Position position); /// Close a position public TradeResult ClosePosition(Position position, long volume); /// Close a position public TradeResult ClosePosition(Position position, double volume); /// Close a position in asynchronous execution mode public TradeOperation ClosePositionAsync(Position position, Action callback); /// Close a position in asynchronous execution mode public TradeOperation ClosePositionAsync(Position position, long volume, Action callback); /// Close a position in asynchronous execution mode public TradeOperation ClosePositionAsync(Position position, double volume, Action callback); /// Execute a Market Order public TradeResult ExecuteMarketOrder(TradeType tradeType, string symbolName, double volume); /// Execute a Market Order public TradeResult ExecuteMarketOrder(TradeType tradeType, string symbolName, double volume, string label); /// Execute a Market Order public TradeResult ExecuteMarketOrder(TradeType tradeType, string symbolName, double volume, string label, double? stopLossPips, double? takeProfitPips); /// Execute a Market Order public TradeResult ExecuteMarketOrder(TradeType tradeType, string symbolName, double volume, string label, double? stopLossPips, double? takeProfitPips, string comment); /// Execute a Market Order public TradeResult ExecuteMarketOrder(TradeType tradeType, string symbolName, double volume, string label, double? stopLossPips, double? takeProfitPips, string comment, bool hasTrailingStop); /// Execute a Market Order public TradeResult ExecuteMarketOrder(TradeType tradeType, string symbolName, double volume, string label, double? stopLossPips, double? takeProfitPips, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Execute a Market Order public TradeResult ExecuteMarketOrder(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Execute a Market Order public TradeResult ExecuteMarketOrder(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Execute a Market Order public TradeResult ExecuteMarketOrder(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits); /// Execute a Market Order public TradeResult ExecuteMarketOrder(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven); /// Execute a Market Order public TradeResult ExecuteMarketOrder(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment); /// Execute a Market Order public TradeResult ExecuteMarketOrder(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, StopLossBreakEven stopLossBreakEven); /// Execute a Market Order public TradeResult ExecuteMarketOrder(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop); /// Execute a Market Order public TradeResult ExecuteMarketOrder(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, string symbolName, double volume, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, string symbolName, double volume, string label, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, string symbolName, double volume, string label, double? stopLossPips, double? takeProfitPips, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, string symbolName, double volume, string label, double? stopLossPips, double? takeProfitPips, string comment, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, string symbolName, double volume, string label, double? stopLossPips, double? takeProfitPips, string comment, bool hasTrailingStop, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, string symbolName, double volume, string label, double? stopLossPips, double? takeProfitPips, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, StopLossBreakEven stopLossBreakEven, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, string symbolName, double volume, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven, Action callback); /// Execute a Market Order public TradeResult ExecuteMarketRangeOrder(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice); /// Execute a Market Order public TradeResult ExecuteMarketRangeOrder(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label); /// Execute a Market Order public TradeResult ExecuteMarketRangeOrder(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, double? stopLossPips, double? takeProfitPips); /// Execute a Market Order public TradeResult ExecuteMarketRangeOrder(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, double? stopLossPips, double? takeProfitPips, string comment); /// Execute a Market Order public TradeResult ExecuteMarketRangeOrder(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, double? stopLossPips, double? takeProfitPips, string comment, bool hasTrailingStop); /// Execute a Market Order public TradeResult ExecuteMarketRangeOrder(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, double? stopLossPips, double? takeProfitPips, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Execute a Market Range Order public TradeResult ExecuteMarketRangeOrder(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Execute a Market Range Order public TradeResult ExecuteMarketRangeOrder(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Execute a Market Order public TradeResult ExecuteMarketRangeOrder(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits); /// Execute a Market Order public TradeResult ExecuteMarketRangeOrder(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven); /// Execute a Market Order public TradeResult ExecuteMarketRangeOrder(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment); /// Execute a Market Order public TradeResult ExecuteMarketRangeOrder(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, StopLossBreakEven stopLossBreakEven); /// Execute a Market Order public TradeResult ExecuteMarketRangeOrder(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop); /// Execute a Market Order public TradeResult ExecuteMarketRangeOrder(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketRangeOrderAsync(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketRangeOrderAsync(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketRangeOrderAsync(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, double? stopLossPips, double? takeProfitPips, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketRangeOrderAsync(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, double? stopLossPips, double? takeProfitPips, string comment, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketRangeOrderAsync(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, double? stopLossPips, double? takeProfitPips, string comment, bool hasTrailingStop, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketRangeOrderAsync(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, double? stopLossPips, double? takeProfitPips, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Execute a market range order in asynchronous execution mode public TradeOperation ExecuteMarketRangeOrderAsync(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Execute a market range order in asynchronous execution mode public TradeOperation ExecuteMarketRangeOrderAsync(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketRangeOrderAsync(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketRangeOrderAsync(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketRangeOrderAsync(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketRangeOrderAsync(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, StopLossBreakEven stopLossBreakEven, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketRangeOrderAsync(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop, Action callback); /// Execute a market order in asynchronous execution mode public TradeOperation ExecuteMarketRangeOrderAsync(TradeType tradeType, string symbolName, double volume, double marketRangePips, double basePrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven, Action callback); /// Override this method to provide custom fitness value for Optimization protected internal double GetFitness(GetFitnessArgs args); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expirationTime); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expirationTime, long volume); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, long volume); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, long volume, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, long volume); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, long volume, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expirationTime, double volume); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expirationTime, double volume, bool hasTrailingStop); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, double? stopLimitRangePips); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, double? stopLimitRangePips); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, double? stopLimitRangePips, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, double? stopLimitRangePips); /// Modify a Pending Order public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, double? stopLimitRangePips, StopLossBreakEven stopLossBreakEven); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expirationTime, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expirationTime, long volume, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, long volume, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, long volume, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, long volume, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, long volume, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expirationTime, double volume, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expirationTime, double volume, bool hasTrailingStop, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, double? stopLimitRangePips, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, double? stopLimitRangePips, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, double? stopLimitRangePips, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, double? stopLimitRangePips, Action callback); /// Modify a Pending Order in asynchronous execution mode public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, double? stopLimitRangePips, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify the volume of a position public TradeResult ModifyPosition(Position position, double volume); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, double? stopLoss, double? takeProfit, ProtectionType? protectionType); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, double? stopLoss, double? takeProfit, ProtectionType? protectionType, bool hasTrailingStop); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, bool hasTrailingStop); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, bool hasTrailingStop); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, double? stopLoss, double? takeProfit, ProtectionType? protectionType, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Modify the protection of a position public TradeResult ModifyPosition(Position position, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, double volume, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, double? stopLoss, double? takeProfit, ProtectionType? protectionType, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, double? stopLoss, double? takeProfit, ProtectionType? protectionType, bool hasTrailingStop, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, bool hasTrailingStop, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, bool hasTrailingStop, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, double? stopLoss, double? takeProfit, ProtectionType? protectionType, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify Position in asynchronous execution mode public TradeOperation ModifyPositionAsync(Position position, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Called on each incoming Bar. protected internal void OnBar(); /// Called when a new bar is opened; the method is called for the previous (closed) bar. protected internal void OnBarClosed(); /// Called if there is an error executing a trade operation. protected internal void OnError(Error error); /// Called when cBot is being started. Override this method to initialize cBot, create nested indicators, etc. protected internal void OnStart(); /// Called when cBot is stopped. protected internal void OnStop(); /// Called on each incoming market tick. protected internal void OnTick(); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, StopLossBreakEven stopLossBreakEven); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, StopLossBreakEven stopLossBreakEven); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, StopLossBreakEven stopLossBreakEven); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, StopLossBreakEven stopLossBreakEven); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Place a Limit Order public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, StopLossBreakEven stopLossBreakEven, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, StopLossBreakEven stopLossBreakEven, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, StopLossBreakEven stopLossBreakEven, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, StopLossBreakEven stopLossBreakEven, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Place limit order in asynchronous execution mode public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, StopLossBreakEven stopLossBreakEven); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, StopLossBreakEven stopLossBreakEven); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, StopLossBreakEven stopLossBreakEven); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, StopLossBreakEven stopLossBreakEven); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod); /// Place a Stop Limit Order public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, StopLossBreakEven stopLossBreakEven, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, StopLossBreakEven stopLossBreakEven, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, StopLossBreakEven stopLossBreakEven, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, StopLossBreakEven stopLossBreakEven, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, Action callback); /// Place Stop Limit order in asynchronous execution mode public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, StopLossBreakEven stopLossBreakEven); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, StopLossBreakEven stopLossBreakEven); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, StopLossBreakEven stopLossBreakEven); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, StopLossBreakEven stopLossBreakEven); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod); /// Place a stop order public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, StopLossBreakEven stopLossBreakEven); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, StopLossBreakEven stopLossBreakEven, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, StopLossBreakEven stopLossBreakEven, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, StopLossBreakEven stopLossBreakEven, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, StopLossBreakEven stopLossBreakEven, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, StopLossBreakEven stopLossBreakEven, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopLossBreakEven stopLossBreakEven, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLoss, double? takeProfit, ProtectionType? protectionType, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, RelativeStopLossProtection stopLoss, RelativeTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, Action callback); /// Place stop order in asynchronous execution mode public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, AbsoluteStopLossProtection stopLoss, AbsoluteTakeProfitProtections takeProfits, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, StopLossBreakEven stopLossBreakEven, Action callback); /// Modify the direction of trade at position public TradeResult ReversePosition(Position position); /// Modify the direction of trade and volume of a position public TradeResult ReversePosition(Position position, double volume); /// Reverses Position in asynchronous execution mode public TradeOperation ReversePositionAsync(Position position, Action callback); /// Reverses Position in asynchronous execution mode public TradeOperation ReversePositionAsync(Position position, double volume, Action callback); /// Stops the cBot. cBot will be completely stopped and will not send/receive any signals. public void Stop(); /// Contains all Account information public IAccount Account {get;} /// The latest trade result public TradeResult LastResult {get;} [Obsolete("Subscribe to Positions.Opened event instead")] protected internal void OnPositionOpened(Position openedPosition); [Obsolete("Subscribe to Positions.Closed event instead")] protected internal void OnPositionClosed(Position position); [Obsolete("Subscribe to PendingOrders.Created event instead")] protected internal void OnPendingOrderCreated(PendingOrder newOrder); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult PlaceLimitOrder(TradeType tradeType, Symbol symbol, long volume, double targetPrice); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult PlaceLimitOrder(TradeType tradeType, Symbol symbol, double volume, double targetPrice); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult PlaceLimitOrder(TradeType tradeType, Symbol symbol, long volume, double targetPrice, string label); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult PlaceLimitOrder(TradeType tradeType, Symbol symbol, double volume, double targetPrice, string label); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult PlaceLimitOrder(TradeType tradeType, Symbol symbol, long volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult PlaceLimitOrder(TradeType tradeType, Symbol symbol, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult PlaceLimitOrder(TradeType tradeType, Symbol symbol, long volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult PlaceLimitOrder(TradeType tradeType, Symbol symbol, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult PlaceLimitOrder(TradeType tradeType, Symbol symbol, long volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult PlaceLimitOrder(TradeType tradeType, Symbol symbol, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult PlaceLimitOrder(TradeType tradeType, Symbol symbol, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult PlaceLimitOrder(TradeType tradeType, Symbol symbol, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, Symbol symbol, long volume, double targetPrice, Action callback); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, Symbol symbol, double volume, double targetPrice, Action callback); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, Symbol symbol, long volume, double targetPrice, string label, Action callback); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, Symbol symbol, double volume, double targetPrice, string label, Action callback); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, Symbol symbol, long volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, Action callback); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, Symbol symbol, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, Action callback); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, Symbol symbol, long volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, Action callback); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, Symbol symbol, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, Action callback); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, Symbol symbol, long volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, Action callback); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, Symbol symbol, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, Action callback); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, Symbol symbol, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, Action callback); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, Symbol symbol, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult ExecuteMarketOrder(TradeType tradeType, Symbol symbol, long volume); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult ExecuteMarketOrder(TradeType tradeType, Symbol symbol, double volume); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult ExecuteMarketOrder(TradeType tradeType, Symbol symbol, long volume, string label); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult ExecuteMarketOrder(TradeType tradeType, Symbol symbol, double volume, string label); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult ExecuteMarketOrder(TradeType tradeType, Symbol symbol, long volume, string label, double? stopLossPips, double? takeProfitPips); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult ExecuteMarketOrder(TradeType tradeType, Symbol symbol, double volume, string label, double? stopLossPips, double? takeProfitPips); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult ExecuteMarketOrder(TradeType tradeType, Symbol symbol, long volume, string label, double? stopLossPips, double? takeProfitPips, double? marketRangePips); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult ExecuteMarketOrder(TradeType tradeType, Symbol symbol, double volume, string label, double? stopLossPips, double? takeProfitPips, double? marketRangePips); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult ExecuteMarketOrder(TradeType tradeType, Symbol symbol, long volume, string label, double? stopLossPips, double? takeProfitPips, double? marketRangePips, string comment); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult ExecuteMarketOrder(TradeType tradeType, Symbol symbol, double volume, string label, double? stopLossPips, double? takeProfitPips, double? marketRangePips, string comment); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult ExecuteMarketOrder(TradeType tradeType, Symbol symbol, double volume, string label, double? stopLossPips, double? takeProfitPips, double? marketRangePips, string comment, bool hasTrailingStop); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult ExecuteMarketOrder(TradeType tradeType, Symbol symbol, double volume, string label, double? stopLossPips, double? takeProfitPips, double? marketRangePips, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, Symbol symbol, long volume, Action callback); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, Symbol symbol, double volume, Action callback); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, Symbol symbol, long volume, string label, Action callback); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, Symbol symbol, double volume, string label, Action callback); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, Symbol symbol, long volume, string label, double? stopLossPips, double? takeProfitPips, Action callback); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, Symbol symbol, double volume, string label, double? stopLossPips, double? takeProfitPips, Action callback); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, Symbol symbol, long volume, string label, double? stopLossPips, double? takeProfitPips, double? marketRangePips, Action callback); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, Symbol symbol, double volume, string label, double? stopLossPips, double? takeProfitPips, double? marketRangePips, Action callback); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, Symbol symbol, long volume, string label, double? stopLossPips, double? takeProfitPips, double? marketRangePips, string comment, Action callback); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, Symbol symbol, double volume, string label, double? stopLossPips, double? takeProfitPips, double? marketRangePips, string comment, Action callback); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, Symbol symbol, double volume, string label, double? stopLossPips, double? takeProfitPips, double? marketRangePips, string comment, bool hasTrailingStop, Action callback); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation ExecuteMarketOrderAsync(TradeType tradeType, Symbol symbol, double volume, string label, double? stopLossPips, double? takeProfitPips, double? marketRangePips, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); [Obsolete("Deprecated.")] public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, long volume, double targetPrice, double? stopLossPips, double? takeProfitPips, DateTime? expirationTime, Action callback); [Obsolete("Deprecated.")] public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, long volume, double targetPrice, double? stopLossPips, double? takeProfitPips, DateTime? expirationTime); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, DateTime? expirationTime); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, DateTime? expirationTime, long volume); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, DateTime? expirationTime, double volume); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, DateTime? expirationTime, double volume, bool hasTrailingStop); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeResult ModifyPendingOrder(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, double? stopLimitRangePips); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, Action callback); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, DateTime? expirationTime, Action callback); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, DateTime? expirationTime, long volume, Action callback); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, DateTime? expirationTime, double volume, Action callback); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, Action callback); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, DateTime? expirationTime, double volume, bool hasTrailingStop, Action callback); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeOperation ModifyPendingOrderAsync(PendingOrder pendingOrder, double targetPrice, double? stopLossPips, double? takeProfitPips, DateTime? expirationTime, double volume, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod? stopOrderTriggerMethod, double? stopLimitRangePips, Action callback); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeResult ModifyPosition(Position position, double? stopLoss, double? takeProfit); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeResult ModifyPosition(Position position, double? stopLoss, double? takeProfit, bool hasTrailingStop); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeResult ModifyPosition(Position position, double? stopLoss, double? takeProfit, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeOperation ModifyPositionAsync(Position position, double? stopLoss, double? takeProfit, Action callback); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeOperation ModifyPositionAsync(Position position, double? stopLoss, double? takeProfit, bool hasTrailingStop, Action callback); [Obsolete("Please use new version with ProtectionType parameter.")] public TradeOperation ModifyPositionAsync(Position position, double? stopLoss, double? takeProfit, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult PlaceStopLimitOrder(TradeType tradeType, Symbol symbol, double volume, double targetPrice, double stopLimitRangePips); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult PlaceStopLimitOrder(TradeType tradeType, Symbol symbol, double volume, double targetPrice, double stopLimitRangePips, string label); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult PlaceStopLimitOrder(TradeType tradeType, Symbol symbol, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult PlaceStopLimitOrder(TradeType tradeType, Symbol symbol, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult PlaceStopLimitOrder(TradeType tradeType, Symbol symbol, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult PlaceStopLimitOrder(TradeType tradeType, Symbol symbol, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult PlaceStopLimitOrder(TradeType tradeType, Symbol symbol, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult PlaceStopLimitOrder(TradeType tradeType, Symbol symbol, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceStopLimitOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, Symbol symbol, double volume, double targetPrice, double stopLimitRangePips, Action callback); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, Symbol symbol, double volume, double targetPrice, double stopLimitRangePips, string label, Action callback); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, Symbol symbol, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips, Action callback); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, Symbol symbol, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, Action callback); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, Symbol symbol, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, Action callback); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, Symbol symbol, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, Action callback); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, Symbol symbol, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, Symbol symbol, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceStopLimitOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, double stopLimitRangePips, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, Action callback); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult PlaceStopOrder(TradeType tradeType, Symbol symbol, long volume, double targetPrice); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult PlaceStopOrder(TradeType tradeType, Symbol symbol, double volume, double targetPrice); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult PlaceStopOrder(TradeType tradeType, Symbol symbol, long volume, double targetPrice, string label); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult PlaceStopOrder(TradeType tradeType, Symbol symbol, double volume, double targetPrice, string label); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult PlaceStopOrder(TradeType tradeType, Symbol symbol, long volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult PlaceStopOrder(TradeType tradeType, Symbol symbol, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult PlaceStopOrder(TradeType tradeType, Symbol symbol, long volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult PlaceStopOrder(TradeType tradeType, Symbol symbol, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult PlaceStopOrder(TradeType tradeType, Symbol symbol, long volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult PlaceStopOrder(TradeType tradeType, Symbol symbol, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult PlaceStopOrder(TradeType tradeType, Symbol symbol, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult PlaceStopOrder(TradeType tradeType, Symbol symbol, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeResult PlaceStopOrder(TradeType tradeType, Symbol symbol, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeResult PlaceStopOrder(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation PlaceStopOrderAsync(TradeType tradeType, Symbol symbol, long volume, double targetPrice, Action callback); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation PlaceStopOrderAsync(TradeType tradeType, Symbol symbol, double volume, double targetPrice, Action callback); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation PlaceStopOrderAsync(TradeType tradeType, Symbol symbol, long volume, double targetPrice, string label, Action callback); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation PlaceStopOrderAsync(TradeType tradeType, Symbol symbol, double volume, double targetPrice, string label, Action callback); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation PlaceStopOrderAsync(TradeType tradeType, Symbol symbol, long volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, Action callback); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation PlaceStopOrderAsync(TradeType tradeType, Symbol symbol, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, Action callback); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation PlaceStopOrderAsync(TradeType tradeType, Symbol symbol, long volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, Action callback); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation PlaceStopOrderAsync(TradeType tradeType, Symbol symbol, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, Action callback); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation PlaceStopOrderAsync(TradeType tradeType, Symbol symbol, long volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, Action callback); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation PlaceStopOrderAsync(TradeType tradeType, Symbol symbol, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, Action callback); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation PlaceStopOrderAsync(TradeType tradeType, Symbol symbol, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, Action callback); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation PlaceStopOrderAsync(TradeType tradeType, Symbol symbol, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); [Obsolete("Parameter 'Symbol symbol' was replaced with 'string symbolName'. More details here https://ctrader.com/forum/announcements/15847")] public TradeOperation PlaceStopOrderAsync(TradeType tradeType, Symbol symbol, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, Action callback); [Obsolete("Parameters 'double? stopLossPips' and 'double? takeProfitPips' was replaced with 'double? stopLoss' and 'double? takeProfit'.")] public TradeOperation PlaceStopOrderAsync(TradeType tradeType, string symbolName, double volume, double targetPrice, string label, double? stopLossPips, double? takeProfitPips, DateTime? expiration, string comment, bool hasTrailingStop, StopTriggerMethod? stopLossTriggerMethod, StopTriggerMethod stopOrderTriggerMethod, Action callback); [Obsolete("Deprecated.")] public ITrade Trade {get;} } /// Sealed class RobotAttribute. public sealed class RobotAttribute : Attribute { /// Initializes a new RobotAttribute instance. public RobotAttribute(); /// Gets or sets the access rights required for the cBot. public AccessRights AccessRights {get; set;} /// Gets or sets whether indicators created by robot will be added to chart or not. public bool AddIndicators {get; set;} /// Gets or sets additional info url. public string AdditionalInfoUrl {get; set;} /// Not used. cTrader applies no default symbol to a cBot: a new instance runs on the symbol it is added with, which the cBot reads from SymbolName. public string DefaultSymbolName {get; set;} /// Not used. cTrader applies no default time frame to a cBot: a new instance runs on the time frame of the chart it is added to, which the cBot reads from TimeFrame. public string DefaultTimeFrame {get; set;} /// The name of a robot. Sets from constructor. public string Name {get;} /// Sets the timezone for all the robot or indicator datetime references public string TimeZone {get; set;} [Obsolete("Deprecated.")] public RobotAttribute(string name); } /// Represents a common dialog box that allows a user to start a cBot. public class RobotStartDialog { /// Creates an RobotStartDialog. public RobotStartDialog(RobotType robotType); /// Shows the dialog. public void ShowDialog(); /// Gets or sets the Robot Type. public RobotType RobotType {get; set;} } /// Represents the predefined states of a Robot instance. public enum RobotState { /// Robot instance is stopped. Stopped, /// Robot instance is running. Running, /// Stop was requested, but Robot instance has not stopped yet Stopping, /// Restarting Robot instance because of crash or change of parameters, symbols, account, etc. Restarting, } /// Represents a robot / cBot algorithm type. public interface RobotType { /// Gets collection of Robot parameters. IReadonlyList Parameters {get;} } /// The rounding mode for normalizing trade volume. public enum RoundingMode { /// Round value to the nearest tradable volume. ToNearest, /// Round value down to tradable volume. Down, /// Round value up to tradable volume. Up, } /// Defines if a cBot is running in real time, in the silent backtesting mode, in the visual backtesting mode, or in the optimization mode. public enum RunningMode { /// The cBot is running in real time. RealTime, /// The cBot is running in the silent backtesting mode. SilentBacktesting, /// The cBot is running in the visual backtesting mode. VisualBacktesting, /// The cBot is running in the optimization mode. Optimization, } /// Represents a common dialog box that allows a user to specify a filename to save. public class SaveFileDialog { /// Creates a SaveFileDialog. public SaveFileDialog(); /// Resets all dialog properties to their default values. public void Reset(); /// Shows a file dialog, with the owner as the main Window public FileDialogResult ShowDialog(); /// Shows a file dialog, with the passed owner window. public FileDialogResult ShowDialog(Window owner); /// Writes data to selected file. public void WriteToFile(string data); /// Writes data to selected file. public void WriteToFile(byte[] data); /// Gets or sets a value indicating whether a file dialog automatically adds an extension to a file name if the user omits an extension. public bool AddExtension {get; set;} /// Gets or sets a value that specifies the default extension string to use to filter the list of files that are displayed. public string DefaultExt {get; set;} /// Gets or sets the filter string that determines what types of files are displayed in file dialog. public string Filter {get; set;} /// Gets or sets the initial directory that is displayed by a file dialog. public string InitialDirectory {get; set;} /// Gets or sets a string shown in the title bar of the dialog. If this property is null, a localized default from the operating system itself will be used. public string Title {get; set;} /// Gets or sets a value indicating whether the dialog accepts only valid file names. public bool ValidateNames {get; set;} } /// Specifies the visibility of a ScrollBar for scrollable content. public enum ScrollBarVisibility { /// A ScrollBar does not appear even when the viewport cannot display all of the content. Disabled, /// A ScrollBar appears and the dimension of the ScrollViewer is applied to the content when the viewport cannot display all of the content. Auto, /// A ScrollBar does not appear even when the viewport cannot display all of the content. The dimension of the ScrollViewer is not applied to the content. Hidden, /// A ScrollBar always appears. The dimension of the ScrollViewer is applied to the content. Visible, } /// Represents a scrollable area that can contain other visible elements. public class ScrollViewer : Control { /// Initializes a new instance of the Scroll viewer class. public ScrollViewer(); /// Gets or sets the content. public ControlBase Content {get; set;} /// Defines the horizontal scroll bar visibility. public ScrollBarVisibility HorizontalScrollBarVisibility {get; set;} /// Defines the vertical scroll bar visibility. public ScrollBarVisibility VerticalScrollBarVisibility {get; set;} } /// Provides the base class for shape elements, such as Ellipse, Polygon, and Rectangle. public abstract class Shape : ControlBase { /// Gets or sets the fill color. public Color FillColor {get; set;} /// Gets or sets the stretch value. public Stretch Stretch {get; set;} /// Gets or sets the stroke color. public Color StrokeColor {get; set;} /// Gets or sets a collection of Double values that indicate the pattern of dashes and gaps that is used to outline shapes. public double[] StrokeDashArray {get; set;} /// Gets or sets a PenLineCap enumeration value that specifies how the ends of a dash are drawn. public PenLineCap StrokeDashCap {get; set;} /// Gets or sets a Double that specifies the distance within the dash pattern where a dash begins. public double StrokeDashOffset {get; set;} /// Gets or sets the shape at the end of a line. public PenLineCap StrokeEndLineCap {get; set;} /// Gets or sets the shape that joins two lines. public PenLineJoin StrokeLineJoin {get; set;} /// Gets or sets a limit on the ratio of the miter length to half the StrokeThickness of a Shape element. public double StrokeMiterLimit {get; set;} /// Gets or sets the shape at the beginning of a line. public PenLineCap StrokeStartLineCap {get; set;} /// Gets or sets the stroke thickness. public double StrokeThickness {get; set;} } /// An enum containing various constants representing different built-in sounds for notifications. public enum SoundType { /// Positive Notification sound. PositiveNotification, /// Negative Notification sound. NegativeNotification, /// Announcement sound. Announcement, /// Door bell sound. Doorbell, /// Confirmation sound. Confirmation, } /// Arranges the child element into a single line that can be oriented horizontally or vertically. public class StackPanel : Panel { /// Initializes a new instance of the StackPanel class. public StackPanel(); /// Gets or sets the StackPanel orientation. public Orientation Orientation {get; set;} } /// Base type for standard indicators. public interface StandardIndicator { /// Adds current indicator to chart if not added yet. ChartIndicator AddToChart(); /// Gets indicator Bars. Bars Bars {get;} /// Gets indicator Symbol. Symbol Symbol {get;} /// Gets indicator TimeFrame. TimeFrame TimeFrame {get;} } /// An enumeration of the standard data series types of a bar. public enum StandardSeriesType { /// Bar Open price. Open, /// Bar High price. High, /// Bar Low price. Low, /// Bar close price. Close, /// Bar tick volume. TickVolume, /// Bar median price. Median, /// Bar typical price. Typical, /// Bar weighted price. Weighted, /// Bar average price. Average, } /// An enumeration of the different Stochastic Oscillator indicator calculation types. public enum StochasticCalculationType { /// Uses lowest low and highest high (default). LowHigh, /// Uses lowest close and highest close. CloseClose, } /// Represents a break-even rule that moves the stop loss to the entry price (optionally offset by a number of pips) once the trade has moved a configured trigger distance in favor of the position. public class StopLossBreakEven { /// Initializes a new instance of the StopLossBreakEven record. public StopLossBreakEven(double triggerDistance, double offset); public StopLossBreakEven(StopLossBreakEven original); /// The offset in pips applied to the entry price when the stop loss is moved. public double Offset {get;} /// The distance in pips that activates the break-even rule. public double TriggerDistance {get;} } /// The trigger side for the Stop Orders. public enum StopTriggerMethod { /// Trade method uses default trigger behavior for Stop orders. Buy order and Stop Loss for Sell position will be triggered when Ask >= order price. Sell order and Stop Loss for Buy position will be triggered when Bid <= order price. Trade, /// Opposite method uses opposite price for order triggering. Buy order and Stop Loss for Sell position will be triggered when Bid >= order price. Sell order and Stop Loss for Buy position will be triggered when Ask <= order price. Opposite, /// Uses default prices for order triggering, but waits for additional confirmation - two consecutive prices should meet criteria to trigger order. Buy order and Stop Loss for Sell position will be triggered when two consecutive Ask prices >= order price. Sell order and Stop Loss for Buy position will be triggered when two consecutive Bid prices <= order price. DoubleTrade, /// Uses opposite prices for order triggering, and waits for additional confirmation - two consecutive prices should meet criteria to trigger order. Buy order and Stop Loss for Sell position will be triggered when two consecutive Bid prices >= order price. Sell order and Stop Loss for Buy position will be triggered when two consecutive Ask prices <= order price. DoubleOpposite, } /// Describes how content is resized to fill its allocated space. public enum Stretch { /// The content preserves its original size. None, /// The content is resized to fill the destination dimensions. The aspect ratio is not preserved. Fill, /// The content is resized to fit in the destination dimensions while it preserves its native aspect ratio. Uniform, /// The content is resized to fill the destination dimensions while it preserves its native aspect ratio. If the aspect ratio of the destination rectangle differs from the source, the source content is clipped to fit in the destination dimensions. UniformToFill, } /// Describes how scaling applies to content and restricts scaling to named axis types. public enum StretchDirection { /// The content scales upward only when it is smaller than the parent. If the content is larger, no scaling downward is performed. UpOnly, /// The content scales downward only when it is larger than the parent. If the content is smaller, no scaling upward is performed. DownOnly, /// The content stretches to fit the parent according to the Stretch mode. Both, } /// Represents the style of a chart control. public class Style { /// Initializes a new instance of Style class. public Style(); /// Represents the parent style to be inherited by a desired style. public Style(Style parentStyle); /// Gets the chart object style for the specified ControlProperty. public object Get(ControlProperty property); /// Gets the chart control style for the specified ControlProperty and ControlState. public object Get(ControlProperty property, ControlState state); /// Provides data for the chart control Style for the specified ControlProperty and the ControlState. public void Set(ControlProperty property, object value, ControlState state); /// Sets the chart control Style for the specified ControlProperty. public void Set(ControlProperty property, object value); } /// Represents a SVG format vector icon. public class SvgIcon { /// Creates an SVG icon from raw SVG XML string. public SvgIcon(string svgXml); } /// Provides data for the symbols added event. public class SymbolAddedEventArgs { /// Gets added symbol name. public string SymbolName {get;} } /// Defines symbol commission types. public enum SymbolCommissionType { /// Commission is in USD per millions USD volume. UsdPerMillionUsdVolume, /// Commission is in USD per one symbol lot. UsdPerOneLot, /// Commission is in Percentage of trading volume. PercentageOfTradingVolume, /// Commission is in symbol quote asset / currency per one lot. QuoteCurrencyPerOneLot, } /// Defines symbol minimum commission types. public enum SymbolMinCommissionType { /// Symbol minimum commission type is in symbol MinCommissionAsset. Asset, /// Symbol minimum commission type is in Symbol Quote Asset QuoteAsset, } /// Defines symbol minimum distance types. public enum SymbolMinDistanceType { /// Symbol minimum distances are in Pips. Pips, /// Symbol minimum distances are in percentage difference. Percentage, } /// Provides data for the symbols removed event. public class SymbolRemovedEventArgs { /// Gets removed symbol name. public string SymbolName {get;} } /// Represents a symbol sentiment. public interface SymbolSentiment { /// Gets buy percentage if available otherwise 0. double BuyPercentage {get;} /// Gets sell percentage if available otherwise 0. double SellPercentage {get;} /// Occurs when symbol sentiment data is updated. event Action Updated; } /// Provides data for the price alert added event. public class SymbolSentimentUpdatedEventArgs { /// Gets sentiment. public SymbolSentiment Sentiment {get;} /// Gets symbol name. public string SymbolName {get;} } /// Defines the types of calculation for symbol SWAP Long/Short. public enum SymbolSwapCalculationType { /// Symbol SWAP Long/Short is in Pips. Pips, /// Symbol SWAP Long/Short is in Percent (%). Percentage, /// Symbol SWAP Long/Short is in Points. Points, } /// Provides data for the symbol tick event. public class SymbolTickEventArgs { /// Gets the ask price. public double Ask {get;} /// Gets the bid price. public double Bid {get;} /// Gets the symbol. public Symbol Symbol {get;} /// Gets the symbol name. public string SymbolName {get;} } /// Defines symbol trading modes. public enum SymbolTradingMode { /// Full access mode. FullAccess, /// Close only mode. CloseOnly, /// Trading is disabled but pending order execution is allowed mode. DisabledWithPendingOrderExecution, /// Trading is fully disabled mode. FullyDisabled, } /// Provides data for the symbols updated event. public class SymbolUpdatedEventArgs { /// Gets updated symbol name. public string SymbolName {get;} } /// Represents the list of all the symbols with the symbol names as string values. public interface Symbols { /// Defines if the specific symbol name exists in the list. bool Exists(string symbolName); /// Gets the specific symbol. Symbol GetSymbol(string symbolName); /// Get multiple symbols at once. Symbol[] GetSymbols(string[] symbolNames); /// Gets the set of only archived symbol names. IReadOnlySet Archived {get;} /// Gets the total number of the symbols in the list. int Count {get;} /// Gets the set of only custom symbol names. IReadOnlySet Custom {get;} /// Gets the set of only enabled symbol names. IReadOnlySet Enabled {get;} /// Gets the desired symbol. string Item {get;} /// Occurs when a symbol is added. event Action Added; /// Occurs when a symbol is removed. event Action Removed; /// Occurs when a symbol is updated. event Action Updated; [Obsolete("Use 'GetSymbol' instead")] SymbolInfo GetSymbolInfo(string symbolName); [Obsolete("Use 'GetSymbols' instead")] SymbolInfo[] GetSymbolInfos(string[] symbolNames); } /// Represents the Tab control. public class TabControl : Control { /// Initializes a new instance of the TabControl class. public TabControl(); /// Adds a new tab. public void AddTab(TabItem tab); /// Removes an existing tab. public bool RemoveTab(TabItem tab); /// Gets or sets the SelectedTab. public TabItem SelectedTab {get; set;} /// Gets or sets the TabStripPlacement (Default: Top). public Dock TabStripPlacement {get; set;} /// Get tabs. public IReadonlyList Tabs {get;} /// Occurs when the selected tab is changed. public event Action SelectedTabChanged; } /// Provides data for the TabControl SelectedTabChanged event. public class TabControlSelectedTabChangedEventArgs { /// Gets selected tab item. public TabItem SelectedTab {get;} /// Gets tab control. public TabControl TabControl {get;} } /// Represents the Tab item. public class TabItem : Control { /// Initializes a new instance of the TabItem class. public TabItem(); /// Gets or sets the content. public ControlBase Content {get; set;} /// Gets or sets the content. public ControlBase Header {get; set;} } /// The text alignment regarding the anchor point. public enum TextAlignment { /// Align the text left. Left, /// Align the text right. Right, /// Center the text vertically. Center, /// Justify the text. Justify, } /// Represents the Text Block - the control to display a non-interactive text. public class TextBlock : Control { /// Initializes a new instance of the Text Block class. public TextBlock(); /// Gets or sets the height of the line. public double LineHeight {get; set;} /// Gets or sets the mechanism by which a line box is determined for each line of text within the TextBlock. public LineStackingStrategy LineStackingStrategy {get; set;} /// Gets or sets the text. public string Text {get; set;} /// Gets or sets the text alignment. public TextAlignment TextAlignment {get; set;} /// Gets or sets the text trimming behavior when the content overflows the content area. public TextTrimming TextTrimming {get; set;} /// Gets or sets the way how the TextBlock should wrap the text. public TextWrapping TextWrapping {get; set;} } /// Represents the text box class. public class TextBox : Control { /// Initializes a new instance of the TextBox class. public TextBox(); /// Gets or sets a value that indicates how the text editing control responds when the user presses the ENTER key. public bool AcceptsReturn {get; set;} /// Gets or sets a value that indicates how the text editing control responds when the user presses the TAB key. public bool AcceptsTab {get; set;} /// Gets or sets the color of the text box border. public Color BorderColor {get; set;} /// Gets or sets the border thickness. Property value can be set using Thickness, number, or a string new Thickness(5), new Thickness(1, 2, 3, 4), 5, "5", "1 2 3 4". public Thickness BorderThickness {get; set;} /// Gets or sets the color of the insertion caret. public Color CaretColor {get; set;} /// Gets or sets whether the TextBox control modifies the case of characters as they are typed. public CharacterCasing CharacterCasing {get; set;} /// Defines the horizontal scroll bar visibility. public ScrollBarVisibility HorizontalScrollBarVisibility {get; set;} /// Gets or sets a value indicating whether the current text box is read-only. public bool IsReadOnly {get; set;} /// Gets or sets a value that indicates whether a read-only text box displays a caret. public bool IsReadOnlyCaretVisible {get; set;} /// Gets or sets the maximum number of characters that can be manually entered into the text box. public int MaxLength {get; set;} /// Gets or sets the maximum number of visible lines. public int MaxLines {get; set;} /// Gets or sets the minimum number of visible lines. public int MinLines {get; set;} /// Gets or sets the text color of the current text selection. public Color SelectionColor {get; set;} /// Gets or sets the opacity of the selected text. public double SelectionOpacity {get; set;} /// Gets or sets the text. public string Text {get; set;} /// Gets or sets a value that indicates the horizontal alignment of text content. public TextAlignment TextAlignment {get; set;} /// Gets or sets how the text box should wrap text. public TextWrapping TextWrapping {get; set;} /// Defines the vertical scroll bar visibility. public ScrollBarVisibility VerticalScrollBarVisibility {get; set;} /// Occurs when the text has changed. public event Action TextChanged; } /// Provides data for the TextChanged event. public class TextChangedEventArgs { /// Gets the texbox. public TextBox TextBox {get;} } /// Describes how text is trimmed when it overflows the edge of its containing box. public enum TextTrimming { /// Text is not trimmed. None, /// Text is trimmed at a character boundary. An ellipsis (...) is drawn in place of remaining text. CharacterEllipsis, /// Text is trimmed at a word boundary. An ellipsis (...) is drawn in place of remaining text. WordEllipsis, } /// Specifies whether text wraps when it reaches the edge of the containing box. public enum TextWrapping { /// Line-breaking occurs if the line overflows beyond the available block width. However, a line may overflow beyond the block width if the line breaking algorithm cannot determine a line break opportunity, as in the case of a very long word constrained in a fixed-width container with no scrolling allowed. WrapWithOverflow, /// No line wrapping is performed. NoWrap, /// Line-breaking occurs if the line overflows beyond the available block width, even if the standard line breaking algorithm cannot determine any line break opportunity, as in the case of a very long word constrained in a fixed-width container with no scrolling allowed. Wrap, } /// Defines the thickness of the frame around the rectangle. public sealed struct Thickness : ValueType { /// Initializes a new instance of the Thickness structure. public Thickness(double left, double top, double right, double bottom); /// Initializes a new instance of the Thickness structure. public Thickness(double uniformLength); /// Gets or sets the thickness of the bottom side of the retangle. public double Bottom {get; set;} /// Gets or sets the thickness of the left side of the retangle. public double Left {get; set;} /// Gets or sets the thickness of the right side of the retangle. public double Right {get; set;} /// Gets or sets the thickness of the top side of the retangle. public double Top {get; set;} } /// Represents the Tick object. public sealed struct Tick : ValueType { /// Gets the Ask price of tick. public double Ask {get;} /// Gets the Bid price of tick. public double Bid {get;} /// Gets the Tick time. public DateTime Time {get;} } /// Represents the Ticks interface - the collection of Tick objects. public interface Ticks { /// Returns the first available server tick time. DateTime GetServerFirstTime(); /// Gets the tick from the end of the list. Tick Last(int index); /// Loads more historical ticks. Method returns the number of loaded ticks that were added to the beginning of the collection. int LoadMoreHistory(); /// Loads more historical ticks asynchronously. void LoadMoreHistoryAsync(); /// Loads more historical ticks asynchronously. void LoadMoreHistoryAsync(Action callback); /// Gets the number of objects. int Count {get;} /// Gets the specific tick data. Tick Item {get;} /// Gets the last tick in the chart. Tick LastTick {get;} /// Gets the symbol name. string SymbolName {get;} /// Occurs when more history is loaded due to chart scroll to the left or due to API call. event Action HistoryLoaded; /// Occurs when ticks are refreshed due to reconnect. event Action Reloaded; /// Occurs when a new tick appears. event Action Tick; } /// Provides data for the tick history loaded event. public class TicksHistoryLoadedEventArgs { /// Gets the number of the ticks. public int Count {get;} /// Gets the tick data. public Ticks Ticks {get;} } /// Provides data for the tick event. public class TicksTickEventArgs { /// Gets the Ticks data. public Ticks Ticks {get;} } /// Contains supported timeframe values. public class TimeFrame { /// It parses a string and if it matched to a timeframe name it returns that time frame otherwise it throws FormatException public static TimeFrame Parse(string value); /// It parses a string and if it matched to a timeframe name it sets it to the passed timeFrame parameter public static bool TryParse(string value, TimeFrame& timeFrame); /// Returns the name of timeframe public string Name {get;} /// Returns the short name of timeframe public string ShortName {get;} /// Daily / D1 public static TimeFrame Daily; /// Day2 / D2 public static TimeFrame Day2; /// Day3 / D3 public static TimeFrame Day3; /// HeikinDaily / HD1 public static TimeFrame HeikinDaily; /// HeikinDay2 / HD2 public static TimeFrame HeikinDay2; /// HeikinDay3 / HD3 public static TimeFrame HeikinDay3; /// HeikinHour / Hh1 public static TimeFrame HeikinHour; /// HeikinHour12 / Hh12 public static TimeFrame HeikinHour12; /// HeikinHour2 / Hh2 public static TimeFrame HeikinHour2; /// HeikinHour3 / Hh3 public static TimeFrame HeikinHour3; /// HeikinHour4 / Hh4 public static TimeFrame HeikinHour4; /// HeikinHour6 / Hh6 public static TimeFrame HeikinHour6; /// HeikinHour8 / Hh8 public static TimeFrame HeikinHour8; /// HeikinMinute / Hm1 public static TimeFrame HeikinMinute; /// HeikinMinute10 / Hm10 public static TimeFrame HeikinMinute10; /// HeikinMinute15 / Hm15 public static TimeFrame HeikinMinute15; /// HeikinMinute2 / Hm2 public static TimeFrame HeikinMinute2; /// HeikinMinute20 / Hm20 public static TimeFrame HeikinMinute20; /// HeikinMinute3 / Hm3 public static TimeFrame HeikinMinute3; /// HeikinMinute30 / Hm30 public static TimeFrame HeikinMinute30; /// HeikinMinute4 / Hm4 public static TimeFrame HeikinMinute4; /// HeikinMinute45 / Hm45 public static TimeFrame HeikinMinute45; /// HeikinMinute5 / Hm5 public static TimeFrame HeikinMinute5; /// HeikinMinute6 / Hm6 public static TimeFrame HeikinMinute6; /// HeikinMinute7 / Hm7 public static TimeFrame HeikinMinute7; /// HeikinMinute8 / Hm8 public static TimeFrame HeikinMinute8; /// HeikinMinute9 / Hm9 public static TimeFrame HeikinMinute9; /// HeikinMonthly / HMonth1 public static TimeFrame HeikinMonthly; /// HeikinWeekly / HW1 public static TimeFrame HeikinWeekly; /// Hour / h1 public static TimeFrame Hour; /// Hour12 / h12 public static TimeFrame Hour12; /// Hour2 / h2 public static TimeFrame Hour2; /// Hour3 / h3 public static TimeFrame Hour3; /// Hour4 / h4 public static TimeFrame Hour4; /// Hour6 / h6 public static TimeFrame Hour6; /// Hour8 / h8 public static TimeFrame Hour8; /// Minute / m1 public static TimeFrame Minute; /// Minute10 / m10 public static TimeFrame Minute10; /// Minute15 / m15 public static TimeFrame Minute15; /// Minute2 / m2 public static TimeFrame Minute2; /// Minute20 / m20 public static TimeFrame Minute20; /// Minute3 / m3 public static TimeFrame Minute3; /// Minute30 / m30 public static TimeFrame Minute30; /// Minute4 / m4 public static TimeFrame Minute4; /// Minute45 / m45 public static TimeFrame Minute45; /// Minute5 / m5 public static TimeFrame Minute5; /// Minute6 / m6 public static TimeFrame Minute6; /// Minute7 / m7 public static TimeFrame Minute7; /// Minute8 / m8 public static TimeFrame Minute8; /// Minute9 / m9 public static TimeFrame Minute9; /// Monthly / Month1 public static TimeFrame Monthly; /// Range1 / Ra1 public static TimeFrame Range1; /// Range10 / Ra10 public static TimeFrame Range10; /// Range100 / Ra100 public static TimeFrame Range100; /// Range1000 / Ra1000 public static TimeFrame Range1000; /// Range10000 / Ra10000 public static TimeFrame Range10000; /// Range150 / Ra150 public static TimeFrame Range150; /// Range2 / Ra2 public static TimeFrame Range2; /// Range20 / Ra20 public static TimeFrame Range20; /// Range200 / Ra200 public static TimeFrame Range200; /// Range2000 / Ra2000 public static TimeFrame Range2000; /// Range3 / Ra3 public static TimeFrame Range3; /// Range30 / Ra30 public static TimeFrame Range30; /// Range300 / Ra300 public static TimeFrame Range300; /// Range4 / Ra4 public static TimeFrame Range4; /// Range5 / Ra5 public static TimeFrame Range5; /// Range50 / Ra50 public static TimeFrame Range50; /// Range500 / Ra500 public static TimeFrame Range500; /// Range5000 / Ra5000 public static TimeFrame Range5000; /// Range7500 / Ra7500 public static TimeFrame Range7500; /// Range8 / Ra8 public static TimeFrame Range8; /// Range80 / Ra80 public static TimeFrame Range80; /// Range800 / Ra800 public static TimeFrame Range800; /// Renko1 / Re1 public static TimeFrame Renko1; /// Renko10 / Re10 public static TimeFrame Renko10; /// Renko100 / Re100 public static TimeFrame Renko100; /// Renko1000 / Re1000 public static TimeFrame Renko1000; /// Renko15 / Re15 public static TimeFrame Renko15; /// Renko150 / Re150 public static TimeFrame Renko150; /// Renko2 / Re2 public static TimeFrame Renko2; /// Renko20 / Re20 public static TimeFrame Renko20; /// Renko200 / Re200 public static TimeFrame Renko200; /// Renko2000 / Re2000 public static TimeFrame Renko2000; /// Renko25 / Re25 public static TimeFrame Renko25; /// Renko3 / Re3 public static TimeFrame Renko3; /// Renko30 / Re30 public static TimeFrame Renko30; /// Renko300 / Re300 public static TimeFrame Renko300; /// Renko35 / Re35 public static TimeFrame Renko35; /// Renko4 / Re4 public static TimeFrame Renko4; /// Renko40 / Re40 public static TimeFrame Renko40; /// Renko45 / Re45 public static TimeFrame Renko45; /// Renko5 / Re5 public static TimeFrame Renko5; /// Renko50 / Re50 public static TimeFrame Renko50; /// Renko500 / Re500 public static TimeFrame Renko500; /// Renko6 / Re6 public static TimeFrame Renko6; /// Renko7 / Re7 public static TimeFrame Renko7; /// Renko8 / Re8 public static TimeFrame Renko8; /// Renko800 / Re800 public static TimeFrame Renko800; /// Renko9 / Re9 public static TimeFrame Renko9; /// Tick / t1 public static TimeFrame Tick; /// Tick10 / t10 public static TimeFrame Tick10; /// Tick100 / t100 public static TimeFrame Tick100; /// Tick1000 / t1000 public static TimeFrame Tick1000; /// Tick15 / t15 public static TimeFrame Tick15; /// Tick150 / t150 public static TimeFrame Tick150; /// Tick2 / t2 public static TimeFrame Tick2; /// Tick20 / t20 public static TimeFrame Tick20; /// Tick200 / t200 public static TimeFrame Tick200; /// Tick25 / t25 public static TimeFrame Tick25; /// Tick250 / t250 public static TimeFrame Tick250; /// Tick3 / t3 public static TimeFrame Tick3; /// Tick30 / t30 public static TimeFrame Tick30; /// Tick300 / t300 public static TimeFrame Tick300; /// Tick4 / t4 public static TimeFrame Tick4; /// Tick40 / t40 public static TimeFrame Tick40; /// Tick5 / t5 public static TimeFrame Tick5; /// Tick50 / t50 public static TimeFrame Tick50; /// Tick500 / t500 public static TimeFrame Tick500; /// Tick6 / t6 public static TimeFrame Tick6; /// Tick60 / t60 public static TimeFrame Tick60; /// Tick7 / t7 public static TimeFrame Tick7; /// Tick750 / t750 public static TimeFrame Tick750; /// Tick8 / t8 public static TimeFrame Tick8; /// Tick80 / t80 public static TimeFrame Tick80; /// Tick9 / t9 public static TimeFrame Tick9; /// Tick90 / t90 public static TimeFrame Tick90; /// Weekly / W1 public static TimeFrame Weekly; } /// Provides access to TimeFrames API for plugins. public interface TimeFrameManager { /// Provides access to Custom TimeFrames API. CustomTimeFrames Custom {get;} /// Provides access to Favorite TimeFrames API. FavoriteTimeFrames Favorite {get;} } /// Represents collection of all time frames including custom time frames. public interface TimeFrames { /// Occurs when new TimeFrames are added. event Action Added; /// Occurs when TimeFrames are removed. event Action Removed; } /// Provides data for the TimeFrames Added event. public class TimeFramesAddedEventArgs { /// Gets the added time frames. public TimeFrame[] TimeFrames {get;} } /// Provides data for the TimeFrames Removed event. public class TimeFramesRemovedEventArgs { /// Gets the removed time frames. public TimeFrame[] TimeFrames {get;} } /// A series of values that represent time like Bars.OpenTimes public interface TimeSeries { /// Find the index in the different time frame series. int GetIndexByExactTime(DateTime dateTime); /// Find the index in the different time frame series. int GetIndexByTime(DateTime dateTime); /// Access a value in the data series certain number of bars ago. DateTime Last(int index); /// Gets the number of elements contained in the series. int Count {get;} /// Returns the DateTime value at the specified index. DateTime Item {get;} /// Gets the last value of this time series. DateTime LastValue {get;} } /// Standard TimeZones class. public static class TimeZones { /// (GMT-09:00) Alaska public static string AlaskanStandardTime; /// (GMT+03:00) Kuwait, Riyadh public static string ArabStandardTime; /// (GMT+04:00) Abu Dhabi, Muscat public static string ArabianStandardTime; /// (GMT+03:00) Baghdad public static string ArabicStandardTime; /// (GMT-04:00) Atlantic Time (Canada) public static string AtlanticStandardTime; /// (GMT-01:00) Azores public static string AzoresStandardTime; /// (GMT-06:00) Saskatchewan public static string CanadaCentralStandardTime; /// (GMT-01:00) Cape Verde Islands public static string CapeVerdeStandardTime; /// (GMT+04:00) Baku, Tbilisi, Yerevan public static string CaucasusStandardTime; /// (GMT+09:30) Adelaide public static string CenAustraliaStandardTime; /// (GMT-06:00) Central America public static string CentralAmericaStandardTime; /// (GMT+06:00) Astana, Dhaka public static string CentralAsiaStandardTime; /// (GMT+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague public static string CentralEuropeStandardTime; /// (GMT+01:00) Sarajevo, Skopje, Warsaw, Zagreb public static string CentralEuropeanStandardTime; /// (GMT+11:00) Magadan, Solomon Islands, New Caledonia public static string CentralPacificStandardTime; /// (GMT-06:00) Central Time (US and Canada public static string CentralStandardTime; /// (GMT+08:00) Beijing, Chongqing, Hong Kong SAR, Urumqi public static string ChinaStandardTime; /// (GMT-12:00) International Date Line West public static string DatelineStandardTime; /// (GMT+03:00) Nairobi public static string EAfricaStandardTime; /// (GMT+10:00) Brisbane public static string EAustraliaStandardTime; /// (GMT+02:00) Bucharest public static string EEuropeStandardTime; /// (GMT-03:00) Brasilia public static string ESouthAmericaStandardTime; /// (GMT-05:00) Eastern Time (US and Canada) public static string EasternStandardTime; /// (GMT+02:00) Cairo public static string EgyptStandardTime; /// (GMT+05:00) Ekaterinburg public static string EkaterinburgStandardTime; /// (GMT+02:00) Helsinki, Kiev, Riga, Sofia, Tallinn, Vilnius public static string FLEStandardTime; /// (GMT) Greenwich Mean Time: Dublin, Edinburgh, Lisbon, London public static string GMTStandardTime; /// (GMT+02:00) Athens, Istanbul, Minsk public static string GTBStandardTime; /// (GMT-03:00) Greenland public static string GreenlandStandardTime; /// (GMT) Casablanca, Monrovia public static string GreenwichStandardTime; /// (GMT-10:00) Hawaii public static string HawaiianStandardTime; /// (GMT+05:30) Chennai, Kolkata, Mumbai, New Delhi public static string IndiaStandardTime; /// (GMT+03:30) Tehran public static string IranStandardTime; /// (GMT+02:00) Jerusalem public static string IsraelStandardTime; /// (GMT+09:00) Seoul public static string KoreaStandardTime; /// (GMT-02:00) Mid-Atlantic public static string MidAtlanticStandardTime; /// (GMT-07:00) Mountain Time (US and Canada) public static string MountainStandardTime; /// (GMT+06:30) Yangon Rangoon public static string MyanmarStandardTime; /// (GMT+06:00) Almaty, Novosibirsk public static string NCentralAsiaStandardTime; /// (GMT+05:45) Kathmandu public static string NepalStandardTime; /// (GMT+12:00) Auckland, Wellington public static string NewZealandStandardTime; /// (GMT+08:00) Irkutsk, Ulaanbaatar public static string NorthAsiaEastStandardTime; /// (GMT+07:00) Krasnoyarsk public static string NorthAsiaStandardTime; /// (GMT-08:00) Pacific Time (US and Canada); Tijuana public static string PacificStandardTime; /// (GMT+01:00) Brussels, Copenhagen, Madrid, Paris public static string RomanceStandardTime; /// (GMT+03:00) Moscow, St. Petersburg, Volgograd public static string RussianStandardTime; /// (GMT-11:00) Midway Island, Samoa public static string SamoaStandardTime; /// (GMT+08:00) Kuala Lumpur, Singapore public static string SingaporeStandardTime; /// (GMT+02:00) Harare, Pretoria public static string SouthAfricaStandardTime; /// (GMT+06:00) Sri Jayawardenepura public static string SriLankaStandardTime; /// (GMT+08:00) Taipei public static string TaipeiStandardTime; /// (GMT+10:00) Hobart public static string TasmaniaStandardTime; /// (GMT+09:00) Osaka, Sapporo, Tokyo public static string TokyoStandardTime; /// (GMT+13:00) Nuku'alofa public static string TongaStandardTime; /// Coordinated Universal Time public static string UTC; /// (GMT+10:00) Vladivostok public static string VladivostokStandardTime; /// (GMT+08:00) Perth public static string WAustraliaStandardTime; /// (GMT+01:00) West Central Africa public static string WCentralAfricaStandardTime; /// (GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna public static string WEuropeStandardTime; /// (GMT+05:00) Islamabad, Karachi, Tashkent public static string WestAsiaStandardTime; /// (GMT+10:00) Guam, Port Moresby public static string WestPacificStandardTime; /// (GMT+09:00) Yakutsk public static string YakutskStandardTime; } /// Schedules execution of virtual OnTimer method with specified interval. public interface Timer { /// Starts the Timer void Start(TimeSpan interval); /// Starts the Timer void Start(int intervalInSeconds); /// Stops the Timer void Stop(); /// Gets the interval of timer. Returns -1 millisecond if the timer is stopped TimeSpan Interval {get;} /// Occurs when the interval elapses event Action TimerTick; } /// Represents the Toggle button. public class ToggleButton : Control { /// Initializes a new instance of the Toggle button class. public ToggleButton(); /// Gets or sets the border line color. public Color BorderColor {get; set;} /// Gets or sets the border thickness. Property value can be set using Thickness, number, or a string new Thickness(5), new Thickness(1, 2, 3, 4), 5, "5", "1 2 3 4". public Thickness BorderThickness {get; set;} /// Gets or sets the content. public ControlBase Content {get; set;} /// Gets or sets the border corner radius. Property value can be set using CornerRadius, number, or a string: new CornerRadius(5), new CornerRadius(1, 2, 3, 4). public CornerRadius CornerRadius {get; set;} /// Defines whether the Toggle button is checked. public bool IsChecked {get; set;} /// Gets or sets the text. public string Text {get; set;} /// Occurs when checked. public event Action Checked; /// Occurs when clicked. public event Action Click; /// Occurs when unchecked. public event Action Unchecked; } /// Represents the toggle button event class. public class ToggleButtonEventArgs { /// Gets the toggle button data. public ToggleButton ToggleButton {get;} } /// Provides access to the properties describing an asynchronous trade operation. public sealed class TradeOperation { /// True if a trade operation is being executed, false if it completed public bool IsExecuting {get;} /// The result of a trade operation public TradeResult TradeResult {get;} } /// The result of a trade operation. public sealed class TradeResult { /// The error code of an unsuccessful trade. public ErrorCode? Error {get;} /// True if the trade is successful, false if there is an error. public bool IsSuccessful {get;} /// The resulting pending order of a trade request. public PendingOrder PendingOrder {get;} /// The resulting position of a trade request. public Position Position {get;} } /// The direction of a trade order. public enum TradeType { /// Represents a Buy order. Buy, /// Represents a Sell order. Sell, } /// Represents the trade watch panel. public interface TradeWatch { /// Adds a new tab. TradeWatchTab AddTab(string title); /// Removes a tab by ID. bool RemoveTab(string id); /// Removes a tab. bool RemoveTab(TradeWatchTab tab); /// Get / set height of trade watch. double Height {get; set;} /// Get / set visibility of trade watch. bool IsVisible {get; set;} /// Get / set width of trade watch. double Width {get;} /// Occurs after trade watch visibility (IsVisible) changed. event Action IsVisibleChanged; /// Occurs after trade watch size (height / width) changed. event Action SizeChanged; } /// Provides data for plugin trade watch IsVisibleChanged event. public class TradeWatchIsVisibleChangedEventArgs { /// Trade watch. public TradeWatch TradeWatch {get;} } /// Provides data for plugin trade watch SizeChanged event. public class TradeWatchSizeChangedEventArgs { /// Trade watch. public TradeWatch TradeWatch {get;} } /// Represents a trade watch panel tab. public interface TradeWatchTab { /// Attaches current tab back to trade watch. bool Attach(); /// Detaches current tab to a separate window. bool Detach(); /// Get / set content of current tab. ControlBase Child {get; set;} /// Returns detached window properties. DetachedWindow DetachedWindow {get;} /// Returns current height of tab. double Height {get;} /// Returns unique ID of the current tab. string Id {get;} /// Get / set the index of the tab. int Index {get; set;} /// Get / set the visibility of balance bar for the tab. bool IsBalanceBarVisible {get; set;} /// Get / set selected state of current tab. bool IsSelected {get; set;} /// Returns title of the current tab. string Title {get;} /// Returns current width of tab. double Width {get;} /// Occurs when tab attached. event Action Attached; /// Occurs when tab detached. event Action Detached; /// Occurs after tab IsSelected value change. event Action IsSelectedChanged; /// Occurs after tab size (height / width) value change. event Action SizeChanged; } /// Provides data for plugin trade watch tab attached event. public class TradeWatchTabAttachedEventArgs { /// Attached tab. public TradeWatchTab TradeWatchTab {get;} } /// Provides data for plugin trade watch tab detached event. public class TradeWatchTabDetachedEventArgs { /// Detached tab. public TradeWatchTab TradeWatchTab {get;} } /// Provides data for plugin trade watch tab IsSelectedChanged event. public class TradeWatchTabIsSelectedChangedEventArgs { /// Trade watch tab. public TradeWatchTab TradeWatchTab {get;} } /// Provides data for plugin trade watch tab SizeChanged event. public class TradeWatchTabSizeChangedEventArgs { /// Trade watch tab. public TradeWatchTab TradeWatchTab {get;} } /// Represents a symbol trading holiday. public interface TradingHoliday { /// Gets the end date and time of the trading holiday. DateTime EndTime {get;} /// Gets a value indicating whether the trading holiday is recurring. bool IsRecurring {get;} /// Gets the name of the trading holiday. string Name {get;} /// Gets the start date and time of the trading holiday. DateTime StartTime {get;} } /// Trading Permission public interface TradingPermission { } /// Represents an account transaction. public interface Transaction { /// Gets transaction amount. double Amount {get;} /// Gets account balance after transaction. double Balance {get;} /// Gets account equity after transaction or null. double? Equity {get;} /// Gets transaction Id. long Id {get;} /// Gets account max equity after transaction or null. double? MaxEquity {get;} /// Gets account min equity after transaction or null. double? MinEquity {get;} /// Gets transaction note if has otherwise null. string Note {get;} /// Gets transaction time. DateTime Time {get;} /// Gets transaction type. TransactionType Type {get;} } /// Represents the different types of account transactions. public enum TransactionType { /// Represents a deposit transaction. Deposit, /// Represents a withdrawal transaction. Withdrawal, } /// Represents account transactions collection. public interface Transactions { /// Gets count of transactions. int Count {get;} /// Gets transaction by index. Transaction Item {get;} } /// Represents the user time offset change event data. public class UserTimeOffsetChangedEventArgs { /// Gets the user time offset. public TimeSpan UserTimeOffset {get;} } /// Describes vertical position related to an anchor point or a parent element. public enum VerticalAlignment { /// Center vertical alignment. Center, /// Top vertical alignment. Top, /// Bottom vertical alignment. Bottom, /// Stretch vertical alignment. Stretch, } /// Represents the Watchlist interface. public interface Watchlist { /// Gets the watchlist name. string Name {get;} /// Gets the names of the symbols in the watchlist. IReadonlyList SymbolNames {get;} } /// Occurs when a new watchlist is added. public class WatchlistAddedEventArgs { /// Gets the watchlist. public Watchlist Watchlist {get;} } /// Occurs when a watchlist is removed from the marketwatch. public class WatchlistRemovedEventArgs { /// Gets the watchlist. public Watchlist Watchlist {get;} } /// Occurs when the watchlist is renamed. public class WatchlistRenamedEventArgs { /// Gets the watchlist. public Watchlist Watchlist {get;} } /// Occurs when a new symbol is added to the watchlist. public class WatchlistSymbolAddedEventArgs { /// Gets the symbol name. public string SymbolName {get;} /// Gets the watchlist. public Watchlist Watchlist {get;} } /// Occurs when the symbol is removed from the watchlist. public class WatchlistSymbolRemovedEventArgs { /// Gets the symbol name. public string SymbolName {get;} /// Gets the watchlist. public Watchlist Watchlist {get;} } /// Represents the Watchlists interface - allows getting all the watchlists and symbols in them, and receiving the relevant events. public interface Watchlists { /// Gets the desired Watchlist. Watchlist Item {get;} /// Occurs when a new watchlist is added. event Action Added; /// Occurs when a watchlist is removed. event Action Removed; /// Occurs when the name of the watchlist is changed. event Action WatchlistRenamed; /// Occurs when a new symbol is added to the watchlist. event Action WatchlistSymbolAdded; /// Occurs when a symbol is removed from the watchlist. event Action WatchlistSymbolRemoved; } /// Represents a web socket client. public class WebSocketClient { /// Creates a WebSocketClient with default options. public WebSocketClient(); /// Creates a WebSocketClient with passed options. public WebSocketClient(WebSocketClientOptions options); /// Disconnects WebSocketClient. public void Close(WebSocketClientCloseStatus closeStatus, string closeStatusDescription); /// Connects WebSocketClient to passed URI. public void Connect(Uri uri); /// Releases the unmanaged resources used by the WebSocketClient instance. public void Dispose(); /// Sends passed text. public void Send(string text); /// Sends passed binary data. public void Send(byte[] data); /// Gets close status / reason. public WebSocketClientCloseStatus? CloseStatus {get;} /// Gets a description of the reason why the instance was closed. public string CloseStatusDescription {get;} /// Gets current state of WebSocketClient instance. public WebSocketClientState State {get;} /// Occurs when WebSocketClient receives binary data. public event Action BinaryReceived; /// Occurs when WebSocketClient is connected. public event Action Connected; /// Occurs when WebSocketClient is disconnected. public event Action Disconnected; /// Occurs when WebSocketClient receives text data. public event Action TextReceived; } /// Provides data for WebSocketClient binary data received event. public class WebSocketClientBinaryReceivedEventArgs { /// Websocket client instance. public WebSocketClient Client {get;} /// Received data. public byte[] Data {get;} } /// An enumeration of different Web socket client close states / reasons. public enum WebSocketClientCloseStatus { /// No error specified. Empty, /// (1001) Indicates an endpoint is being removed. Either the server or client will become unavailable. EndpointUnavailable, /// (1011) The connection will be closed by the server because of an error on the server. InternalServerError, /// (1003) The client or server is terminating the connection because it cannot accept the data type it received. InvalidMessageType, /// (1007) The client or server is terminating the connection because it has received data inconsistent with the message type. InvalidPayloadData, /// (1010) The client is terminating the connection because it expected the server to negotiate an extension. MandatoryExtension, /// (1009) The client or server is terminating the connection because it has received a message that is too big for it to process. MessageTooBig, /// (1000) The connection has closed after the request was fulfilled. NormalClosure, /// (1008) The connection will be closed because an endpoint has received a message that violates its policy. PolicyViolation, /// (1008) The client or server is terminating the connection because of a protocol error. ProtocolError, } /// Provides data for Websocket client connected event. public class WebSocketClientConnectedEventArgs { /// Connected websocket client instance. public WebSocketClient Client {get;} } /// Provides data for Websocket client disconnected event. public class WebSocketClientDisconnectEventArgs { /// Disconnected websocket client instance. public WebSocketClient Client {get;} } /// Websocket client options. public class WebSocketClientOptions { /// Creates WebSocketClientOptions with default values. public WebSocketClientOptions(); /// Gets or sets the WebSocket protocol keep-alive interval. Default value is set to 30 seconds. public TimeSpan KeepAliveInterval {get; set;} /// Gets or sets sub-protocols to be negotiated during the WebSocket connection handshake. public IEnumerable SubProtocols {get; set;} /// Gets or sets the operation timeout. Default value is set to 60 seconds. public TimeSpan Timeout {get; set;} /// Gets or sets a Boolean value that indicates if default credentials should be used during WebSocket handshake. Default value is false. public bool UseDefaultCredentials {get; set;} } /// An enumeration of different Web socket client states. public enum WebSocketClientState { /// Reserved for future use. None, /// The connection is negotiating the handshake with the remote endpoint. Connecting, /// The initial state after the HTTP handshake has been completed. Open, /// A close message was sent to the remote endpoint. CloseSent, /// A close message was received from the remote endpoint. CloseReceived, /// Indicates the WebSocket close handshake completed gracefully. Closed, /// Indicates that the WebSocket has been aborted. Aborted, } /// Provides data for WebSocketClient text data received event. public class WebSocketClientTextReceivedEventArgs { /// Websocket client instance. public WebSocketClient Client {get;} /// Received text. public string Text {get;} } /// Represents the web view control. public class WebView : ControlBase { /// Initializes a new instance of the WebView class. public WebView(); /// Executes JavaScript code from the javaScript parameter in the current top level document rendered in the WebView and returns the result. You can only use this method after control is fully loaded and navigation is completed. public ExecuteScriptResult ExecuteScript(string javaScript); /// Executes JavaScript code from the javaScript parameter in the current top level document rendered in the WebView. You can only use this method after control is fully loaded and navigation is completed. public void ExecuteScriptAsync(string javaScript); /// Executes asynchronously JavaScript code from the javaScript parameter in the current top level document rendered in the WebView. You can only use this method after control is fully loaded and navigation is completed. public void ExecuteScriptAsync(string javaScript, Action callback); /// Navigates asynchronously the WebView to the previous page in the navigation history. public void GoBackAsync(); /// Navigates asynchronously the WebView to the next page in the navigation history. public void GoForwardAsync(); /// Navigate asynchronously to another URL. public void NavigateAsync(string url); /// Initiates a navigation asynchronously to html content as source HTML of a new document. public void NavigateToStringAsync(string html); /// Opens the DevTools window for the current WebView. public void OpenDevToolsWindow(); /// Reloads asynchronously the current page. public void ReloadAsync(); /// Stops asynchronously all navigations and pending resource fetches. public void StopAsync(); /// Default background color of WebView. public Color DefaultBackgroundColor {get; set;} /// Returns True if WebView is loaded otherwise False. public bool IsLoaded {get;} /// Occurs after web view is loaded public event Action Loaded; /// Occurs when navigation of a page is completed. public event Action NavigationCompleted; /// Occurs after web view is unloaded public event Action Unloaded; /// Occurs after web content sends a message public event Action WebMessageReceived; } /// Provides data for the WebView control Loaded event. public class WebViewLoadedEventArgs { /// The WebView control. public WebView WebView {get;} } /// Provides data for the WebView control NavigationCompleted event. public class WebViewNavigationCompletedEventArgs { /// Response HTTP status code. public int HttpStatusCode {get;} /// True if navigation was successful otherwise false. public bool IsSuccessful {get;} /// URL from WebView Source property at the moment of NavigationCompleted in big process. public string Url {get;} /// The WebView control. public WebView WebView {get;} } /// Provides data for the WebView control Unloaded event. public class WebViewUnloadedEventArgs { /// The WebView control. public WebView WebView {get;} } /// Provides data for the WebView control WebMessageReceived event. public class WebViewWebMessageReceivedEventArgs { /// The message that was received. public string Message {get;} /// Gets the URI of the document that sent this web message. public string Source {get;} /// WebView Control. public WebView WebView {get;} } /// The window class, you can use it to show a window that can contain other chart controls public sealed class Window { /// Creates an empty window with default settings public Window(); /// Closes the window public void Close(); /// Hides the window public void Hide(); /// Shows the window public void Show(); /// Get / Set the window background color public Color BackgroundColor {get; set;} /// Get / Set the main content control of window public ControlBase Child {get; set;} /// Get / Set height of the Window public double Height {get; set;} /// Get / Set the window active / de-active flag, if Yes then the window will be active public bool IsActive {get;} /// Get / Set the window visibility flag, if Yes then the window will be shown otherwise it will be hidden public bool IsVisible {get;} /// Get / Set window left margin (X) public double Left {get; set;} /// Get / Set the window maximum height public double MaxHeight {get; set;} /// Get / Set the window maximum width public double MaxWidth {get; set;} /// Get / Set the window minimum height public double MinHeight {get; set;} /// Get / Set the window minimum width public double MinWidth {get; set;} /// Get / Set the window owner public OwnerType OwnerType {get; set;} /// Get / Set the window padding public Thickness Padding {get; set;} /// Get / Set the window resize mode public ResizeMode ResizeMode {get; set;} /// Get / Set the window title public string Title {get; set;} /// Get / Set window top margin (Y) public double Top {get; set;} /// Get / Set the window topmost flag, if True then the window will appear on top of all other windows public bool Topmost {get; set;} /// Get / Set width of the window public double Width {get; set;} /// Get / Set the window startup location public WindowStartupLocation WindowStartupLocation {get; set;} /// Get / Set the window state public WindowState WindowState {get; set;} /// This event gets triggered when window is activated public event Action Activated; /// This event gets triggered when window is closed public event Action Closed; /// This event gets triggered when window is deactivated public event Action Deactivated; /// This event gets triggered when window visibility changes public event Action IsVisibleChanged; /// This event gets triggered when window location changes public event Action LocationChanged; /// This event gets triggered when window is size changes public event Action SizeChanged; } /// Provides data for WindowActivated event handlers public class WindowActivatedEventArgs { /// The Window that got activated public Window Window {get;} } /// Provides data for WindowClosed event handlers public class WindowClosedEventArgs { /// The window the got closed public Window Window {get;} } /// Provides data for WindowDeactivated event handlers public class WindowDeactivatedEventArgs { /// The window that got deactivated public Window Window {get;} } /// Provides data for WindowIsVisibleChanged event handlers public class WindowIsVisibleChangedEventArgs { /// The value of window IsVisible property after got changed public bool NewValue {get;} /// The value of window IsVisible property before got changed public bool OldValue {get;} /// The window which it is IsVisible property got changed public Window Window {get;} } /// Provides data for WindowLocationChanged event handlers public class WindowLocationChangedEventArgs { /// The window which it is location changed public Window Window {get;} } /// Provides data for WindowSizeChanged event handlers public class WindowSizeChangedEventArgs { /// The window which it is size changed public Window Window {get;} } /// Types of startup locations that you can use for windows public enum WindowStartupLocation { /// Default window startup location value. The startup location of a Window is set from code, or defers to the default Windows location. Manual, /// Window is placed at the center of the screen. CenterScreen, /// Window is placed at the center of it is owner. CenterOwner, } /// Types of states for windows public enum WindowState { /// The default state of window Normal, /// Window is minimized to the task bar Minimized, /// Window is maximized Maximized, } /// Positions the child elements in sequential position from left to right, breaking content to the next line at the end of the containing box, from top to bottom, or from right to left. public class WrapPanel : Panel { /// Initializes a new instance of the WrapPanel class. public WrapPanel(); /// Gets or sets the height of the item. public double ItemHeight {get; set;} /// Gets or sets the width of the item. public double ItemWidth {get; set;} /// Gets or sets the orientation of the child element. public Orientation Orientation {get; set;} } } namespace cAlgo.API.Collections { /// Represents a read only collection of a specified type public interface IReadonlyList { /// The total number of elements contained in the collection int Count {get;} /// Represents the item contained in the collection at a specific index T Item {get;} } } namespace cAlgo.API.Indicators { /// Identifies possible trend reversals public interface AcceleratorOscillator { /// AcceleratorOscillator calculation result IndicatorDataSeries Result {get;} } /// Accumulation Distribution indicator is an indicator that can identify if the market is driven by buyers (accumulation) or by sellers (distribution) public interface AccumulationDistribution { /// Gets the resulting time series of the Accumulation Distribution indicator calculation. IndicatorDataSeries Result {get;} } /// A variation on Wilder's swing index which plots an accumulation of the swing index value of each candlestick or bar. public interface AccumulativeSwingIndex { /// The time series of AccumulativeSwingIndex. IndicatorDataSeries Result {get;} } /// Legendary trader Bill Williams, an early pioneer of market psychology, developed the trend-following Alligator indicator, which follows the premise that financial markets and individual securities trend just 15% to 30% of the time while grinding through sideways ranges the other 70% to 85% of the time. public interface Alligator { /// The jaw is the x-period (13) smoothed moving average that is moved into the future by x (18) bars. IndicatorDataSeries Jaws {get; set;} /// The lips is the x-period (5) smoothed moving average that is moved by x (3) bars into the future IndicatorDataSeries Lips {get; set;} /// The teeth is the x-period (8) smoothed moving average that is moved x (5) bars into the future. IndicatorDataSeries Teeth {get; set;} } /// An indicator for identifying trends in a currency pair, as well as for gauging the probability of a trend reversal. public interface Aroon { /// Aroon Down IndicatorDataSeries Down {get;} /// Aroon Up IndicatorDataSeries Up {get;} } /// The Average Directional Movement Index Rating (ADXR) measures the strength of the Average Directional Movement Index (ADX). It's calculated by taking the average of the current ADX and the ADX from one time period before. public interface AverageDirectionalMovementIndexRating { /// The Average Directional Movement Index (ADX) indicates whether the market is trending or ranging. IndicatorDataSeries ADX {get; set;} /// The rating of Average Directional Movement Index (ADX) IndicatorDataSeries ADXR {get; set;} /// The Positive Direction Indicator (+DI) indicates upward trend movement. IndicatorDataSeries DIMinus {get; set;} /// The Negative Direction Indicator (-DI) indicates downward trend movement. IndicatorDataSeries DIPlus {get; set;} } /// Average true range. An indicator providing the degree of price volatility. public interface AverageTrueRange { /// The resulting data series of Average True Range Indicator instance IndicatorDataSeries Result {get; set;} } /// Displays the market momentum as a histogram. public interface AwesomeOscillator { /// Gets the Awesome Oscillator calculation result. IndicatorDataSeries Result {get;} } /// The calculation of the Bears Power. public interface BearsPower { /// The histogram (bar graph). It shows the maximum bearish strength during the time period. IndicatorDataSeries Result {get;} } /// Bollinger Bands are used to confirm signals. The bands indicate overbought and oversold levels relative to a moving average. public interface BollingerBands { /// Lower Bollinger Band. IndicatorDataSeries Bottom {get;} /// Moving Average (Middle Bollinger Band). IndicatorDataSeries Main {get;} /// Upper Bollinger Band. IndicatorDataSeries Top {get;} } /// The calculation of the Bulls Power. public interface BullsPower { /// The histogram (bar graph). It shows the maximum bullish strength during the time period. IndicatorDataSeries Result {get;} } /// The Center of Gravity (COG) indicator is a technical indicator developed by John Ehlers in 2002, used to identify potential turning points in the price as early as possible. public interface CenterOfGravity { /// The lag/signal/trigger line of COG IndicatorDataSeries Lag {get; set;} /// The COG line, by using it you can identify the support and resistance levels and have a more or less clear idea when the price starts moving in a different direction. IndicatorDataSeries Result {get; set;} } /// The Chaikin Money Flow Indicator measures the amount of Money Flow Volume over a specific period. The resulting indicator fluctuates above/below the zero line. public interface ChaikinMoneyFlow { /// The time series of the Chaikin Money Flow Indicator. IndicatorDataSeries Result {get; set;} } /// The Chaikin Oscillator Indicator interface. public interface ChaikinOscillator { /// The resulting time series of Chaikin Oscillator calculation. IndicatorDataSeries Result {get;} } /// The Chaikin Volatility Indicator interface. public interface ChaikinVolatility { /// Chaikin Volatility Result Series. IndicatorDataSeries Result {get;} } /// The calculation of the Chande Momentum Oscillator indicator. public interface ChandeMomentumOscillator { /// Gets the resulting series of the Chande Momentum Oscillator indicator calculation. IndicatorDataSeries Result {get;} } /// The Commodity Channel Index interface. public interface CommodityChannelIndex { /// Commodity Channel Index Result Series. IndicatorDataSeries Result {get;} } /// The Cyber Cycles Oscillator is an indicator designed by John Ehlers, it is used for isolating the cycle component of the market from its trend counterpart. public interface CyberCycle { /// The Cyber Cycles Oscillator plot. IndicatorDataSeries Cycle {get; set;} /// The CCO plot shifted one bar back; crossovers of the two plots suggest Buy/Sell signals. IndicatorDataSeries Trigger {get; set;} } /// The DeMarker is an oscillator that compares the most recent maximum and minimum prices to the previous period's equivalent price. public interface DeMarker { /// Gets the resulting time series of the DeMarker calculation. IndicatorDataSeries Result {get;} } /// The Detrended Price Oscillator Indicator interface. public interface DetrendedPriceOscillator { /// The resulting time series of Detrended Price Oscillator calculation. IndicatorDataSeries Result {get;} } /// The Welles Wilder's Directional Movement Indicator calculation. public interface DirectionalMovementSystem { /// The Average Directional Movement Index (ADX) indicates whether the market is trending or ranging. IndicatorDataSeries ADX {get;} /// The Negative Direction Indicator (-DI) indicates downward trend movement. IndicatorDataSeries DIMinus {get;} /// The Positive Direction Indicator (+DI) indicates upward trend movement. IndicatorDataSeries DIPlus {get;} } /// The Donchian channel is a volatility indicator forming a channel between the highest high and the lowest low of the chosen period. public interface DonchianChannel { /// Gets or sets the lowest low of the period. IndicatorDataSeries Bottom {get; set;} /// Gets or sets the middle of the highest high and the lowest low of the period. IndicatorDataSeries Middle {get; set;} /// Gets or sets the highest high of the period. IndicatorDataSeries Top {get; set;} } /// The Double Exponential Moving Average (DEMA) is a combination of smoothed exponential moving averages (EMA) and a basic EMA public interface DoubleExponentialMovingAverage { } /// Ease of Movement is a volume based oscillator that measures the "ease" of price movement. public interface EaseOfMovement { /// The time series of the Ease Of Movement Indicator. IndicatorDataSeries Result {get; set;} } /// The calculation of the Elder's Force Index. public interface ElderForceIndex { /// Alexander Elder's force index is a technical indicator that measures the amount of power used to move the price of an asset. IndicatorDataSeries Result {get;} } /// The calculation of the Elder Ray Index. public interface ElderRayIndex { /// The histogram (bar graph). It shows the maximum bearish strength during the time period. IndicatorDataSeries BearsPower {get;} /// The histogram (bar graph). It shows the maximum bullish strength during the time period. IndicatorDataSeries BullsPower {get;} } /// The Envelopes indicator is used to visualize potential trading ranges and overbought/oversold conditions. public interface Envelopes { /// The lower line of the Envelopes. IndicatorDataSeries Lower {get;} /// The main line of the Envelopes. IndicatorDataSeries Main {get;} /// The upper line of the Envelopes. IndicatorDataSeries Upper {get;} } /// The exponential moving average of the price data source over a period of time. public interface ExponentialMovingAverage { } /// The FRAMA (Fractal Adaptive Moving Average) indicator is a type of moving average that adjusts its sensitivity to price movements based on market volatility public interface FractalAdaptiveMovingAverage { } /// The Fractal Chaos Bands indicator attempts to determine whether or not the market is trending. public interface FractalChaosBands { /// The high limit of the chaos band. IndicatorDataSeries High {get;} /// The low limit of the chaos band. IndicatorDataSeries Low {get;} } /// The fractal indicator is a trading indicator used in technical analysis that is used to identify potential trend reversal points in a market. public interface Fractals { /// The down fractals plot/output IndicatorDataSeries DownFractal {get; set;} /// The up fractals plot/output IndicatorDataSeries UpFractal {get; set;} } /// The calculation of the Gator Oscillator. public interface GatorOscillator { /// The histogram (bar graph). The difference between the Alligator's teeth and lips. IndicatorDataSeries Lower {get;} /// The histogram (bar graph). The difference between the Alligator's jaws and teeth. IndicatorDataSeries Upper {get;} } /// Difference between Bars.HighPrices and Bars.LowPrices calculation for each index public interface HighMinusLow { /// The resulting time series of the calculation. IndicatorDataSeries Result {get;} } /// The measured price fluctuation over a specified time period. public interface HistoricalVolatility { /// The result of the HistoricalVolatility Indicator IndicatorDataSeries Result {get;} } /// The Hull Moving Average (HMA) is a directional trend indicator. It captures the current state of the market and uses recent price action to determine if conditions are bullish or bearish relative to historical data. public interface HullMovingAverage { } /// Ichimoku Kinko Hyo Indicator. public interface IchimokuKinkoHyo { /// It is used as a support-resistance aid. IndicatorDataSeries ChikouSpan {get; set;} /// This is a confirmation line, a support-resistance line, and can be used as a trailing stop line. IndicatorDataSeries KijunSen {get; set;} /// Leading span 1, this line forms one edge of the kumo, or cloud. If the price is above the Senkou span, the top line serves as the first support level while the bottom line serves as the second support level. IndicatorDataSeries SenkouSpanA {get; set;} /// Leading span 2, this line forms the other edge of the kumo. IndicatorDataSeries SenkouSpanB {get; set;} /// It is primarily used as a signal line and a minor support-resistance line. IndicatorDataSeries TenkanSen {get; set;} } /// The Kaufman's Adaptive Moving Average (KAMA) indicator is a type of adaptive moving average designed to adjust its smoothing factor based on market volatility public interface KaufmanAdaptiveMovingAverage { } /// The Keltner Channels are volatility-based envelopes set above and below an exponential moving average. public interface KeltnerChannels { /// Moving Average - ATR * BandDistance IndicatorDataSeries Bottom {get;} /// Moving Average Line IndicatorDataSeries Main {get;} /// Moving Average + ATR * BandDistance IndicatorDataSeries Top {get;} } /// Linear Regression Forecast is one of the indicators calculated by the Linear Regression approach. public interface LinearRegressionForecast { /// The Result Series of the Linear Regression Forecast Indicator IndicatorDataSeries Result {get;} } /// Linear Regression Intercept is one of the indicators calculated by the Linear Regression approach. public interface LinearRegressionIntercept { /// The Result Series of the Linear Regression Intercept Indicator IndicatorDataSeries Result {get;} } /// The Linear Regression R Squared is used to confirm the strength of the market trend. public interface LinearRegressionRSquared { /// The Result Series of the Linear Regression R Squared indicator. IndicatorDataSeries Result {get;} } /// The calculation of the Linear Regression Slope Indicator. public interface LinearRegressionSlope { /// The resulting time series of the calculation of the Linear Regression Slope indicator. IndicatorDataSeries Result {get;} } /// Calculates the MACD (Moving Average Convergence/Divergence) indicator. public interface MacdCrossOver { /// Gets the Histogram (bar graph). IndicatorDataSeries Histogram {get;} /// Gets the main MACD line (blue line). IndicatorDataSeries MACD {get;} /// Gets the Signal line of MACD (red line). IndicatorDataSeries Signal {get;} } /// The calculation of the MACD Histogram. public interface MacdHistogram { /// The histogram (bar graph). The difference between the short and long cycles. IndicatorDataSeries Histogram {get;} /// The signal (red line). The exponential moving average of the MACD histogram. IndicatorDataSeries Signal {get;} } /// The calculation of the Oscillator of a Moving Average over MACD. public interface MacdOscillatorMovingAverage { } /// The calculation of the Market Facilitation Index. public interface MarketFacilitationIndex { /// Gets the resulting series of the Market Facilitation Index calculation. IndicatorDataSeries Result {get;} } /// The Mass Index Indicator interface. public interface MassIndex { /// Gets the resulting series of the calculation of the Mass Index indicator. IndicatorDataSeries Result {get;} } /// A Median Price is an average of one period’s high and low values. public interface MedianPrice { /// The resulting series of the calculation of Median Price IndicatorDataSeries Result {get;} } /// The calculation of the Momentum Oscillator indicator. public interface MomentumOscillator { /// Gets the resulting series of the Momentum Oscillator indicator calculation. IndicatorDataSeries Result {get;} } /// The Money Flow Index is an oscillator that calculates buying and selling pressure using typical price and volume. It oscillates between zero and one hundred. It is typically used to identify trend reversals and price extremes. public interface MoneyFlowIndex { /// The time series of the Money Flow Index indicator. IndicatorDataSeries Result {get; set;} } /// The Moving Average Indicator calculation. public interface MovingAverage { /// The resulting time series of the calculation. IndicatorDataSeries Result {get;} } /// Dysart's Negative Volume Index assumes that the smart money is active on days when volume decreases and the not-so-smart money is active on days when volume increases (measured by the Positive Volume Index). public interface NegativeVolumeIndex { /// The time series of the Negative Volume Index indicator. IndicatorDataSeries Result {get; set;} } /// On Balance Volume measures buying and selling pressure as a cumulative indicator that adds volume on up days and subtracts volume on down days. public interface OnBalanceVolume { /// Gets or sets the time series of the On Balance Volume indicator. IndicatorDataSeries Result {get; set;} } /// The calculation of the Oscillator of a Moving Average. public interface OscillatorMovingAverage { /// The Oscillator of a Moving Average is a technical indicator that shows the difference between an oscillator and its moving average over a given period of time. IndicatorDataSeries Histogram {get;} } /// The calculation of the Parabolic SAR Indicator. public interface ParabolicSAR { /// Gets the resulting series of the Parabolic SAR indicator. IndicatorDataSeries Result {get;} } /// Polynomial Regression Channel (PRC) is an RTX Extension indicator that draws a best fit n-degree polynomial regression line through a recent period of data. public interface PolynomialRegressionChannels { /// Get the Polynomial Regression Channels Prc data series IndicatorDataSeries Prc {get; set;} /// Get the Polynomial Regression Channels Sqh data series IndicatorDataSeries Sqh {get; set;} /// Get the Polynomial Regression Channels Sqh2 data series IndicatorDataSeries Sqh2 {get; set;} /// Get the Polynomial Regression Channels Sql data series IndicatorDataSeries Sql {get; set;} /// Get the Polynomial Regression Channels Sql2 data series IndicatorDataSeries Sql2 {get; set;} } /// The positive volume index measures the trend of the stock prices for days when volume increases from previous day's volume. public interface PositiveVolumeIndex { /// Gets or sets the time series result of the Positive Volume Index indicator instance. IndicatorDataSeries Result {get; set;} } /// The Price Oscillator calculates the spread between a short-period moving average and a long-period moving average. public interface PriceOscillator { /// Gets the resulting time series of the Price Oscillator indicator calculation. IndicatorDataSeries Result {get;} } /// The Price ROC calculates the percentage change between the most recent price and the n-periods of the past price. public interface PriceROC { /// Gets the resulting time series of the Price ROC indicator calculation. IndicatorDataSeries Result {get;} } /// Price and Volume Trend is a variation of On Balance Volume, used to determine the strength of trends and warn of reversals. public interface PriceVolumeTrend { /// Gets or sets the time series of the Price Volume Trend indicator. IndicatorDataSeries Result {get; set;} } /// Developed by Mel Widner, Rainbow Oscillator is based on multiple moving averages and helps to identify trends and provides overbought/oversold levels. public interface RainbowOscillator { /// Gets the resulting time series of the Rainbow Oscillator indicator calculation. IndicatorDataSeries Result {get;} } /// The RSI (Wilder) is momentum oscillator, measuring the velocity and magnitude of directional price movements. public interface RelativeStrengthIndex { /// Gets the resulting time series of the Relative Strength Index indicator calculation. IndicatorDataSeries Result {get;} } /// The RVI is a momentum oscillator, measuring the strength of a trend. public interface RelativeVigorIndex { /// Gets the resulting time series of the Relative Vigor Index calculation (blue line). IndicatorDataSeries Result {get;} /// Gets the Signal line of RVI (red line). IndicatorDataSeries Signal {get;} } /// The simple moving average is an average of price within n previous periods. public interface SimpleMovingAverage { } /// Standard Deviation measures the market volatility with a commonly used statisctical function. public interface StandardDeviation { /// Gets the resulting time series of the Standard Deviation indicator calculation. IndicatorDataSeries Result {get;} } /// The Stochastic Oscillator is a momentum indicator that aims to show price reversals by comparing the closing price to the price range. public interface StochasticOscillator { /// %D is 3 Period Exponential Moving Average of %K. IndicatorDataSeries PercentD {get;} /// Calculation of %K is 100 multiplied by the ratio of the closing price minus the lowest price over the last N periods over the highest price over the last N minus the lowest price over the last N periods. IndicatorDataSeries PercentK {get;} [Obsolete("Use PercentD property instead.")] IndicatorDataSeries PersentsD {get;} [Obsolete("Use PercentK property instead.")] IndicatorDataSeries PersentsK {get;} } /// Supertrend is one of the most popular trend trading indicators public interface Supertrend { /// Gets the Supertrend Down trend data series IndicatorDataSeries DownTrend {get; set;} /// Gets the Supertrend Up trend data series IndicatorDataSeries UpTrend {get; set;} } /// Developed by Welles Wilder, the Swing Index compares current Open, high, Low and Close prices to find of current and previous periods to find "real" price. public interface SwingIndex { /// Gets the Result Series of the Swing Index indicator. IndicatorDataSeries Result {get;} } /// The Tick Volume indicator shows number of ticks for each bar. public interface TickVolume { /// The resulting time series of the calculation. IndicatorDataSeries Result {get;} } /// A Time Series Moving Average is moving average based on linear regression forecast. public interface TimeSeriesMovingAverage { } /// Trade Volume Index measures the amount of money flowing in and out of an asset. public interface TradeVolumeIndex { /// Gets the time series of Trade Volume Index indicator. IndicatorDataSeries Result {get; set;} } /// The Triangular Moving Average is a moving average that gives more weith to values located in the middle of aggregated period. public interface TriangularMovingAverage { } /// The Triple Exponential Moving Average (TEMA) is a technical indicator that provides a smoothed representation of price data by applying three levels of exponential smoothing public interface TripleExponentialMovingAverage { } /// TRIX was developed by Jack Huton. It is a momentum oscillator that will help you filter unimportant price movement. public interface Trix { /// Gets the resulting time series of the Trix indicator calculation. IndicatorDataSeries Result {get;} } /// The Average True Range is a measure of market volatility developed by Wilder. public interface TrueRange { /// Gets the resulting time series of the True Range indicator calculation. IndicatorDataSeries Result {get;} } /// A Typical Price is an average of high, low and close values for a single period. public interface TypicalPrice { /// Gets the resulting time series of the Typical Price indicator calculation. IndicatorDataSeries Result {get;} } /// The Ultimate Oscillator is a technical analysis oscillator based on a notion of buying or selling "pressure". public interface UltimateOscillator { /// Gets the resulting time series of the Ultimate Oscillator indicator calculation. IndicatorDataSeries Result {get;} } /// The Variable Index Dynamic Average (VIDYA) indicator is a type of moving average that dynamically adjusts its smoothing period based on market volatility. public interface VariableIndexDynamicAverage { } /// Vertical Horizontal Filter determines whether a price is going through a congestion phase or a trending phase. public interface VerticalHorizontalFilter { /// Gets the resulting time series of the Vertical Horizontal Filter indicator calculation. IndicatorDataSeries Result {get;} } /// Volatility Index Dynamic Average (VIDYA) is a smoothing (moving average) based on dynamically changing periods. public interface Vidya { } /// The Volume Oscillator identifies trends in volume using a two moving average system. A strong trend is signaled when it is positive. Falling volume indicates trend weakness. public interface VolumeOscillator { /// Gets or sets the time series of the Volume Oscillator indicator. IndicatorDataSeries Result {get; set;} } /// The Volume Rate of Change indicator measures the Rate Of Change of the tick volume. public interface VolumeROC { /// Gets or sets the time series of the Volume ROC indicator. IndicatorDataSeries Result {get; set;} } /// Weighted Close is an average of high, low and close prices where close has greater weight. public interface WeightedClose { /// Gets the resulting time series of the Weighted Close indicator calculation. IndicatorDataSeries Result {get;} } /// The Weighted Moving Average is a moving average that gives more weith to the latest values. public interface WeightedMovingAverage { /// Gets the resulting time series of the Weighted Moving Average indicator calculation. IndicatorDataSeries Result {get;} } /// The Welles Wilder's Smoothing indicator is an exponential moving average, but it has different alpha ration. As a result it responds to price changes slower. public interface WellesWilderSmoothing { } /// William's Accumulation Distribution is an oscillator that can identify if the market is driven by buyers (accumulation) or by sellers (distribution) public interface WilliamsAccumulationDistribution { /// Gets the resulting time series of the Williams Accumulation Distribution indicator calculation. IndicatorDataSeries Result {get;} } /// Williams %R is an effective momentum oscillator and was described by Larry Williams for the first time in 1973. public interface WilliamsPctR { /// Gets the resulting time series of the Williams PctR indicator calculation. IndicatorDataSeries Result {get;} } } namespace cAlgo.API.Internals { /// Returns current account type public enum AccountType { /// Account type that allows hedged positions Hedged, /// Account type that allows only single net position per symbol Netted, } /// The container class for the main cAlgo.API Interfaces. public class Algo { /// Invokes asynchronously the specified code on the main cBot or Indicator thread. public void BeginInvokeOnMainThread(Action action); /// Initialization of an IndicatorDataSeries. public IndicatorDataSeries CreateDataSeries(); /// Called on each unhandled exception. protected internal void OnException(Exception exception); /// Called when the timer interval has elapsed. protected void OnTimer(); /// Prints text representation of the specified object to the log. public void Print(object value); /// Prints a message to the Log public void Print(object[] parameters); /// Prints a message to the Log. public void Print(string message, object[] parameters); /// Updates Bars, Positions, PendingOrders, History, etc. And sends postponed events after Thread sleep call. If you put the main thread on sleep by calling Thread sleep method then you have to call RefreshData after Thread wakes up to send the postponed events while thread was sleeping. public void RefreshData(); /// Suspends the algorithm until the specified timespan elapses. public void Sleep(TimeSpan timespan); /// Suspends the algorithm until the specified number of milliseconds elapses. public void Sleep(int milliseconds); /// Suspends the algorithm until the specified datetime . public void Sleep(DateTime dateTime); /// Provides access to installed Algorithms. public AlgoRegistry AlgoRegistry {get;} /// Represents the application. public Application Application {get;} /// Gets the symbol ask price. public double Ask {get;} /// Converts an asset to another asset. public IAssetConverter AssetConverter {get;} /// Returns list of all available assets. public Assets Assets {get;} /// The collection of Bar objects. public Bars Bars {get;} /// Gets the symbol bid price. public double Bid {get;} /// Represents the chart where cBot or Indicator is launched. public Chart Chart {get;} /// Gets the ChartIndicators of an algorithm. public ChartIndicators ChartIndicators {get;} /// Gets the ChartRobots of an algorithm. public ChartRobots ChartRobots {get;} /// Provides access to Chart Templates. public ChartTemplates ChartTemplates {get;} /// Provides access to system Clipboard. public Clipboard Clipboard {get;} /// Provides access to algo compiler. public Compiler Compiler {get;} /// Provides access to historical orders. public HistoricalOrders HistoricalOrders {get;} /// Represents the collection of all historical trades of the account. public History History {get;} /// Send HTTP requests. public Http Http {get;} /// Access to the built-in Indicators. public IIndicatorsAccessor Indicators {get;} /// Returns unique ID of current running instance. public string InstanceId {get;} /// Gets or sets instance title. public string InstanceTitle {get; set;} /// True if a cBot is in the Backtesting mode, otherwise False. public bool IsBacktesting {get;} /// Access the local storage API. public LocalStorage LocalStorage {get;} /// Provides access to the Depth of Market Data. public MarketData MarketData {get;} /// Returns current market sessions. public MarketSession MarketSessions {get;} /// Access the messaging API. public Messages Messages {get;} /// Represents the notifications, such as sounds and email. public INotifications Notifications {get;} /// The array of all Pending Orders of the account. public PendingOrders PendingOrders {get;} /// The list of all open positions of the account. public Positions Positions {get;} /// Provides access to Price Alerts. public PriceAlerts PriceAlerts {get;} /// Defines if a cBot is running in real time, in the silent backtesting mode, in the visual backtesting mode, or in the optimization mode. public RunningMode RunningMode {get;} /// Server related information. public IServer Server {get;} /// Represents the current symbol provides access to its properties and certain methods public Symbol Symbol {get;} /// Gets or sets the symbol name. public string SymbolName {get;} /// Gets the symbol names. public Symbols Symbols {get;} /// Returns the current server time. The shortcut to the Server.Time property. public DateTime Time {get;} /// Access to the TimeFrame values. public TimeFrame TimeFrame {get;} /// Gets collection of available TimeFrames. public TimeFrames TimeFrames {get;} /// Returns the current server time in UTC. The shortcut to the Server.TimeInUtc property. public DateTime TimeInUtc {get;} /// TimeZone of a cBot or an Indicator. public TimeZoneInfo TimeZone {get;} /// Access to the Timer object. public Timer Timer {get;} /// Access account transactions. public Transactions Transactions {get;} /// Gets the watchlist. public Watchlists Watchlists {get;} /// Occurs when market sessions change. public event Action MarketSessionsChanged; [Obsolete("Use Chart instead.")] public ChartObjects ChartObjects {get;} [Obsolete("Deprecated.")] public MarketSeries MarketSeries {get;} } /// Contains the current account information. public interface IAccount { /// Returns the current account type. AccountType AccountType {get;} /// Gets the account deposit asset/currency Asset Asset {get;} /// Returns the balance of the current account. double Balance {get;} /// Returns the broker name of the current account. string BrokerName {get;} /// Gets the account creation time. DateTime CreationTime {get;} /// Gets the credit of the current account. double Credit {get;} /// Represents the equity of the current account (balance minus Unrealized Net Loss plus Unrealized Net Profit plus Bonus). double Equity {get;} /// Represents the free margin of the current account. double FreeMargin {get;} /// Defines if the account is Live or Demo. True if the Account is Live, False if it is a Demo. bool IsLive {get;} /// Represents the margin of the current account. double Margin {get;} /// Represents the margin level of the current account. Margin Level (in %) is calculated using this formula: Equity / Margin * 100 double? MarginLevel {get;} /// Returns the number of the current account, e.g. 123456. int Number {get;} /// Gets the precise account leverage value. double PreciseLeverage {get;} /// Stop Out level is a lowest allowed Margin Level for account. If Margin Level is less than Stop Out, position will be closed sequentially until Margin Level is greater than Stop Out. double StopOutLevel {get;} /// Type of total margin requirements per Symbol. TotalMarginCalculationType TotalMarginCalculationType {get;} /// Gets the Unrealized Gross profit value. double UnrealizedGrossProfit {get;} /// Gets the Unrealized Net profit value. double UnrealizedNetProfit {get;} /// Gets the user ID. long UserId {get;} /// Gets the user nick name. string UserNickName {get;} /// Occurs when user switch his account. event Action Switched; [Obsolete("Use Account.Asset.Name instead")] string Currency {get;} [Obsolete("Use PreciseLeverage instead")] int Leverage {get;} [Obsolete("Use Positions instead")] IReadonlyList Positions {get;} [Obsolete("Use PendingOrders instead")] IReadonlyList PendingOrders {get;} } /// Its an interface for converting an asset / currency value to another asset / currency value. public interface IAssetConverter { /// Converts an asset to another asset. double Convert(double value, Asset from, Asset to); /// Converts an asset to another asset. double Convert(double value, string from, string to); /// Converts an asset to another asset. double Convert(double value, Asset from, string to); /// Converts an asset to another asset. double Convert(double value, string from, Asset to); } /// Accessor to Indicators public interface IIndicatorsAccessor { /// Initializes the AcceleratorOscillator indicator instance AcceleratorOscillator AcceleratorOscillator(); /// Initializes the AcceleratorOscillator indicator instance AcceleratorOscillator AcceleratorOscillator(Bars bars); /// The Accumulation Distribution indicator shows bullish or bearish trends. AccumulationDistribution AccumulationDistribution(); /// The Accumulation Distribution indicator shows bullish or bearish trends. AccumulationDistribution AccumulationDistribution(Bars bars); /// Initializes the Accumulative Swing Index indicator AccumulativeSwingIndex AccumulativeSwingIndex(int limitMoveValue); /// Initializes the Accumulative Swing Index indicator AccumulativeSwingIndex AccumulativeSwingIndex(Bars bars, int limitMoveValue); /// Legendary trader Bill Williams, an early pioneer of market psychology, developed the trend-following Alligator indicator, which follows the premise that financial markets and individual securities trend just 15% to 30% of the time while grinding through sideways ranges the other 70% to 85% of the time. Alligator Alligator(int jawsPeriods, int jawsShift, int teethPeriods, int teethShift, int lipsPeriods, int lipsShift, MovingAverageType maType); /// Legendary trader Bill Williams, an early pioneer of market psychology, developed the trend-following Alligator indicator, which follows the premise that financial markets and individual securities trend just 15% to 30% of the time while grinding through sideways ranges the other 70% to 85% of the time. Alligator Alligator(DataSeries source, int jawsPeriods, int jawsShift, int teethPeriods, int teethShift, int lipsPeriods, int lipsShift, MovingAverageType maType); /// The Aroon indicator is used to identify trends and their reversals. Aroon Aroon(int periods); /// The Aroon indicator is used to identify trends and their reversals. Aroon Aroon(Bars bars, int periods); /// The Average Directional Movement Index Rating (ADXR) measures the strength of the Average Directional Movement Index (ADX). It's calculated by taking the average of the current ADX and the ADX from one time period before. AverageDirectionalMovementIndexRating AverageDirectionalMovementIndexRating(int periods); /// The Average Directional Movement Index Rating (ADXR) measures the strength of the Average Directional Movement Index (ADX). It's calculated by taking the average of the current ADX and the ADX from one time period before. AverageDirectionalMovementIndexRating AverageDirectionalMovementIndexRating(int periods, MovingAverageType maType); /// Average true range. An indicator providing the degree of price volatility. AverageTrueRange AverageTrueRange(int periods, MovingAverageType maType); /// Average true range. An indicator providing the degree of price volatility. AverageTrueRange AverageTrueRange(Bars bars, int periods, MovingAverageType maType); /// Initializes the AwesomeOscillator indicator instance AwesomeOscillator AwesomeOscillator(); /// Initializes the AwesomeOscillator indicator instance by passing the bars AwesomeOscillator AwesomeOscillator(Bars bars); /// Bears Power shows the maximum bearish strength during the time period. BearsPower BearsPower(int periods, MovingAverageType maType); /// Bears Power shows the maximum bearish strength during the time period. BearsPower BearsPower(Bars bars, int periods, MovingAverageType maType); /// The Bollinger Bands indicator shows volatility. BollingerBands BollingerBands(DataSeries source, int periods, double standardDeviations, MovingAverageType maType); /// Bulls Power shows the maximum bullish strength during the time period. BullsPower BullsPower(int periods, MovingAverageType maType); /// Bulls Power shows the maximum bullish strength during the time period. BullsPower BullsPower(Bars bars, int periods, MovingAverageType maType); /// The Center of Gravity (COG) indicator is a technical indicator developed by John Ehlers in 2002, used to identify potential turning points in the price as early as possible. CenterOfGravity CenterOfGravity(int length); /// The Chaikin Money Flow indicator measures the money flow volume over a specific period. ChaikinMoneyFlow ChaikinMoneyFlow(int periods); /// The Chaikin Money Flow indicator measures the money flow volume over a specific period. ChaikinMoneyFlow ChaikinMoneyFlow(Bars bars, int periods); /// The Chaikin Oscillator indicator is the difference between two moving averages over the Chaikin Money Flow. ChaikinOscillator ChaikinOscillator(int shortTerm, int longTerm, MovingAverageType maType); /// The Chaikin Oscillator indicator is the difference between two moving averages over the Chaikin Money Flow. ChaikinOscillator ChaikinOscillator(Bars bars, int shortTerm, int longTerm, MovingAverageType maType); /// The Chaikin Volatiliy indicator measures the trading range between the high and the low prices. ChaikinVolatility ChaikinVolatility(int periods, int rateOfChange, MovingAverageType maType); /// The Chaikin Volatility indicator measures the trading range between the high and the low prices. ChaikinVolatility ChaikinVolatility(Bars bars, int periods, int rateOfChange, MovingAverageType maType); /// The Chande Momentum Oscillator (CMO) is a technical indicator designed to measure the momentum of a financial instrument. ChandeMomentumOscillator ChandeMomentumOscillator(DataSeries source, int periods); /// The Chande Momentum Oscillator (CMO) is a technical indicator designed to measure the momentum of a financial instrument. ChandeMomentumOscillator ChandeMomentumOscillator(int periods); /// The Commodity Channel Index identifies overbought and oversold conditions, price reversals and trend strength. CommodityChannelIndex CommodityChannelIndex(int periods); /// The Commodity Channel Index identifies overbought and oversold conditions, price reversals and trend strength. CommodityChannelIndex CommodityChannelIndex(DataSeries source, int periods); /// The Cyber Cycles Oscillator is an indicator designed by John Ehlers, it is used for isolating the cycle component of the market from its trend counterpart. CyberCycle CyberCycle(double alpha); /// The DeMarker (DeM) is an oscillator that compares the most recent maximum and minimum prices to the previous period's equivalent price. DeMarker DeMarker(int periods); /// The DeMarker (DeM) is an oscillator that compares the most recent maximum and minimum prices to the previous period's equivalent price. DeMarker DeMarker(Bars bars, int periods); /// The Detrended Price Oscillator shows intermediate overbought and oversold levels. DetrendedPriceOscillator DetrendedPriceOscillator(DataSeries source, int periods, MovingAverageType maType); /// The Directional Movement System is composed of three indicators that show if the market is trending and provide signals. DirectionalMovementSystem DirectionalMovementSystem(int periods); /// The Directional Movement System is composed of three indicators that show if the market is trending and provide signals. DirectionalMovementSystem DirectionalMovementSystem(Bars bars, int periods); /// The Directional Movement System is composed of three indicators that show if the market is trending and provide signals. DirectionalMovementSystem DirectionalMovementSystem(Bars bars, int periods, MovingAverageType maType); /// The Donchian channel is a volatility indicator forming a channel between the highest high and the lowest low of the chosen period. DonchianChannel DonchianChannel(int periods); /// The Donchian channel is a volatility indicator forming a channel between the highest high and the lowest low of the chosen period. DonchianChannel DonchianChannel(Bars bars, int periods); /// The Double Exponential Moving Average (DEMA) is a combination of smoothed exponential moving averages (EMA) and a basic EMA DoubleExponentialMovingAverage DoubleExponentialMovingAverage(DataSeries source, int periods); /// The Ease Of Movement indicator relates the price change to the volume. EaseOfMovement EaseOfMovement(int periods, MovingAverageType maType); /// The Ease Of Movement indicator relates the price change to the volume. EaseOfMovement EaseOfMovement(Bars bars, int periods, MovingAverageType maType); /// Elder's Force Index measures the amount of power used to move the price of an asset. ElderForceIndex ElderForceIndex(int periods, MovingAverageType maType); /// Elder's Force Index measures the amount of power used to move the price of an asset. ElderForceIndex ElderForceIndex(Bars bars, int periods, MovingAverageType maType); /// Elder Ray Index shows the maximum bullish and bearish strengths during the time period. ElderRayIndex ElderRayIndex(int periods, MovingAverageType maType); /// Elder Ray Index shows the maximum bullish and bearish strengths during the time period. ElderRayIndex ElderRayIndex(Bars bars, int periods, MovingAverageType maType); /// The Envelopes indicator is used to visualize potential trading ranges and overbought/oversold conditions. Envelopes Envelopes(int periods, MovingAverageType maType, double deviation); /// The Envelopes indicator is used to visualize potential trading ranges and overbought/oversold conditions. Envelopes Envelopes(DataSeries source, int periods, MovingAverageType maType, double deviation); /// The Exponential Moving Average smoothes the price data producing a trend indicator. ExponentialMovingAverage ExponentialMovingAverage(DataSeries source, int periods); /// The Fractal Adaptive Moving Average (FRAMA) indicator is a type of moving average that adjusts its sensitivity to price movements based on market volatility FractalAdaptiveMovingAverage FractalAdaptiveMovingAverage(int periods); /// The Fractal Adaptive Moving Average (FRAMA) indicator is a type of moving average that adjusts its sensitivity to price movements based on market volatility FractalAdaptiveMovingAverage FractalAdaptiveMovingAverage(Bars bars, int periods); /// The Fractal Chaos Bands indicator breaks down large trends into predictable patterns. FractalChaosBands FractalChaosBands(); /// The Fractal Chaos Bands indicator breaks down large trends into predictable patterns. FractalChaosBands FractalChaosBands(Bars bars); /// The fractal indicator is a trading indicator used in technical analysis that is used to identify potential trend reversal points in a market. Fractals Fractals(int periods); /// The fractal indicator is a trading indicator used in technical analysis that is used to identify potential trend reversal points in a market. Fractals Fractals(Bars bars, int periods); /// Gator Oscillator (GO) supplements the Alligator indicator and is used together with it. GatorOscillator GatorOscillator(int jawsPeriods, int jawsShift, int teethPeriods, int teethShift, int lipsPeriods, int lipsShift, MovingAverageType maType); /// Gator Oscillator (GO) supplements the Alligator indicator and is used together with it. GatorOscillator GatorOscillator(DataSeries source, int jawsPeriods, int jawsShift, int teethPeriods, int teethShift, int lipsPeriods, int lipsShift, MovingAverageType maType); /// Initializes the custom indicator TIndicator GetIndicator(object[] parameterValues); /// Initializes the custom indicator TIndicator GetIndicator(Bars bars, object[] parameterValues); /// The High Minus Low indicator is used to compute the range of daily bars HighMinusLow HighMinusLow(); /// The High Minus Low indicator is used to compute the range of daily bars HighMinusLow HighMinusLow(Bars bars); /// The Historical Volatility indicator is derived from time series of past market prices. HistoricalVolatility HistoricalVolatility(DataSeries source, int periods, int barHistory); /// The Hull Moving Average is a more responsive moving average that nearly removes lag and improves smoothing at the same time. HullMovingAverage HullMovingAverage(DataSeries source, int periods); /// Ichimoku Kinko Hyo Indicator is a moving average based trend identification system. IchimokuKinkoHyo IchimokuKinkoHyo(int tenkanSenPeriods, int kijunSenPeriods, int senkouSpanBPeriods); /// Ichimoku Kinko Hyo Indicator is a moving average based trend identification system. IchimokuKinkoHyo IchimokuKinkoHyo(Bars bars, int tenkanSenPeriods, int kijunSenPeriods, int senkouSpanBPeriods); /// The Kaufman's Adaptive Moving Average (KAMA) indicator is a type of adaptive moving average designed to adjust its smoothing factor based on market volatility KaufmanAdaptiveMovingAverage KaufmanAdaptiveMovingAverage(int periods, int fastPeriods, int slowPeriods); /// The Kaufman's Adaptive Moving Average (KAMA) indicator is a type of adaptive moving average designed to adjust its smoothing factor based on market volatility KaufmanAdaptiveMovingAverage KaufmanAdaptiveMovingAverage(DataSeries source, int periods, int fastPeriods, int slowPeriods); /// Initializes the Keltner Channels indicator instance KeltnerChannels KeltnerChannels(int maPeriod, MovingAverageType maType, int atrPeriod, MovingAverageType atrMaType, double bandDistance); /// Initializes the Keltner Channels indicator instance KeltnerChannels KeltnerChannels(Bars bars, int maPeriod, MovingAverageType maType, int atrPeriod, MovingAverageType atrMaType, double bandDistance); /// Linear Regression Forecast is a trend indicator used to forecast values using the Least Squares Fit method. LinearRegressionForecast LinearRegressionForecast(DataSeries source, int periods); /// The Linear Regression Intercept can be used together with the Linear Regression Slope indicator to plot the Linear Regression Line. LinearRegressionIntercept LinearRegressionIntercept(DataSeries source, int periods); /// The R Squared or coefficient of determination indicator's main purpose is the confirm the strength of the market. LinearRegressionRSquared LinearRegressionRSquared(DataSeries source, int periods); /// The Linear Regression Slope indicator is intended to measure the direction and strength of a trend. LinearRegressionSlope LinearRegressionSlope(DataSeries source, int periods); /// The MACD Line with the Signal line and their difference as a histogram. MacdCrossOver MacdCrossOver(int longCycle, int shortCycle, int signalPeriods); /// Initializes the MacdCrossOver indicator instance for a specific source series MacdCrossOver MacdCrossOver(DataSeries source, int longCycle, int shortCycle, int signalPeriods); /// The MACD Histogram is a momentum indicator measured by typically subtracting a 26 period moving average from a 12 period moving average. MacdHistogram MacdHistogram(int longCycle, int shortCycle, int signalPeriods); /// Initializes the MacdHistogram indicator instance for a specific source series MacdHistogram MacdHistogram(DataSeries source, int longCycle, int shortCycle, int signalPeriods); /// The Oscillator of a Moving Average (OsMA) over the MACD. MacdOscillatorMovingAverage MacdOscillatorMovingAverage(int longCycle, int shortCycle, int signalPeriods, MovingAverageType maType); /// The Oscillator of a Moving Average (OsMA) over the MACD. MacdOscillatorMovingAverage MacdOscillatorMovingAverage(DataSeries source, int longCycle, int shortCycle, int signalPeriods, MovingAverageType maType); /// The indicator shows the effectiveness of price movement by computing the price movement per volume unit MarketFacilitationIndex MarketFacilitationIndex(); /// The indicator shows the effectiveness of price movement by computing the price movement per volume unit MarketFacilitationIndex MarketFacilitationIndex(Bars bars); /// The Mass Index indicator is used to predict trend reversals. MassIndex MassIndex(int periods); /// The Mass Index indicator is used to predict trend reversals. MassIndex MassIndex(Bars bars, int periods); /// The Median indicator is the average of the high and the low. MedianPrice MedianPrice(); /// The Median indicator is the average of the high and the low. MedianPrice MedianPrice(Bars bars); /// The Momentum Oscillator measures the momentum of the price. MomentumOscillator MomentumOscillator(DataSeries source, int periods); /// The Money Flow Index measures the strength of the money flow. MoneyFlowIndex MoneyFlowIndex(int periods); /// The Money Flow Index measures the strength of the money flow. MoneyFlowIndex MoneyFlowIndex(Bars bars, int periods); /// Moving Average indicators are used to smooth data producing trend indicators. MovingAverage MovingAverage(DataSeries source, int periods, MovingAverageType maType); /// The Negative Volume Index is a calculation of the percentage change in price on days when trading volume declines. NegativeVolumeIndex NegativeVolumeIndex(DataSeries source); /// The On Balance Volume indicator relates price and volume. OnBalanceVolume OnBalanceVolume(DataSeries source); /// The Oscillator of a Moving Average (OsMA) is a technical indicator that shows the difference between an oscillator and its moving average over a given period of time. OscillatorMovingAverage OscillatorMovingAverage(DataSeries source, int periods, MovingAverageType maType); /// The Parabolic SAR indicator identifies potential reversals in the market direction ParabolicSAR ParabolicSAR(double minAf, double maxAf); /// The Parabolic SAR indicator identifies potential reversals in the market direction ParabolicSAR ParabolicSAR(Bars bars, double minAf, double maxAf); /// Polynomial Regression Channel (PRC) is an RTX Extension indicator that draws a best fit n-degree polynomial regression line through a recent period of data. PolynomialRegressionChannels PolynomialRegressionChannels(int degree, int periods, double standardDeviation, double standardDeviation2); /// The Positive Volume Index is a calculation of the percentage change in price on days when trading volume increased. PositiveVolumeIndex PositiveVolumeIndex(DataSeries source); /// The Price Oscillator calculates the difference between two moving averages. PriceOscillator PriceOscillator(DataSeries source, int longCycle, int shortCycle, MovingAverageType maType); /// The Price Rate of Change indicator is the percentage change of the current price and the price N periods ago. PriceROC PriceROC(DataSeries source, int periods); /// The Price Volume Trend indicator shows the relationship between price and volume. PriceVolumeTrend PriceVolumeTrend(DataSeries source); /// The Rainbow Oscillator is a process of repetitive smoothing of simple moving averages resulting in a full spectrum of trends. RainbowOscillator RainbowOscillator(DataSeries source, int levels, MovingAverageType maType); /// The Relative Strength Index indicator measures turns in price by measuring turns in momentum. RelativeStrengthIndex RelativeStrengthIndex(DataSeries source, int periods); /// The Relative Vigor Index is a momentum oscillator, measuring the strength of a trend. RelativeVigorIndex RelativeVigorIndex(int periods); /// The Relative Vigor Index is a momentum oscillator, measuring the strength of a trend. RelativeVigorIndex RelativeVigorIndex(Bars bars, int periods); /// The simple moving average smoothes the price data producing a trend indicator SimpleMovingAverage SimpleMovingAverage(DataSeries source, int periods); /// The Standard Deviation indicator shows volatility. StandardDeviation StandardDeviation(DataSeries source, int periods, MovingAverageType maType); /// The Stochastic Oscillator is a momentum indicator that aims to show price reversals by comparing the closing price to the price range. StochasticOscillator StochasticOscillator(int kPeriods, int kSlowing, int dPeriods, MovingAverageType maType); /// The Stochastic Oscillator is a momentum indicator that aims to show price reversals by comparing the closing price to the price range. StochasticOscillator StochasticOscillator(int kPeriods, int kSlowing, int dPeriods, MovingAverageType maType, StochasticCalculationType calculationType); /// The Stochastic Oscillator is a momentum indicator that aims to show price reversals by comparing the closing price to the price range. StochasticOscillator StochasticOscillator(Bars bars, int kPeriods, int kSlowing, int dPeriods, MovingAverageType maType); /// The Stochastic Oscillator is a momentum indicator that aims to show price reversals by comparing the closing price to the price range. StochasticOscillator StochasticOscillator(Bars bars, int kPeriods, int kSlowing, int dPeriods, MovingAverageType maType, StochasticCalculationType calculationType); /// Supertrend is one of the most popular trend trading indicators Supertrend Supertrend(int periods, double multiplier); /// Returns the Swing Index indicator instance. SwingIndex SwingIndex(int limitMoveValue); /// Returns the Swing Index indicator instance. SwingIndex SwingIndex(Bars bars, int limitMoveValue); /// Tick Volume gives you the number of ticks for each bar. TickVolume TickVolume(); /// The Time Series Moving Average is a moving average based on linear regression TimeSeriesMovingAverage TimeSeriesMovingAverage(DataSeries source, int periods); /// Trade Volume Index indicator measures the amount of money flowing in and out of an asset. TradeVolumeIndex TradeVolumeIndex(DataSeries source); /// The Triangular Moving Average is averaged twice to produce a double smoothed trend indicator TriangularMovingAverage TriangularMovingAverage(DataSeries source, int periods); /// The Triple Exponential Moving Average (TEMA) is a technical indicator that provides a smoothed representation of price data by applying three levels of exponential smoothing TripleExponentialMovingAverage TripleExponentialMovingAverage(DataSeries source, int periods); /// The Trix indicator shows the slope of a triple-smoothed exponential moving average. Trix Trix(DataSeries source, int periods); /// Initializes the True Range indicator. TrueRange TrueRange(); /// Initializes the True Range indicator. TrueRange TrueRange(Bars bars); /// The Typical Price indicator is the average of the high, low, and closing prices. TypicalPrice TypicalPrice(); /// The Typical Price indicator is the average of the high, low, and closing prices. TypicalPrice TypicalPrice(Bars bars); /// Returns the Ultimate Oscillator indicator instance. UltimateOscillator UltimateOscillator(int cycle1, int cycle2, int cycle3); /// Returns the Ultimate Oscillator indicator instance. UltimateOscillator UltimateOscillator(Bars bars, int cycle1, int cycle2, int cycle3); /// The Variable Index Dynamic Average (VIDYA) indicator is a type of moving average that dynamically adjusts its smoothing period based on market volatility. VariableIndexDynamicAverage VariableIndexDynamicAverage(DataSeries source, int cmoPeriods, int smoothPeriods); /// The Variable Index Dynamic Average (VIDYA) indicator is a type of moving average that dynamically adjusts its smoothing period based on market volatility. VariableIndexDynamicAverage VariableIndexDynamicAverage(int cmoPeriods, int smoothPeriods); /// The Vertical Horizontal Filter indicator measures the level of trend activity. VerticalHorizontalFilter VerticalHorizontalFilter(DataSeries source, int periods); /// The Volume Oscillator indicator is the difference between two moving averages. VolumeOscillator VolumeOscillator(int shortTerm, int longTerm); /// The Volume Oscillator indicator is the difference between two moving averages. VolumeOscillator VolumeOscillator(Bars bars, int shortTerm, int longTerm); /// Volume Rate of Change Indicator measures the rate of change of the tick volume. VolumeROC VolumeROC(int periods); /// Volume Rate of Change Indicator measures the rate of change of the tick volume. VolumeROC VolumeROC(Bars bars, int periods); /// The WeightedClose indicator is an average of each day's price with extra weight given to the closing price. WeightedClose WeightedClose(); /// The WeightedClose indicator is an average of each day's price with extra weight given to the closing price. WeightedClose WeightedClose(Bars bars); /// The Weighted Moving Average smoothes the price data producing a trend indicator. WeightedMovingAverage WeightedMovingAverage(DataSeries source, int periods); /// Welles Wilder Smoothing eliminates noise to identify the trend. WellesWilderSmoothing WellesWilderSmoothing(DataSeries source, int periods); /// The Williams Accumulation Distribution indicator shows bullish or bearish trends. WilliamsAccumulationDistribution WilliamsAccumulationDistribution(); /// The Williams Accumulation Distribution indicator shows bullish or bearish trends. WilliamsAccumulationDistribution WilliamsAccumulationDistribution(Bars bars); /// The Williams Percent R indicator is a momentum indicator measuring overbought and oversold levels. WilliamsPctR WilliamsPctR(int periods); /// The Williams Percent R indicator is a momentum indicator measuring overbought and oversold levels. WilliamsPctR WilliamsPctR(Bars bars, int periods); [Obsolete("Use overload with DataSeries parameter.")] CommodityChannelIndex CommodityChannelIndex(Bars bars, int periods); [Obsolete("Use overload with Bars instead.")] TIndicator GetIndicator(MarketSeries marketSeries, object[] parameterValues); [Obsolete("Use overload with Bars instead.")] HighMinusLow HighMinusLow(MarketSeries marketSeries); [Obsolete("Use overload with Bars instead.")] TrueRange TrueRange(MarketSeries marketSeries); [Obsolete("Use overload with Bars instead.")] SwingIndex SwingIndex(MarketSeries marketSeries, int limitMoveValue); [Obsolete("Use overload with Bars instead.")] AccumulativeSwingIndex AccumulativeSwingIndex(MarketSeries marketSeries, int limitMoveValue); [Obsolete("Use overload with Bars instead.")] Aroon Aroon(MarketSeries marketSeries, int periods); [Obsolete("Use overload with Bars instead.")] UltimateOscillator UltimateOscillator(MarketSeries marketSeries, int cycle1, int cycle2, int cycle3); [Obsolete("Use overload with Bars instead.")] DirectionalMovementSystem DirectionalMovementSystem(MarketSeries marketSeries, int periods); [Obsolete("Use overload with Bars instead.")] ParabolicSAR ParabolicSAR(MarketSeries marketSeries, double minAf, double maxAf); [Obsolete("Use overload with Bars instead.")] StochasticOscillator StochasticOscillator(MarketSeries marketSeries, int kPeriods, int kSlowing, int dPeriods, MovingAverageType maType); [Obsolete("Use overload with Bars instead.")] MedianPrice MedianPrice(MarketSeries marketSeries); [Obsolete("Use overload with Bars instead.")] WilliamsAccumulationDistribution WilliamsAccumulationDistribution(MarketSeries marketSeries); [Obsolete("Periods parameter is not used. Use FractalChaosBands() instead.")] FractalChaosBands FractalChaosBands(int periods); [Obsolete("Periods parameter is not used. Use FractalChaosBands(Bars) instead.")] FractalChaosBands FractalChaosBands(MarketSeries marketSeries, int periods); [Obsolete("Use overload with Bars instead.")] FractalChaosBands FractalChaosBands(MarketSeries marketSeries); [Obsolete("Use overload with Bars instead.")] TypicalPrice TypicalPrice(MarketSeries marketSeries); [Obsolete("Use overload with Bars instead.")] CommodityChannelIndex CommodityChannelIndex(MarketSeries marketSeries, int periods); [Obsolete("Use overload with Bars instead.")] MassIndex MassIndex(MarketSeries marketSeries, int periods); [Obsolete("Use overload with Bars instead.")] ChaikinVolatility ChaikinVolatility(MarketSeries marketSeries, int periods, int rateOfChange, MovingAverageType maType); [Obsolete("Use overload with Bars instead.")] WilliamsPctR WilliamsPctR(MarketSeries marketSeries, int periods); [Obsolete("Use overload with Bars instead.")] WeightedClose WeightedClose(MarketSeries marketSeries); [Obsolete("Use overload with Bars instead.")] ChaikinMoneyFlow ChaikinMoneyFlow(MarketSeries marketSeries, int periods); [Obsolete("Use overload with Bars instead.")] EaseOfMovement EaseOfMovement(MarketSeries marketSeries, int periods, MovingAverageType maType); [Obsolete("Use overload with Bars instead.")] MoneyFlowIndex MoneyFlowIndex(MarketSeries marketSeries, int periods); [Obsolete("Use overload with Bars instead.")] VolumeOscillator VolumeOscillator(MarketSeries marketSeries, int shortTerm, int longTerm); [Obsolete("Use overload with Bars instead.")] VolumeROC VolumeROC(MarketSeries marketSeries, int periods); [Obsolete("Use overload with Bars instead.")] AverageTrueRange AverageTrueRange(MarketSeries marketSeries, int periods, MovingAverageType maType); [Obsolete("Use overload with Bars instead.")] DonchianChannel DonchianChannel(MarketSeries marketSeries, int periods); [Obsolete("Use overload with Bars instead.")] IchimokuKinkoHyo IchimokuKinkoHyo(MarketSeries marketSeries, int tenkanSenPeriods, int kijunSenPeriods, int senkouSpanBPeriods); [Obsolete("Use overload with Bars instead.")] AwesomeOscillator AwesomeOscillator(MarketSeries marketSeries); [Obsolete("Use overload with Bars instead.")] AcceleratorOscillator AcceleratorOscillator(MarketSeries marketSeries); [Obsolete("Use overload with Bars instead.")] KeltnerChannels KeltnerChannels(MarketSeries marketSeries, int maPeriod, MovingAverageType maType, int atrPeriod, MovingAverageType atrMaType, double bandDistance); [Obsolete("Specify moving average type (Simple or Smoothed)")] Alligator Alligator(int jawsPeriods, int jawsShift, int teethPeriods, int teethShift, int lipsPeriods, int lipsShift); [Obsolete("Use VariableIndexDynamicAverage instead")] Vidya Vidya(DataSeries source, int periods, double r2Scale); } /// It is an interface that represents all Notifications. public interface INotifications { /// Plays a notification sound. void PlaySound(string fileName); /// Plays the specified SoundType. void PlaySound(SoundType soundType); /// Sends a notification email message. void SendEmail(string from, string to, string subject, string text); /// Shows a popup notification. PopupNotification ShowPopup(string caption, string message, PopupNotificationState initialState); } /// Server related information. public interface IServer { /// Indicates current connection status with the server bool IsConnected {get;} /// Returns the server time. DateTime Time {get;} /// Returns the server time in UTC. DateTime TimeInUtc {get;} /// Event raised when successfully connected with the server event Action Connected; /// Disconnected - Event raised when connection with the server is lost event Action Disconnected; } /// Tier of dynamic leverage. public interface LeverageTier { /// Leverage of dynamic leverage tier. double Leverage {get;} /// Volume of dynamic leverage tier. double Volume {get;} } /// Provide access to charts data (bars and ticks) and to the Depth of Market data. public interface MarketData { /// Gets the bars for the specific timeframe. Bars GetBars(TimeFrame timeFrame); /// Gets the chart bars for the specific timeframe for the specific symbol. Bars GetBars(TimeFrame timeFrame, string symbolName); /// The asynchronous method to get the bars for the specific timeframe for the specific symbol. void GetBarsAsync(TimeFrame timeFrame, Action callback); /// The asynchronous method to get the specific bars for the specific timeframe for the specific symbol. void GetBarsAsync(TimeFrame timeFrame, string symbolName, Action callback); /// Gets the Depth of Market for the specific symbol. MarketDepth GetMarketDepth(string symbolName); /// Gets the Tick data. Ticks GetTicks(); /// Gets the Tick data for the specific symbol. Ticks GetTicks(string symbolName); /// The asynchronous method to get tick data. void GetTicksAsync(Action callback); /// The asynchronous method to get tick data for the specific symbol. void GetTicksAsync(string symbolName, Action callback); [Obsolete("Use GetMarketDepth(string symbolName) instead")] MarketDepth GetMarketDepth(Symbol symbol); [Obsolete("Deprecated.")] MarketSeries GetSeries(TimeFrame timeFrame); [Obsolete("Deprecated.")] MarketSeries GetSeries(string symbolName, TimeFrame timeFrame); [Obsolete("Use GetSeries(string symbolName, TimeFrame timeFrame) instead")] MarketSeries GetSeries(Symbol symbol, TimeFrame timeFrame); [Obsolete("Use Symbols.GetSymbol instead")] Symbol GetSymbol(string symbolCode); } /// Access to symbol's trading sessions schedule public interface MarketHours { /// Indicates if trading session is active bool IsOpened(); /// Indicates if trading session is active bool IsOpened(DateTime datetime); /// Time left till end of current trading session. Returns 0 if session is not active TimeSpan TimeTillClose(); /// Time left till start of new trading session. Returns 0 if session is already active TimeSpan TimeTillOpen(); /// List of all symbol's trading holidays IReadonlyList Holidays {get;} /// List of all symbol's trading sessions IReadonlyList Sessions {get;} } /// Represents a currency pair. public interface Symbol { /// Calculates the amount to be risked based on the specified stop loss and trading volume. Note that the result of this calculation may be imprecise as the exact degree of risk always depends on market movement and is impossible to predict. double AmountRisked(double volume, double stopLossInPips); /// Returns the amount of margin you need for x amount of volume. double GetEstimatedMargin(TradeType tradeType, double volume); /// Round the volume to the amount suitable for a trade. double NormalizeVolumeInUnits(double volume, RoundingMode roundingMode); /// Calculates the number of pips to be risked based on the specified stop loss and trading volume. Note that the result of this calculation may be imprecise as the exact degree of risk always depends on market movement and is impossible to predict. double PipsForFixedRisk(double amount, double volume); /// Calculates the stop loss (in pips) for the proportional amount to be risked based on the specified volume. Note that the result of this calculation may be imprecise as the exact degree of risk always depends on market movement and is impossible to predict. double PipsForProportionalRisk(ProportionalAmountType type, double percentage, double volume); /// Convert Quantity (in lots) to Volume in units of base currency. double QuantityToVolumeInUnits(double quantity); /// Calculates the volume to be risked (in X units of the account deposit currency) based on the specified stop loss. Note that the result of this calculation may be imprecise as the exact degree of risk always depends on market movement and is impossible to predict. double VolumeForFixedRisk(double amount, double stopLossInPips); /// Calculates the volume to be risked (in X units of the account deposit currency) based on the specified stop loss. Note that the result of this calculation may be imprecise as the exact degree of risk always depends on market movement and is impossible to predict. double VolumeForFixedRisk(double amount, double stopLossInPips, RoundingMode roundingMode); /// Calculates the volume to be risked (in X% of either the account equity or balance) based on the specified stop loss. Note that the result of this calculation may be imprecise as the exact degree of risk always depends on market movement and is impossible to predict. double VolumeForProportionalRisk(ProportionalAmountType type, double percentage, double stopLossInPips); /// Calculates the volume to be risked (in X% of either the account equity or balance) based on the specified stop loss. Note that the result of this calculation may be imprecise as the exact degree of risk always depends on market movement and is impossible to predict. double VolumeForProportionalRisk(ProportionalAmountType type, double percentage, double stopLossInPips, RoundingMode roundingMode); /// Convert Volume in units of base currency to Quantity (in lots). double VolumeInUnitsToQuantity(double volume); /// Gets symbol administrative charge. Administrative fee will be charged instead of SWAP if account is marked as SWAP free. Only applicable for SWAP free trading accounts. double AdministrativeCharge {get;} /// Gets the Day of the week (in UTC) when Administrative Fee charge amount will be tripled. Only applicable for SWAP free trading accounts. DayOfWeek? AdministrativeCharge3DaysRollover {get;} /// Gets the current ask price for this symbol. double Ask {get;} /// Gets the symbol base asset. Asset BaseAsset {get;} /// Gets the current bid price for this symbol. double Bid {get;} /// Gets the amount of base commission for the symbol. double Commission {get;} /// Gets the symbol base commission calculation type. SymbolCommissionType CommissionType {get;} /// Gets the number of digits for the symbol. int Digits {get;} /// Gets the dynamic leverage tiers for the symbol. IReadonlyList DynamicLeverage {get;} /// Gets the future contract settings if symbol represents a future contract otherwise null. FuturesSettings FuturesSettings {get;} /// Gets symbol grace period. This is the number of days free of Administrative fee from the time of opening a position. Only applicable for SWAP free trading accounts. int GracePeriod {get;} /// Gets whether current symbol is a custom symbol or not. bool IsCustom {get;} /// Gets If trading is enabled or not for the symbol. bool IsTradingEnabled {get;} /// Gets the size of 1 lot in units of the base currency. long LotSize {get;} /// Gets access to the symbol's trading sessions schedule. MarketHours MarketHours {get;} /// Gets the minimum amount of commission for the symbol. This is the amount of commission that will be paid by trader for any trade. Check MinCommissionType for interpretation of MinCommission value. double MinCommission {get;} /// Gets the symbol minimum commission asset. If MinCommissionType is set to Asset then you can use this property to get that asset. The MinCommission value will be converted from MinCommissionAsset to account deposit asset at the moment of trade. Asset MinCommissionAsset {get;} /// Gets the symbol minimum commission type. Use this property to interpret MinCommission value. SymbolMinCommissionType MinCommissionType {get;} /// Gets the symbol minimum distances type. SymbolMinDistanceType MinDistanceType {get;} /// Gets symbol minimum stop loss distance. Use MinDistanceType for interpretation. double MinStopLossDistance {get;} /// Gets symbol minimum take profit distance. Use MinDistanceType for interpretation. double MinTakeProfitDistance {get;} /// Gets the pip size for current symbol. double PipSize {get;} /// Gets the monetary value of one pip. This is the monetary value of one pip of the symbol when you started your cBot or initialized your indicator. Its not updated in real time and it remains constant. double PipValue {get;} /// Gets the symbol profit and loss conversion fee rate. double PnLConversionFeeRate {get;} /// Gets the symbol quote asset. Asset QuoteAsset {get;} /// Gets symbol sentiment. SymbolSentiment Sentiment {get;} /// Gets the current spread of this symbol. double Spread {get;} /// Gets the Day of the week when Symbol SWAP charge amount will be tripled. DayOfWeek? Swap3DaysRollover {get;} /// Gets the symbol SWAP calculation type. SymbolSwapCalculationType SwapCalculationType {get;} /// Gets the SWAP charge for long positions of the symbol. double SwapLong {get;} /// Gets the SWAP charge for short positions of the symbol. double SwapShort {get;} /// Gets the tick size for the current symbol. double TickSize {get;} /// Gets the monetary value of one tick. This is the monetary value of one tick of the symbol when you started your cBot or initialized your indicator. Its not updated in real time and it remains constant. double TickValue {get;} /// Gets symbol trading mode. SymbolTradingMode TradingMode {get;} /// Gets the sum of the unrealized Gross profits of the positions of this Symbol double UnrealizedGrossProfit {get;} /// Gets the sum of the unrealized Net profits of the positions of this Symbol. double UnrealizedNetProfit {get;} /// Gets the maximum tradable amount. double VolumeInUnitsMax {get;} /// Gets the minimum tradable amount. double VolumeInUnitsMin {get;} /// Gets the minimum trade amount increment. double VolumeInUnitsStep {get;} /// Occurs on each incoming symbol ticks event Action Tick; [Obsolete("Use NormalizeVolumeInUnits instead")] long NormalizeVolume(double volume, RoundingMode roundingMode); [Obsolete("Use QuantityToVolumeInUnits instead")] long QuantityToVolume(double quantity); [Obsolete("Use VolumeInUnitsToQuantity instead")] double VolumeToQuantity(long volume); [Obsolete("Use Symbol.Name instead")] string Code {get;} [Obsolete("Use TickSize instead")] double PointSize {get;} [Obsolete("Use VolumeInUnitsMin instead")] long VolumeMin {get;} [Obsolete("Use VolumeInUnitsMax instead")] long VolumeMax {get;} [Obsolete("Use VolumeInUnitsStep instead")] long VolumeStep {get;} [Obsolete("Use DynamicLeverage instead")] int Leverage {get;} [Obsolete("Use DynamicLeverage instead")] double PreciseLeverage {get;} } /// Defines types of total margin requirements per Symbol. public enum TotalMarginCalculationType { /// Total margin requirements per Symbol are equal to Sum of all margin requirements of all positions of that Symbol. Sum, /// Total margin requirements per Symbol are equal to Max margin requirements from all Long and all Short Positions of that Symbol. Max, /// Total margin requirements per Symbol are equal to the difference between margin requirements of all Long and all Short Positions of that Symbol. Net, } /// Trading session schedule public interface TradingSession { /// Day of week when trading session ends DayOfWeek EndDay {get;} /// Time when trading session ends TimeSpan EndTime {get;} /// Day of week when trading session starts DayOfWeek StartDay {get;} /// Time when trading session starts TimeSpan StartTime {get;} } }