Skip to content

Symbol

Summary

Represents a currency pair.

Signature

1
public abstract interface Symbol

Namespace

cAlgo.API.Internals

Examples

1
2
3
4
5
6
7
 double bid = Symbol.Bid;
    double ask = Symbol.Ask;
    string code = Symbol.Code;
    int digits = Symbol.Digits;
    double pipSize = Symbol.PipSize;
    double pointSize = Symbol.PointSize;
    double spread = Symbol.Spread;
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
 using cAlgo.API;
 using cAlgo.API.Internals;
 using System;
 namespace cAlgo
 {
     /// 
             /// This sample indicator shows how to get a symbol data
             ///
     [Indicator(IsOverlay = true, TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
     public class SymbolSample : Indicator
     {
         private TextBlock _spreadTextBlock;
         private TextBlock _bidTextBlock;
         private TextBlock _askTextBlock;
         private TextBlock _unrealizedGrossProfitTextBlock;
         private TextBlock _unrealizedNetProfitTextBlock;
         private TextBlock _timeTillOpenTextBlock;
         private TextBlock _timeTillCloseTextBlock;
         private TextBlock _isOpenedTextBlock;
         private Symbol _symbol;
         [Parameter("Use Current Symbol", DefaultValue = true)]
         public bool UseCurrentSymbol { get; set; }
         [Parameter("Other Symbol Name", DefaultValue = "GBPUSD")]
         public string OtherSymbolName { get; set; }
         protected override void Initialize()
         {
             var grid = new Grid(44, 2) 
             {
                 BackgroundColor = Color.Gold,
                 Opacity = 0.6,
                 HorizontalAlignment = HorizontalAlignment.Center,
                 VerticalAlignment = VerticalAlignment.Center
             };
             var style = new Style();
             style.Set(ControlProperty.Padding, 1);
             style.Set(ControlProperty.Margin, 2);
             style.Set(ControlProperty.BackgroundColor, Color.Black);
             style.Set(ControlProperty.FontSize, 8);
             _symbol = UseCurrentSymbol ? Symbol : Symbols.GetSymbol(OtherSymbolName);
             grid.AddChild(new TextBlock 
             {
                 Text = "Symbol Info",
                 Style = style,
                 HorizontalAlignment = HorizontalAlignment.Center
             }, 0, 0, 1, 2);
             grid.AddChild(new TextBlock 
             {
                 Text = "Name",
                 Style = style
             }, 1, 0);
             grid.AddChild(new TextBlock 
             {
                 Text = _symbol.Name,
                 Style = style
             }, 1, 1);
             grid.AddChild(new TextBlock 
             {
                 Text = "ID",
                 Style = style
             }, 2, 0);
             grid.AddChild(new TextBlock 
             {
                 Text = _symbol.Id.ToString(),
                 Style = style
             }, 2, 1);
             grid.AddChild(new TextBlock 
             {
                 Text = "Digits",
                 Style = style
             }, 3, 0);
             grid.AddChild(new TextBlock 
             {
                 Text = _symbol.Digits.ToString(),
                 Style = style
             }, 3, 1);
             grid.AddChild(new TextBlock 
             {
                 Text = "Description",
                 Style = style
             }, 4, 0);
             grid.AddChild(new TextBlock 
             {
                 Text = _symbol.Description,
                 Style = style
             }, 4, 1);
             grid.AddChild(new TextBlock 
             {
                 Text = "Lot Size",
                 Style = style
             }, 5, 0);
             grid.AddChild(new TextBlock 
             {
                 Text = _symbol.LotSize.ToString(),
                 Style = style
             }, 5, 1);
             grid.AddChild(new TextBlock 
             {
                 Text = "Pip Size",
                 Style = style
             }, 6, 0);
             grid.AddChild(new TextBlock 
             {
                 Text = _symbol.PipSize.ToString(),
                 Style = style
             }, 6, 1);
             grid.AddChild(new TextBlock 
             {
                 Text = "Pip Value",
                 Style = style
             }, 7, 0);
             grid.AddChild(new TextBlock 
             {
                 Text = _symbol.PipValue.ToString(),
                 Style = style
             }, 7, 1);
             grid.AddChild(new TextBlock 
             {
                 Text = "Tick Size",
                 Style = style
             }, 8, 0);
             grid.AddChild(new TextBlock 
             {
                 Text = _symbol.TickSize.ToString(),
                 Style = style
             }, 8, 1);
             grid.AddChild(new TextBlock 
             {
                 Text = "Tick Value",
                 Style = style
             }, 9, 0);
             grid.AddChild(new TextBlock 
             {
                 Text = _symbol.TickValue.ToString(),
                 Style = style
             }, 9, 1);
             grid.AddChild(new TextBlock 
             {
                 Text = "Volume In Units Max",
                 Style = style
             }, 10, 0);
             grid.AddChild(new TextBlock 
             {
                 Text = _symbol.VolumeInUnitsMax.ToString(),
                 Style = style
             }, 10, 1);
             grid.AddChild(new TextBlock 
             {
                 Text = "Volume In Units Min",
                 Style = style
             }, 11, 0);
             grid.AddChild(new TextBlock 
             {
                 Text = _symbol.VolumeInUnitsMin.ToString(),
                 Style = style
             }, 11, 1);
             grid.AddChild(new TextBlock 
             {
                 Text = "Volume In Units Step",
                 Style = style
             }, 12, 0);
             grid.AddChild(new TextBlock 
             {
                 Text = _symbol.VolumeInUnitsStep.ToString(),
                 Style = style
             }, 12, 1);
             grid.AddChild(new TextBlock 
             {
                 Text = "Ask",
                 Style = style
             }, 13, 0);
             _askTextBlock = new TextBlock 
             {
                 Text = _symbol.Ask.ToString(),
                 Style = style
             };
             grid.AddChild(_askTextBlock, 13, 1);
             grid.AddChild(new TextBlock 
             {
                 Text = "Bid",
                 Style = style
             }, 14, 0);
             _bidTextBlock = new TextBlock 
             {
                 Text = _symbol.Bid.ToString(),
                 Style = style
             };
             grid.AddChild(_bidTextBlock, 14, 1);
             grid.AddChild(new TextBlock 
             {
                 Text = "Spread",
                 Style = style
             }, 15, 0);
             _spreadTextBlock = new TextBlock 
             {
                 Text = _symbol.Spread.ToString(),
                 Style = style
             };
             grid.AddChild(_spreadTextBlock, 15, 1);
             grid.AddChild(new TextBlock 
             {
                 Text = "Unrealized Gross Profit",
                 Style = style
             }, 16, 0);
             _unrealizedGrossProfitTextBlock = new TextBlock 
             {
                 Text = _symbol.UnrealizedGrossProfit.ToString(),
                 Style = style
             };
             grid.AddChild(_unrealizedGrossProfitTextBlock, 16, 1);
             grid.AddChild(new TextBlock 
             {
                 Text = "Unrealized Net Profit",
                 Style = style
             }, 17, 0);
             _unrealizedNetProfitTextBlock = new TextBlock 
             {
                 Text = _symbol.UnrealizedNetProfit.ToString(),
                 Style = style
             };
             grid.AddChild(_unrealizedNetProfitTextBlock, 17, 1);
             grid.AddChild(new TextBlock 
             {
                 Text = "Time Till Open",
                 Style = style
             }, 18, 0);
             _timeTillOpenTextBlock = new TextBlock 
             {
                 Text = _symbol.MarketHours.TimeTillOpen().ToString(),
                 Style = style
             };
             grid.AddChild(_timeTillOpenTextBlock, 18, 1);
             grid.AddChild(new TextBlock 
             {
                 Text = "Time Till Close",
                 Style = style
             }, 19, 0);
             _timeTillCloseTextBlock = new TextBlock 
             {
                 Text = _symbol.MarketHours.TimeTillClose().ToString(),
                 Style = style
             };
             grid.AddChild(_timeTillCloseTextBlock, 19, 1);
             grid.AddChild(new TextBlock 
             {
                 Text = "Is Opened",
                 Style = style
             }, 20, 0);
             _isOpenedTextBlock = new TextBlock 
             {
                 Text = _symbol.MarketHours.IsOpened().ToString(),
                 Style = style
             };
             grid.AddChild(_isOpenedTextBlock, 20, 1);
             grid.AddChild(new TextBlock 
             {
                 Text = "Trading Sessions #",
                 Style = style
             }, 21, 0);
             grid.AddChild(new TextBlock 
             {
                 Text = _symbol.MarketHours.Sessions.Count.ToString(),
                 Style = style
             }, 21, 1);
             grid.AddChild(new TextBlock 
             {
                 Text = "Trading Session Week Days",
                 Style = style
             }, 22, 0);
             var weekDays = string.Empty;
             for (var iSession = 0; iSession < _symbol.MarketHours.Sessions.Count; iSession++)
             {
                 var currentSessionWeekDays = string.Format("{0}({1})-{2}({3})", _symbol.MarketHours.Sessions[iSession].StartDay, _symbol.MarketHours.Sessions[iSession].StartTime, _symbol.MarketHours.Sessions[iSession].EndDay, _symbol.MarketHours.Sessions[iSession].EndTime);
                 weekDays = iSession == 0 ? currentSessionWeekDays : string.Format("{0}, {1}", weekDays, currentSessionWeekDays);
             }
             grid.AddChild(new TextBlock 
             {
                 Text = weekDays,
                 Style = style
             }, 22, 1);
             grid.AddChild(new TextBlock 
             {
                 Text = "Leverage Tier",
                 Style = style
             }, 23, 0);
             var leverageTiers = string.Empty;
             for (var iLeverageTier = 0; iLeverageTier < _symbol.DynamicLeverage.Count; iLeverageTier++)
             {
                 var currentLeverageTiers = string.Format("Volume up to {0} is {1}", _symbol.DynamicLeverage[iLeverageTier].Volume, _symbol.DynamicLeverage[iLeverageTier].Leverage);
                 leverageTiers = iLeverageTier == 0 ? currentLeverageTiers : string.Format("{0}, {1}", leverageTiers, currentLeverageTiers);
             }
             grid.AddChild(new TextBlock 
             {
                 Text = leverageTiers,
                 Style = style
             }, 23, 1);
             grid.AddChild(new TextBlock
             {
                 Text = nameof(_symbol.BaseAsset),
                 Style = style
             }, 24, 0);
             grid.AddChild(new TextBlock
             {
                 Text = _symbol.BaseAsset.Name,
                 Style = style
             }, 24, 1);
             grid.AddChild(new TextBlock
             {
                 Text = nameof(_symbol.QuoteAsset),
                 Style = style
             }, 25, 0);
             grid.AddChild(new TextBlock
             {
                 Text = _symbol.QuoteAsset.Name,
                 Style = style
             }, 25, 1);
             grid.AddChild(new TextBlock
             {
                 Text = nameof(_symbol.PnLConversionFeeRate),
                 Style = style
             }, 26, 0);
             grid.AddChild(new TextBlock
             {
                 Text = _symbol.PnLConversionFeeRate.ToString(),
                 Style = style
             }, 26, 1);
             grid.AddChild(new TextBlock
             {
                 Text = nameof(_symbol.Commission),
                 Style = style
             }, 27, 0);
             grid.AddChild(new TextBlock
             {
                 Text = _symbol.Commission.ToString(),
                 Style = style
             }, 27, 1);
             grid.AddChild(new TextBlock
             {
                 Text = nameof(_symbol.CommissionType),
                 Style = style
             }, 28, 0);
             grid.AddChild(new TextBlock
             {
                 Text = _symbol.CommissionType.ToString(),
                 Style = style
             }, 28, 1);
             grid.AddChild(new TextBlock
             {
                 Text = nameof(_symbol.MinCommission),
                 Style = style
             }, 29, 0);
             grid.AddChild(new TextBlock
             {
                 Text = _symbol.MinCommission.ToString(),
                 Style = style
             }, 29, 1);
             grid.AddChild(new TextBlock
             {
                 Text = nameof(_symbol.MinCommissionAsset),
                 Style = style
             }, 30, 0);
             grid.AddChild(new TextBlock
             {
                 Text = _symbol.MinCommissionAsset.Name,
                 Style = style
             }, 30, 1);
             grid.AddChild(new TextBlock
             {
                 Text = nameof(_symbol.MinCommissionType),
                 Style = style
             }, 31, 0);
             grid.AddChild(new TextBlock
             {
                 Text = _symbol.MinCommissionType.ToString(),
                 Style = style
             }, 31, 1);
             grid.AddChild(new TextBlock
             {
                 Text = nameof(_symbol.AdministrativeCharge3DaysRollover),
                 Style = style
             }, 32, 0);
             grid.AddChild(new TextBlock
             {
                 Text = _symbol.AdministrativeCharge3DaysRollover.ToString(),
                 Style = style
             }, 32, 1);
             grid.AddChild(new TextBlock
             {
                 Text = nameof(_symbol.AdministrativeCharge),
                 Style = style
             }, 33, 0);
             grid.AddChild(new TextBlock
             {
                 Text = _symbol.AdministrativeCharge.ToString(),
                 Style = style
             }, 33, 1);
             grid.AddChild(new TextBlock
             {
                 Text = nameof(_symbol.GracePeriod),
                 Style = style
             }, 34, 0);
             grid.AddChild(new TextBlock
             {
                 Text = _symbol.GracePeriod.ToString(),
                 Style = style
             }, 34, 1);
             grid.AddChild(new TextBlock
             {
                 Text = nameof(_symbol.SwapLong),
                 Style = style
             }, 35, 0);
             grid.AddChild(new TextBlock
             {
                 Text = _symbol.SwapLong.ToString(),
                 Style = style
             }, 35, 1);
             grid.AddChild(new TextBlock
             {
                 Text = nameof(_symbol.SwapShort),
                 Style = style
             }, 36, 0);
             grid.AddChild(new TextBlock
             {
                 Text = _symbol.SwapShort.ToString(),
                 Style = style
             }, 36, 1);
             grid.AddChild(new TextBlock
             {
                 Text = nameof(_symbol.Swap3DaysRollover),
                 Style = style
             }, 37, 0);
             grid.AddChild(new TextBlock
             {
                 Text = _symbol.Swap3DaysRollover.ToString(),
                 Style = style
             }, 37, 1);
             grid.AddChild(new TextBlock
             {
                 Text = nameof(_symbol.SwapCalculationType),
                 Style = style
             }, 38, 0);
             grid.AddChild(new TextBlock
             {
                 Text = _symbol.SwapCalculationType.ToString(),
                 Style = style
             }, 38, 1);
             grid.AddChild(new TextBlock
             {
                 Text = nameof(_symbol.IsTradingEnabled),
                 Style = style
             }, 39, 0);
             grid.AddChild(new TextBlock
             {
                 Text = _symbol.IsTradingEnabled.ToString(),
                 Style = style
             }, 39, 1);
             grid.AddChild(new TextBlock
             {
                 Text = nameof(_symbol.TradingMode),
                 Style = style
             }, 40, 0);
             grid.AddChild(new TextBlock
             {
                 Text = _symbol.TradingMode.ToString(),
                 Style = style
             }, 40, 1);
             grid.AddChild(new TextBlock
             {
                 Text = nameof(_symbol.MinDistanceType),
                 Style = style
             }, 41, 0);
             grid.AddChild(new TextBlock
             {
                 Text = _symbol.MinDistanceType.ToString(),
                 Style = style
             }, 41, 1);
             grid.AddChild(new TextBlock
             {
                 Text = nameof(_symbol.MinTakeProfitDistance),
                 Style = style
             }, 42, 0);
             grid.AddChild(new TextBlock
             {
                 Text = _symbol.MinTakeProfitDistance.ToString(),
                 Style = style
             }, 42, 1);
             grid.AddChild(new TextBlock
             {
                 Text = nameof(_symbol.MinStopLossDistance),
                 Style = style
             }, 43, 0);
             grid.AddChild(new TextBlock
             {
                 Text = _symbol.MinStopLossDistance.ToString(),
                 Style = style
             }, 43, 1);
             Chart.AddControl(grid);
             _symbol.Tick += Symbol_Tick;
             Timer.Start(TimeSpan.FromSeconds(1));
         }
         private void Symbol_Tick(SymbolTickEventArgs obj)
         {
             _askTextBlock.Text = obj.Symbol.Ask.ToString();
             _bidTextBlock.Text = obj.Symbol.Bid.ToString();
             _spreadTextBlock.Text = obj.Symbol.Spread.ToString();
             _unrealizedGrossProfitTextBlock.Text = obj.Symbol.UnrealizedGrossProfit.ToString();
             _unrealizedNetProfitTextBlock.Text = obj.Symbol.UnrealizedNetProfit.ToString();
         }
         protected override void OnTimer()
         {
             _timeTillOpenTextBlock.Text = _symbol.MarketHours.TimeTillOpen().ToString();
             _timeTillCloseTextBlock.Text = _symbol.MarketHours.TimeTillClose().ToString();
             _isOpenedTextBlock.Text = _symbol.MarketHours.IsOpened().ToString();
         }
         public override void Calculate(int index)
         {
         }
     }
 }

Methods

NormalizeVolumeInUnits

Summary

Round the volume to the amount suitable for a trade.

Signature

1
public abstract double NormalizeVolumeInUnits(double volume, RoundingMode roundingMode)

Parameters

Name Type Description
volume double Amount to normalize
roundingMode RoundingMode Rounding method

Return Value

double

Examples

1
 volume = Symbol.NormalizeVolumeInUnits(volume, RoundingMode.Down);

QuantityToVolumeInUnits

Summary

Convert Quantity (in lots) to Volume in units of base currency.

Signature

1
public abstract double QuantityToVolumeInUnits(double quantity)

Parameters

Name Type Description
quantity double Quantity (lots)

Return Value

double

VolumeInUnitsToQuantity

Summary

Convert Volume in units of base currency to Quantity (in lots).

Signature

1
public abstract double VolumeInUnitsToQuantity(double volume)

Parameters

Name Type Description
volume double The symbol volume units to convert to Quantity (in lots)

Return Value

double

GetEstimatedMargin

Summary

Returns the amount of margin you need for x amount of volume.

Signature

1
public abstract double GetEstimatedMargin(TradeType tradeType, double volume)

Parameters

Name Type Description
tradeType TradeType Order trade type
volume double Amount of volume

Return Value

double

Related Tutorials

VolumeForFixedRisk (2)

VolumeForFixedRisk (1 of 2)

Summary

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.

Signature

1
public abstract double VolumeForFixedRisk(double amount, double stopLossInPips)

Parameters

Name Type Description
amount double The amount you want to risk in your account deposit currency.
stopLossInPips double The stop loss in pips.

Return Value

double

VolumeForFixedRisk (2 of 2)

Summary

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.

Signature

1
public abstract double VolumeForFixedRisk(double amount, double stopLossInPips, RoundingMode roundingMode)

Parameters

Name Type Description
amount double The amount you want to risk in your account deposit currency.
stopLossInPips double The stop loss in pips.
roundingMode RoundingMode The rounding method

Return Value

double

VolumeForProportionalRisk (2)

VolumeForProportionalRisk (1 of 2)

Summary

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.

Signature

1
public abstract double VolumeForProportionalRisk(ProportionalAmountType type, double percentage, double stopLossInPips)

Parameters

Name Type Description
type ProportionalAmountType The type of the amount to be risked (either balance or equity).
percentage double The percentage of equity or balance to be risked.
stopLossInPips double The stop loss in pips.

Return Value

double

VolumeForProportionalRisk (2 of 2)

Summary

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.

Signature

1
public abstract double VolumeForProportionalRisk(ProportionalAmountType type, double percentage, double stopLossInPips, RoundingMode roundingMode)

Parameters

Name Type Description
type ProportionalAmountType The type of the amount to be risked (either balance or equity).
percentage double The percentage of equity or balance to be risked.
stopLossInPips double The stop loss in pips.
roundingMode RoundingMode The rounding method.

Return Value

double

AmountRisked

Summary

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.

Signature

1
public abstract double AmountRisked(double volume, double stopLossInPips)

Parameters

Name Type Description
volume double The volume to be traded
stopLossInPips double The stop loss in pips.

Return Value

double

PipsForFixedRisk

Summary

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.

Signature

1
public abstract double PipsForFixedRisk(double amount, double volume)

Parameters

Name Type Description
amount double The amount to be risked.
volume double The volume to be traded.

Return Value

double

PipsForProportionalRisk

Summary

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.

Signature

1
public abstract double PipsForProportionalRisk(ProportionalAmountType type, double percentage, double volume)

Parameters

Name Type Description
type ProportionalAmountType The type of the amount to be risked (either balance or equity).
percentage double The percentage of equity or balance to be risked.
volume double The volume to be traded.

Return Value

double

NormalizeVolume

Summary

Round the volume to the amount suitable for a trade.

Signature

1
public abstract long NormalizeVolume(double volume, RoundingMode roundingMode)

Parameters

Name Type Description
volume double Amount to normalize
roundingMode RoundingMode Rounding method

Return Value

long

Examples

1
 volume = Symbol.NormalizeVolumeInUnits(volume, RoundingMode.Down);

QuantityToVolume

Summary

Convert Quantity (in lots) to Volume in units of base currency.

Signature

1
public abstract long QuantityToVolume(double quantity)

Parameters

Name Type Description
quantity double Quantity (lots)

Return Value

long

VolumeToQuantity

Signature

1
public abstract double VolumeToQuantity(long volume)

Parameters

Name Type Description
volume long

Return Value

double

Properties

Ask

Summary

Gets the current ask price for this symbol.

Remarks

The seller's price for the symbol.

Signature

1
public abstract double Ask {get;}

Return Value

double

Examples

1
2
3
4
 protected override void OnTick()
 {
     Print("Ask Price: {0}", Symbol.Ask);
 }

Bid

Summary

Gets the current bid price for this symbol.

Remarks

The buyer's price for the symbol.

Signature

1
public abstract double Bid {get;}

Return Value

double

Examples

1
2
3
4
 protected override void OnTick()
 {
     Print("Bid Price: {0}", Symbol.Bid);
 }

Spread

Summary

Gets the current spread of this symbol.

Remarks

The difference between the Ask and the Bid price for the symbol.(seeand )

Signature

1
public abstract double Spread {get;}

Return Value

double

Examples

1
2
3
4
 protected override void OnTick()
 {
     Print("The Spread of the symbol is: {0}", Symbol.Spread);
 }

PipSize

Summary

Gets the pip size for current symbol.

Signature

1
public abstract double PipSize {get;}

Return Value

double

Examples

1
2
3
4
 protected override void OnTick()
 {
     Print("The current symbol has pip size of: {0}", Symbol.PipSize);
 }

Digits

Summary

Gets the number of digits for the symbol.

Signature

1
public abstract int Digits {get;}

Return Value

int

Examples

1
2
3
4
 protected override void OnTick()
 {
     Print("The number of Digits the current symbol  has is: {0}", Symbol.Digits);
 }

TickSize

Summary

Gets the tick size for the current symbol.

Remarks

If the symbol is a 5 digit symbol, the tick size is 0.00001.

Signature

1
public abstract double TickSize {get;}

Return Value

double

Examples

1
2
3
4
 protected override void OnTick()
 {
     Print("The current symbol has TickSize: {0}", Symbol.TickSize);
 }

VolumeInUnitsMin

Summary

Gets the minimum tradable amount.

Signature

1
public abstract double VolumeInUnitsMin {get;}

Return Value

double

Examples

1
2
3
4
 if(volume < Symbol.VolumeInUnitsMin)
 {
     Print("The minimum volume is {0}", Symbol.VolumeInUnitsMin);
 }

VolumeInUnitsMax

Summary

Gets the maximum tradable amount.

Signature

1
public abstract double VolumeInUnitsMax {get;}

Return Value

double

Examples

1
2
3
4
5
 if(Symbol.NormalizeVolumeInUnits(volume, RoundingMode.Down) <= Symbol.VolumeInUnitsMax)
 {
     volume = Symbol.NormalizeVolumeInUnits(volume, RoundingMode.Down);
     ExecuteMarketOrder(TradeType.Buy, Symbol, volume);
 }

VolumeInUnitsStep

Summary

Gets the minimum trade amount increment.

Signature

1
public abstract double VolumeInUnitsStep {get;}

Return Value

double

Examples

1
2
3
4
 if(volume + Symbol.VolumeInUnitsStep <= Symbol.VolumeInUnitsMax)
 {
     volume += Symbol.VolumeInUnitsStep;
 }

PipValue

Summary

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.

Signature

1
public abstract double PipValue {get;}

Return Value

double

Examples

1
 var volume = ((Account.Balance*Risk)/StopLoss)/Symbol.PipValue;

TickValue

Summary

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.

Signature

1
public abstract double TickValue {get;}

Return Value

double

Examples

1
 var volume = ((Account.Balance*Risk)/StopLoss)/Symbol.TickValue;

LotSize

Summary

Gets the size of 1 lot in units of the base currency.

Signature

1
public abstract long LotSize {get;}

Return Value

long

UnrealizedNetProfit

Summary

Gets the sum of the unrealized Net profits of the positions of this Symbol.

Signature

1
public abstract double UnrealizedNetProfit {get;}

Return Value

double

UnrealizedGrossProfit

Summary

Gets the sum of the unrealized Gross profits of the positions of this Symbol

Signature

1
public abstract double UnrealizedGrossProfit {get;}

Return Value

double

BaseAsset

Summary

Gets the symbol base asset.

Signature

1
public abstract Asset BaseAsset {get;}

Return Value

Asset

QuoteAsset

Summary

Gets the symbol quote asset.

Signature

1
public abstract Asset QuoteAsset {get;}

Return Value

Asset

PnLConversionFeeRate

Summary

Gets the symbol profit and loss conversion fee rate.

Signature

1
public abstract double PnLConversionFeeRate {get;}

Return Value

double

Commission

Summary

Gets the amount of base commission for the symbol.

Signature

1
public abstract double Commission {get;}

Return Value

double

CommissionType

Summary

Gets the symbol base commission calculation type.

Signature

1
public abstract SymbolCommissionType CommissionType {get;}

Return Value

SymbolCommissionType

MinCommission

Summary

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.

Signature

1
public abstract double MinCommission {get;}

Return Value

double

MinCommissionAsset

Summary

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.

Signature

1
public abstract Asset MinCommissionAsset {get;}

Return Value

Asset

MinCommissionType

Summary

Gets the symbol minimum commission type.Use this property to interpret MinCommission value.

Signature

1
public abstract SymbolMinCommissionType MinCommissionType {get;}

Return Value

SymbolMinCommissionType

AdministrativeCharge3DaysRollover

Summary

Gets the Day of the week (in UTC) when Administrative Fee charge amount will be tripled.Only applicable for SWAP free trading accounts.

Signature

1
public abstract DayOfWeek? AdministrativeCharge3DaysRollover {get;}

Return Value

DayOfWeek?

AdministrativeCharge

Summary

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.

Signature

1
public abstract double AdministrativeCharge {get;}

Return Value

double

GracePeriod

Summary

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.

Signature

1
public abstract int GracePeriod {get;}

Return Value

int

SwapLong

Summary

Gets the SWAP charge for long positions of the symbol.

Signature

1
public abstract double SwapLong {get;}

Return Value

double

SwapShort

Summary

Gets the SWAP charge for short positions of the symbol.

Signature

1
public abstract double SwapShort {get;}

Return Value

double

Swap3DaysRollover

Summary

Gets the Day of the week when Symbol SWAP charge amount will be tripled.

Signature

1
public abstract DayOfWeek? Swap3DaysRollover {get;}

Return Value

DayOfWeek?

SwapCalculationType

Summary

Gets the symbol SWAP calculation type.

Signature

1
public abstract SymbolSwapCalculationType SwapCalculationType {get;}

Return Value

SymbolSwapCalculationType

IsTradingEnabled

Summary

Gets If trading is enabled or not for the symbol.

Signature

1
public abstract bool IsTradingEnabled {get;}

Return Value

bool

TradingMode

Summary

Gets symbol trading mode.

Signature

1
public abstract SymbolTradingMode TradingMode {get;}

Return Value

SymbolTradingMode

MinDistanceType

Summary

Gets the symbol minimum distances type.

Signature

1
public abstract SymbolMinDistanceType MinDistanceType {get;}

Return Value

SymbolMinDistanceType

MinTakeProfitDistance

Summary

Gets symbol minimum take profit distance.Use MinDistanceType for interpretation.

Signature

1
public abstract double MinTakeProfitDistance {get;}

Return Value

double

MinStopLossDistance

Summary

Gets symbol minimum stop loss distance.Use MinDistanceType for interpretation.

Signature

1
public abstract double MinStopLossDistance {get;}

Return Value

double

DynamicLeverage

Summary

Gets the dynamic leverage tiers for the symbol.

Signature

1
public abstract IReadonlyList<LeverageTier> DynamicLeverage {get;}

Return Value

IReadonlyList

Examples

1
2
 var symbolLeverage = Symbol.DynamicLeverage[0].Leverage;
 var realLeverage = Math.Min(symbolLeverage, Account.Leverage);

MarketHours

Summary

Gets access to the symbol's trading sessions schedule.

Signature

1
public abstract MarketHours MarketHours {get;}

Return Value

MarketHours

Code

Signature

1
public abstract string Code {get;}

Return Value

string

PointSize

Signature

1
public abstract double PointSize {get;}

Return Value

double

VolumeMin

Signature

1
public abstract long VolumeMin {get;}

Return Value

long

VolumeMax

Signature

1
public abstract long VolumeMax {get;}

Return Value

long

VolumeStep

Signature

1
public abstract long VolumeStep {get;}

Return Value

long

Leverage

Signature

1
public abstract int Leverage {get;}

Return Value

int

PreciseLeverage

Signature

1
public abstract double PreciseLeverage {get;}

Return Value

double

Events

Tick

Summary

Occurs on each incoming symbol ticks

Signature

1
public abstract event Action<SymbolTickEventArgs> Tick;

See Also