Общие вопросы по разработке > Узнать текущее количество денег
-
- Сообщения: 535
- Зарегистрирован: 11 ноя 2018, 17:11
- Благодарил (а): 21 раз
- Поблагодарили: 92 раза
Узнать текущее количество денег
Привет всем.
Как-то не смог найти в документации, как узнать текущее кол-во свободных денег (в том числе в тестировании).
Например, купил (м.б. не на всё)/продал (м.б. не всё), хочу посмотреть, что вышло в итоге.
Кто-нибудь в курсе?
Как-то не смог найти в документации, как узнать текущее кол-во свободных денег (в том числе в тестировании).
Например, купил (м.б. не на всё)/продал (м.б. не всё), хочу посмотреть, что вышло в итоге.
Кто-нибудь в курсе?
-
- Сообщения: 38
- Зарегистрирован: 21 сен 2018, 10:57
- Благодарил (а): 2 раза
- Поблагодарили: 3 раза
Re: Узнать текущее количество денег
В качестве предположения.
Возможно вам нужно сравнить весь объем денег:
var money = GetCurrencyPosition(RazdelGroupType.MICEX);
RazdelGroupType– тип рынка,
• MICEX – Рынок ценных бумаг
• FORTS – ФОРТС
• SELT – Валютный рынок
и объем денег занятый в позиции:
var position = GetPosition();
position.Price – учетная цена
position.LongPosition – позиция Long (положительная величина)
position.ShortPosition – позиция Short (положительная величина)
position.Position – позиция по инструменту (положительная – позиция long, отрицательная – short)
Возможно вам нужно сравнить весь объем денег:
var money = GetCurrencyPosition(RazdelGroupType.MICEX);
RazdelGroupType– тип рынка,
• MICEX – Рынок ценных бумаг
• FORTS – ФОРТС
• SELT – Валютный рынок
и объем денег занятый в позиции:
var position = GetPosition();
position.Price – учетная цена
position.LongPosition – позиция Long (положительная величина)
position.ShortPosition – позиция Short (положительная величина)
position.Position – позиция по инструменту (положительная – позиция long, отрицательная – short)
-
- Сообщения: 535
- Зарегистрирован: 11 ноя 2018, 17:11
- Благодарил (а): 21 раз
- Поблагодарили: 92 раза
Re: Узнать текущее количество денег
Спасибо за отклик.
Попробую что-то в этом духе...
А неужели нет просто ф-ции, возвращающей текущие наличные в портфеле ?.. Вроде это нечто базовое, не выверт же какой-то.
Попробую что-то в этом духе...
А неужели нет просто ф-ции, возвращающей текущие наличные в портфеле ?.. Вроде это нечто базовое, не выверт же какой-то.
-
- Сообщения: 535
- Зарегистрирован: 11 ноя 2018, 17:11
- Благодарил (а): 21 раз
- Поблагодарили: 92 раза
Re: Узнать текущее количество денег
> GetCurrencyPosition
В тестировании робота эта ф-ция всегда возвращает 0, несмотря на то, что в параметрах тестирования начальный капитал задается в явном виде...
Понятно, что в тестировании лезть за реальным кол-вом денег м.б. и не очень правильно, но можно, например, ввести специальное обозначение рынка RazdelGroupType.TEST, чтобы читать текущие виртуальные деньги в процессе тестирования.
Ну а на данный момент вопрос остается, но м.б. в другой формулировке: как в тестировании узнать финансовый результат после закрытия позиции?
В тестировании робота эта ф-ция всегда возвращает 0, несмотря на то, что в параметрах тестирования начальный капитал задается в явном виде...
Понятно, что в тестировании лезть за реальным кол-вом денег м.б. и не очень правильно, но можно, например, ввести специальное обозначение рынка RazdelGroupType.TEST, чтобы читать текущие виртуальные деньги в процессе тестирования.
Ну а на данный момент вопрос остается, но м.б. в другой формулировке: как в тестировании узнать финансовый результат после закрытия позиции?
-
- Сообщения: 170
- Зарегистрирован: 18 дек 2017, 08:18
- Благодарил (а): 12 раз
- Поблагодарили: 8 раз
Re: Узнать текущее количество денег
Доброго времени суток, BugsDigger
С наилучшими пожеланиями
Возможно не понял вашего вопроса, но чем не устраивают GetMoney(), RealizedPL()?BugsDigger писал(а):> GetCurrencyPosition
Ну а на данный момент вопрос остается, но м.б. в другой формулировке: как в тестировании узнать финансовый результат после закрытия позиции?
С наилучшими пожеланиями
- evge
- Администратор
- Сообщения: 1813
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 369 раз
- Контактная информация:
Re: Узнать текущее количество денег
AP_Bor писал(а):но чем не устраивают GetMoney()
Наверное тем что эту функцию забыли описать в документации

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

Спасибо, понял, но поздно.

С наилучшими пожеланиями
-
- Сообщения: 535
- Зарегистрирован: 11 ноя 2018, 17:11
- Благодарил (а): 21 раз
- Поблагодарили: 92 раза
Re: Узнать текущее количество денег
>> чем не устраивают GetMoney()
> Наверное тем, что эту функцию забыли описать в документации
Да, похоже именно этим. В остальном - хорошая ф-ция.
Спасибо за информацию.
> Наверное тем, что эту функцию забыли описать в документации
Да, похоже именно этим. В остальном - хорошая ф-ция.

Спасибо за информацию.
-
- Сообщения: 535
- Зарегистрирован: 11 ноя 2018, 17:11
- Благодарил (а): 21 раз
- Поблагодарили: 92 раза
Re: Узнать текущее количество денег
> хорошая ф-ция
На самом деле плохая ф-ция: в тестировании читаются нули, хотя параметр тестирования "Начальный капитал"=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...
На самом деле плохая ф-ция: в тестировании читаются нули, хотя параметр тестирования "Начальный капитал"=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...
-
- Сообщения: 170
- Зарегистрирован: 18 дек 2017, 08:18
- Благодарил (а): 12 раз
- Поблагодарили: 8 раз
Re: Узнать текущее количество денег
Доброго времени суток, BugsDigger
Видите, и evge предупреждал, что функция может быть не стабильной.Удачных поисков.
Демонстрация плавного превращения GetMoney() в RealizedPLAfterCommission()
С наилучшими пожеланиями
У меня сейчас нет времени, искать, когда-то она показывала "Money" сейчас "PL" (изменилась точка отсчета, была GetMoney() ==> RealizedPLAfterCommission()) или вам нужно еще, поищите или обратитесь к разработчикам.BugsDigger писал(а):> хорошая ф-ция
На самом деле плохая ф-ция:
Видите, и evge предупреждал, что функция может быть не стабильной.
Но:evge писал(а):Наверное тем что эту функцию забыли описать в документации
► Показать

Демонстрация плавного превращения GetMoney() в RealizedPLAfterCommission()
► Показать
Последний раз редактировалось AP_Bor 24 янв 2019, 21:47, всего редактировалось 1 раз.
Вернуться в «Общие вопросы по разработке»
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 31 гость