Общие вопросы по разработке > Узнать текущее количество денег

Общие вопросы по разработке в Альфа-Директ 4. Обсуждение разработки пользовательских индикаторов, стратегий.
BugsDigger
Сообщения: 332
Зарегистрирован: 11 ноя 2018, 17:11
Благодарил (а): 21 раз
Поблагодарили: 41 раз

Узнать текущее количество денег

Непрочитанное сообщение BugsDigger » 18 ноя 2018, 10:30

Привет всем.

Как-то не смог найти в документации, как узнать текущее кол-во свободных денег (в том числе в тестировании).
Например, купил (м.б. не на всё)/продал (м.б. не всё), хочу посмотреть, что вышло в итоге.

Кто-нибудь в курсе?

Balalayka
Сообщения: 38
Зарегистрирован: 21 сен 2018, 10:57
Благодарил (а): 2 раза
Поблагодарили: 3 раза

Re: Узнать текущее количество денег

Непрочитанное сообщение Balalayka » 19 ноя 2018, 11:43

В качестве предположения.
Возможно вам нужно сравнить весь объем денег:
var money = GetCurrencyPosition(RazdelGroupType.MICEX);
RazdelGroupType– тип рынка,
• MICEX – Рынок ценных бумаг
• FORTS – ФОРТС
• SELT – Валютный рынок

и объем денег занятый в позиции:
var position = GetPosition();
position.Price – учетная цена
position.LongPosition – позиция Long (положительная величина)
position.ShortPosition – позиция Short (положительная величина)
position.Position – позиция по инструменту (положительная – позиция long, отрицательная – short)

BugsDigger
Сообщения: 332
Зарегистрирован: 11 ноя 2018, 17:11
Благодарил (а): 21 раз
Поблагодарили: 41 раз

Re: Узнать текущее количество денег

Непрочитанное сообщение BugsDigger » 19 ноя 2018, 13:23

Спасибо за отклик.

Попробую что-то в этом духе...
А неужели нет просто ф-ции, возвращающей текущие наличные в портфеле ?.. Вроде это нечто базовое, не выверт же какой-то.

BugsDigger
Сообщения: 332
Зарегистрирован: 11 ноя 2018, 17:11
Благодарил (а): 21 раз
Поблагодарили: 41 раз

Re: Узнать текущее количество денег

Непрочитанное сообщение BugsDigger » 13 дек 2018, 19:53

> GetCurrencyPosition

В тестировании робота эта ф-ция всегда возвращает 0, несмотря на то, что в параметрах тестирования начальный капитал задается в явном виде...

Понятно, что в тестировании лезть за реальным кол-вом денег м.б. и не очень правильно, но можно, например, ввести специальное обозначение рынка RazdelGroupType.TEST, чтобы читать текущие виртуальные деньги в процессе тестирования.

Ну а на данный момент вопрос остается, но м.б. в другой формулировке: как в тестировании узнать финансовый результат после закрытия позиции?

AP_Bor
Сообщения: 167
Зарегистрирован: 18 дек 2017, 08:18
Благодарил (а): 11 раз
Поблагодарили: 7 раз

Re: Узнать текущее количество денег

Непрочитанное сообщение AP_Bor » 13 дек 2018, 23:19

Доброго времени суток, BugsDigger
BugsDigger писал(а):> GetCurrencyPosition
Ну а на данный момент вопрос остается, но м.б. в другой формулировке: как в тестировании узнать финансовый результат после закрытия позиции?
Возможно не понял вашего вопроса, но чем не устраивают GetMoney(), RealizedPL()?
С наилучшими пожеланиями

Аватара пользователя
evge
Администратор
Сообщения: 1641
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 62 раза
Поблагодарили: 294 раза
Контактная информация:

Re: Узнать текущее количество денег

Непрочитанное сообщение evge » 14 дек 2018, 07:03

AP_Bor писал(а):но чем не устраивают GetMoney()


Наверное тем что эту функцию забыли описать в документации :)
никогда такого не было и вот опять

AP_Bor
Сообщения: 167
Зарегистрирован: 18 дек 2017, 08:18
Благодарил (а): 11 раз
Поблагодарили: 7 раз

Re: Узнать текущее количество денег

Непрочитанное сообщение AP_Bor » 14 дек 2018, 09:33

Доброго времени суток, evge
evge писал(а):Наверное тем что эту функцию забыли описать в документации :)
► Показать
"Герои не ищут легких путей" - Для многих важен не результат, а путь пройденный к вершине(результату), но каждый выбирает его для себя сам.:)

Спасибо, понял, но поздно.;)
С наилучшими пожеланиями

BugsDigger
Сообщения: 332
Зарегистрирован: 11 ноя 2018, 17:11
Благодарил (а): 21 раз
Поблагодарили: 41 раз

Re: Узнать текущее количество денег

Непрочитанное сообщение BugsDigger » 14 дек 2018, 20:19

>> чем не устраивают GetMoney()
> Наверное тем, что эту функцию забыли описать в документации

Да, похоже именно этим. В остальном - хорошая ф-ция. :D
Спасибо за информацию.

BugsDigger
Сообщения: 332
Зарегистрирован: 11 ноя 2018, 17:11
Благодарил (а): 21 раз
Поблагодарили: 41 раз

Re: Узнать текущее количество денег

Непрочитанное сообщение BugsDigger » 15 дек 2018, 17:08

> хорошая ф-ция

На самом деле плохая ф-ция: в тестировании читаются нули, хотя параметр тестирования "Начальный капитал"=10000. :(

function Initialize()
{
...
AddGlobalVariable("Cnt", Types.Int, 0);
AddGlobalVariable("MoneyStart", Types.Double, 0.0);
AddGlobalVariable("Money", Types.Double, 0.0);
}

function OnUpdate()
{
if(Cnt==0)
{
MoneyStart=GetMoney();
LogFile=String.Format("D:\\ADdebug\\{0} Period={1} Np={2:F2} Nc={3:F2} TP={4:F3}.txt", StrategyName, Period, Np, Nc, Target);
WriteLine(LogFile, String.Format("MoneyStart: {0}", MoneyStart));
}
Cnt++;
Money=GetMoney();
...
WriteLine(LogFile, String.Format("{0:dd/MM/yy} {1}", BarDate(), BarTime()));
WriteLine(LogFile, String.Format("Price:{0:F2} PriceDer:{1:F2} PriceInd:{2:F2} Cap:{3:F2} CapInd:{4:F2} Money:{5}",
Price, PriceDer, PriceInd, Cap, CapInd, Money));
}

Лог:
MoneyStart: 0 // при первом вызове
11.12.18 10:00:00 // при последующих вызовах
Price:192,32 PriceDer:0,04 PriceInd:0,00 Cap:55922,40 CapInd:0,00 Money:0
11.12.18 10:03:00
Price:192,56 PriceDer:0,20 PriceInd:0,10 Cap:173145,50 CapInd:46889,24 Money:0

В чем проблема? У вас в режиме тестирования это точно работает?..

> чем не устраивают RealizedPL()?

"RealizedPL() – возвращает текущий реализованный доход по закрытым сделкам." (в деньгах, AFAIUI)
ОК, но сколько это %% по отношению к исходной сумме?
Правильно, 100*RealizedPL()/GetMoney(на старте).
Но GetMoney-то почему-то в тестировании 0...

AP_Bor
Сообщения: 167
Зарегистрирован: 18 дек 2017, 08:18
Благодарил (а): 11 раз
Поблагодарили: 7 раз

Re: Узнать текущее количество денег

Непрочитанное сообщение AP_Bor » 15 дек 2018, 20:25

Доброго времени суток, BugsDigger
BugsDigger писал(а):> хорошая ф-ция

На самом деле плохая ф-ция:
У меня сейчас нет времени, искать, когда-то она показывала "Money" сейчас "PL" (изменилась точка отсчета, была GetMoney() ==> RealizedPLAfterCommission()) или вам нужно еще, поищите или обратитесь к разработчикам.
Видите, и evge предупреждал, что функция может быть не стабильной.
evge писал(а):Наверное тем что эту функцию забыли описать в документации :)
Но:
► Показать
Удачных поисков. :)
Демонстрация плавного превращения GetMoney() в RealizedPLAfterCommission()
► Показать
С наилучшими пожеланиями
Последний раз редактировалось AP_Bor 24 янв 2019, 21:47, всего редактировалось 1 раз.


Вернуться в «Общие вопросы по разработке»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 8 гостей