Swing trading, Technical indicators, Technical trading, Trading algorithms, Trading education, Trading psychology, Trading platforms, Trading signals software, Trading tip, Trading tutorials.
Position - an uncompleted trading operation (unfinished deal). When changing the quotation of a financial instrument, the position keeps a record of the client’s funds (for write-off and crediting).
This section describes properties and methods for working with positions
It sends a request to the server to check if there are enough funds to open a position
We send a request to change an open position.
There are two options for calling a method:
int Positions.Modify(positionId, takeProfit, stopLoss, isJustCheck = false, isAsync = false) |
Input parameters:
Parameters | Type | Description |
positionId | int | Position unique identifier |
takeProfit | double | Take profit. Price level in quoted currency for profit fixing |
stopLoss | double | Stop Loss. Price level in quoted currency for fixing losses. |
isJustCheck | bool | Check mode (enabled or disabled). When the mode is enabled, a request to open a position is not sent, but only the possibility of opening with such parameters is checked. Disabled by default = false |
isAsync | bool | Asynchronous mode (enabled or disabled). Disabled by default = false |
int Positions.Modify(ref position, isJustCheck = false, isAsync = false) |
Input parameters:
Parameters | Type | Description |
position | ModifyPositionOperation | An object that contains all the parameters of the operation to change the position |
isJustCheck | bool | Check mode (enabled or disabled). When the mode is enabled, a request to open a position is not sent, but only the possibility of opening with such parameters is checked. Disabled by default = false |
isAsync | bool | Asynchronous mode (enabled or disabled). Disabled by default = false |
Return value
If isJustCheck = true, it returns the result code of the operation:
0 | Check for the possibility of opening was successful. Check occurs on the client side |
-1 | Check failed |
If isAsync = false (synchronous mode by default), it returns the result code of the operation:
0 | Position has been successfully modified |
Error code | If an error occurs, it returns the server error code |
If isAsync = true (asynchronous mode)
0 | Position has been successfully modified |
Error code | If an error occurs, it returns the server error code |
//----------------------------------------------------------- // We modify stoploss and takeprofit of the position //----------------------------------------------------------- private void ModifyPosition(int positionId) { string line = "ModifyPosition: " + DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss:fff"); Position pos = Positions.Find(positionId); if (pos != null) { double takeProfit = Math.Round(pos.OpenPrice + 4000 / Math.Pow(10, Symbol.Digits), Symbol.Digits); double stopLoss = Math.Round(pos.OpenPrice - 4000 / Math.Pow(10, Symbol.Digits), Symbol.Digits); int err = Positions.Modify(pos.PositionId, takeProfit, stopLoss); if (err == 0) { line = line + Environment.NewLine + " Symbol = " + Symbol.SymbolName + Environment.NewLine + " Commission = " + pos.Commission.ToString() + Environment.NewLine + " Margin = " + pos.Margin.ToString() + Environment.NewLine + " OpenDate = " + pos.OpenDate.ToString("dd.MM.yyyy HH:mm:ss:fff") + Environment.NewLine + " OpenPrice = " + pos.OpenPrice.ToString() + Environment.NewLine + " Label = " + pos.Label + Environment.NewLine + " TakeProfit = " + takeProfit.ToString() + Environment.NewLine + " StopLoss = " + stopLoss.ToString() + Environment.NewLine + " Swap = " + pos.Swap.ToString() + Environment.NewLine + " PositionId = " + pos.PositionId.ToString() + Environment.NewLine + " PositionType = " + pos.PositionType.ToString() + Environment.NewLine + " Profit = " + pos.Profit.ToString() + Environment.NewLine; } else { line = line + " Failed, ServerErrorCode = " + err.ToString() + Environment.NewLine; } } else { line = line + " Position not found " + Environment.NewLine; } using (StreamWriter sw = new StreamWriter(mOnTickLog, true)) sw.WriteLine(line); |