search Ничего не найдено
Главная Документация по алготрейдингу Торговые операции Позиции

Positions.Modify

Посылаем запрос на изменение открытой позиции.

Есть два варианта вызова метода:

int Positions.Modify(positionId, takeProfit, stopLoss, isJustCheck = false, isAsync = false)

Входные параметры

Параметры
Тип
Описание
positionId
int
Уникальный идентификатор позиции
takeProfit
double
Тейк профит. Уровень цены в котируемой валюте для фиксации прибыли.
stopLoss
double
Стоп лосс. Уровень цены в котируемой валюте для фиксации убытков.
isJustCheck
bool
Режим проверки (включен или выключен). При включенном режиме запрос на открытие позиции не отправляется, а только проверяется возможность открытия с такими параметрами.
По умолчанию выключен
= false
isAsync
bool
Асинхронный режим (включен или выключен).
По умолчанию выключен
= false


int Positions.Modify(ref position, isJustCheck = false, isAsync = false)

Входные параметры

Параметры
Тип
Описание
position
Объект, который содержит все параметры операции для изменения позиции
isJustCheck
bool
Режим проверки (включен или выключен). При включенном режиме запрос на изменение позиции не отправляется, а только проверяется возможность изменения с такими параметрами.
По умолчанию выключен
= false
isAsync
bool
Асинхронный режим (включен или выключен).
По умолчанию выключен
= false


Возвращаемое значение

При isJustCheck = true, возвращает код результата выполнения операции: 

0
Проверка на возможность изменения позиции прошла успешно. Проверка происходит на стороне клиента
-1
Проверка не прошла


При isAsync = false (синхронный режим по умолчанию), возвращает код результата выполнения операции: 

0
Позиция успешно модифицирована
В случае, если произошла ошибка возвращает код ошибки сервера


При isAsync = true (асинхронный режим)

0
Позиция успешно модифицирована
В случае, если произошла ошибка возвращает код ошибки сервера


Пример:

//-----------------------------------------------------------
// Модифицируем стоплосс и тейкпрофит у позиции
//-----------------------------------------------------------
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);
}


Подпишитесь на нашу рассылку и будьте в курсе всех новостей!