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

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

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

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

Спасибо за информацию.

> AddGlobalVariable("log", Types.String, @"C:\ADebug\out_"+ DateTime.Now.ToString("yyMMdd_HHmmss") + ".txt");

А что это за синтаксис такой с собакой? В документации такого нет.
Где-то можно о нем прочесть? И где еще его можно применить в мирных целях?

> Action

То же самое. :-)
Выходит, можно какую-то даже локальную подпрограмму соорудить.
Как тогда насчет её параметров и возвращаемого значения? (хотя бы теоретически)
Или это что-то стандартное для .NET (с которым я никогда не работал)?

> RealizedPLAfterCommission()

Хмм... Тонкий намек на то, что документированная RealizedPL не учитывает комиссию?..

> обратитесь к разработчикам

К сожалению, вероятность ответа оттуда обычно стремится к нулю. :(

---------------------------------------------------
Просмотр дизассемблированной MTS дает следующие реализации ф-ций:

.method public hidebysig newslot virtual instance float64 GetMoney() cil managed
{
IL_0000: ldarg.0
IL_0001: call instance float64 MTS.MTSWorker::get_StartCapital()
IL_0006: ret
} // end of method MTSWorker::GetMoney

.method public hidebysig virtual instance float64 GetMoney() cil managed
{
IL_0000: ldarg.0
IL_0001: call instance float64 MTS.MTSWorker::get_ProfitLossAfterCommission()
IL_0006: ret
} // end of method MTSWorkerTesting::GetMoney

Судя по именам, первое - для реальной торговли (или базовый класс для нее), второе - перекрытый метод для тестирования.
Видно, что в тестировании вместо начального количества денег берется почему-то РЕЗУЛЬТАТ торговли. Даже если каким-то волшебством это есть правильное значение (что сомнительно), то оно появляется только после операции. А на старте (где мне хочется знать объем запускаемых денег) результаты нулевые из-за отсутствия этих самых операций.

---------------------------------
Еще раз о том, чего хочу добиться.
При внутредневной торговле прекратить операции после достижения целевой прибыли (в % по отношению к исходной сумме в начале дня) с учетом накладных расходов. Для этого в тестировании хочу знать начальную сумму. Вроде всё просто, но как-то не вытанцовывается...
Последний раз редактировалось BugsDigger 16 дек 2018, 21:50, всего редактировалось 2 раза.

Аватара пользователя
Indigo-On
Сообщения: 48
Зарегистрирован: 28 ноя 2018, 18:44
Откуда: Russia
Благодарил (а): 18 раз
Поблагодарили: 9 раз

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

Непрочитанное сообщение Indigo-On » 16 дек 2018, 21:39

BugsDigger писал(а):> AddGlobalVariable("log", Types.String, @"C:\ADebug\out_"+ DateTime.Now.ToString("yyMMdd_HHmmss") + ".txt");
А что это за синтаксис такой с собакой? В документации такого нет.
Где-то можно о нем прочесть? И где еще его можно применить в мирных целях?

https://docs.microsoft.com/ru-ru/dotnet/csharp/programming-guide/strings/

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

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

Непрочитанное сообщение BugsDigger » 16 дек 2018, 21:42

ОК, спасибо за ссылку.
Что вы думаете насчет моих "раскопок" в MTS.dll ?

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

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

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

Доброго времени суток, BugsDigger
BugsDigger писал(а):А что это за синтаксис такой с собакой? В документации такого нет.
Где-то можно о нем прочесть? И где еще его можно применить в мирных целях?
Можно применить в мирных целях:
@ — буквальный идентификатор
Action
► Показать
BugsDigger писал(а):Выходит, можно какую-то даже локальную подпрограмму соорудить.
Как тогда насчет её параметров и возвращаемого значения? (хотя бы теоретически)
Или это что-то стандартное для .NET (с которым я никогда не работал)?
► Показать
BugsDigger писал(а):> RealizedPLAfterCommission()

Хмм... Тонкий намек на то, что документированная RealizedPL не учитывает комиссию?..
Терминал 4.0. Скрипты пользовательских индикаторов и стратегий
RealizedPLAfterCommission () – возвращает текущий реализованный доход по закрытым сделкам робота после вычета всех комиссий (стратегии).
BugsDigger писал(а):> обратитесь к разработчикам

К сожалению, вероятность ответа оттуда обычно стремится к нулю. :(
Здесь, я точно ничем не могу помочь.;)
BugsDigger писал(а):Просмотр дизассемблированной MTS дает следующие реализации ф-ций:
У меня к вам дружеский совет, не трогайте вы ildasm, решайте свои задачи, а править код, почетная обязанность разработчиков.
Или вам есть, мало, что я сказал, и вы решили взять еще, ну так что, вам хватило :) - (из еврейской народной мудрости, но полностью не помню).
Продолжу.
Indigo-On писал(а): ...ковыряется в API с дебаггером наперевес...
Зачем вам "атомный реактор", если вы батарейку в фонарик хотите поставить.
Задача любого программиста поиск оптимальных решений и упрощение вычислительных задач.
Для получения данных, вы ищете функцию(формулу), а вы попробуйте используя известные, чтобы получить необходимые, потом ...
BugsDigger писал(а):Судя по именам, первое - для реальной торговли (или базовый класс для нее), второе - перекрытый метод для тестирования.
А я что другое говорил ;) , но вы почти не о том или не туда и это тема другого форума.
► Показать
► Показать
С наилучшими пожеланиями
Последний раз редактировалось AP_Bor 17 дек 2018, 00:34, всего редактировалось 1 раз.

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

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

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

Привет, AP_Bor, спасибо за отклик.

> @ — буквальный идентификатор
> Action

Понятно. Негусто (без параметров и возвращаемого значения), но можно и такое приспособить при случае.

> Терминал 4.0. Скрипты пользовательских индикаторов и стратегий

Ха, да это новая версия (v.1.19 31.10.2018), в старой (у меня v.1.13 27.09.2017) этого нет!
Честно сказать, этот "продвинутый" плиточный стиль на https://www.alfadirect.ru/obuchenie - полная туфта для документации (IMHO). Не видно ни номеров версий документов, ни дат выпуска... Выходит, я должен их каждый день качать и проверять текущую версию?..

Если бы кто-то из более продвинутых и/или приближенных к разработчикам людей анонсировал бы на форуме новые версии что-ли.
Или на официальном сайте показывали даты/версии вместо слепых имен документов (вряд ли они станут на это заморачиваться; о том, что будет вестись history изменений в документации я вообще даже не заикаюсь).

> не трогайте вы ildasm, <...>, а править код - почетная обязанность разработчиков

Ну, я как неофит, имею зуд - это раз, а второе - я не с целью править что-то (думаю, это и невозможно), а чтобы разобраться в причине проблемы, в особенности в обстановке практически полного отсутствия информации/feedback.

> Задача любого программиста

Задачи программистов мне известны, т.к. я успешно программирую более 30 лет. :ugeek:

> вы ищете функцию(формулу), а вы попробуйте используя известные

Я как раз и попробовал (безрезультатно) все известные, прежде чем спрашивать.
------------------
А вопрос по-прежнему такой: как в режиме тестирования при внутридневной торговле после закрытия позиции узнать, что достигнут заданный % прибыли (убытка) по отношению к исходной сумме в начале дня. Только и всего. Есть работающее решение через известные ф-ции? Даже лайка не пожалею. ;) RealizedPLAfterCommission - это прекрасно, но где взять базу для вычисления %? GetMoney в тестировании не работает должным образом, причину этого мне, кажется, даже удалось выяснить.
------------------
> Не сорите лайками

Вот уж не думал, что это какой-то особо ценный ресурс. :D

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

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

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

Доброго времени суток, BugsDigger
BugsDigger писал(а):Понятно. Негусто (без параметров и возвращаемого значения), но можно и такое приспособить при случае.
Почитайте еще Делегаты Там много чего есть ;) .
BugsDigger писал(а):Ха, да это новая версия (v.1.19 31.10.2018), в старой (у меня v.1.13 27.09.2017) этого нет!
FileVersionInfo.FileVersion
BugsDigger писал(а):...Честно сказать, этот "продвинутый" плиточный стиль...
► Показать
BugsDigger писал(а):... полная туфта для документации (IMHO). Не видно ни номеров версий документов, ни дат выпуска... Выходит, я должен их каждый день качать и проверять текущую версию?...
Ну и взялись за публикацию номеров версий и дат выпуска. Без обид, вашего стажа для этого хватит. ;)
Возраст - это болезнь, которая быстро проходит, главное, чтоб до его окончания было кому передать накопленный опыт. :)(не помню откуда)
BugsDigger писал(а):... т.к. я успешно программирую более 30 лет. ...
"Кто-то из более продвинутых" перечислит различия, из более приближенных подскажет как использовать. И это будет уже какой-то особо ценный ресурс.
► Показать
BugsDigger писал(а):... а второе - я не с целью править что-то (думаю, это и невозможно) ...
А первое правило говорит, если у тебя все работает, ничего не меняй, даже не меняй.;)Я говорил, Не туда смотрите.
BugsDigger писал(а):... А вопрос по-прежнему такой: как в режиме тестирования при внутридневной торговле после закрытия позиции узнать, что достигнут заданный % прибыли (убытка)...
А вы пробовали поискать, например как один из вариантов.
Stop_SO_Signal.ads писал(а):

Код: Выделить всё

// Стартовый капитал = максимальная позиция * стартовая цена
BugsDigger писал(а):Вот уж не думал, что это какой-то особо ценный ресурс.
Нет конечно не ценный и уж точно не ресурс, хотя каждый труд должен иметь свою цену и приятно видеть, что твой труд ценят. Я хотел предложить удочку, а получилось продал рыбу, а лайки ставьте, если есть за что.
Благодарность нужна, благодарящему.(не помню откуда)
► Показать
С наилучшими пожеланиями

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

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

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

> Ну и взялись за публикацию номеров версий и дат выпуска

viewtopic.php?f=5&t=462

> как один из вариантов.
> Стартовый капитал = максимальная позиция * стартовая цена

Да, для теста приемлемо.
Два момента:
1. лишний код, предназначенный исключительно для тестирования, т.к. я буду вынужден следить за суммой после каждой сделки (через RealizedPLAfterCommission по всей видимости, другого способа получить такую элементарную цифру, как текущее кол-во денег, не видно);
2. придется каждый раз модифицировать текст для реальной работы.

Сейчас я просто тупо захардкодил исходную сумму, ставлю такую же в тесте (+имею упомянутый выше п.1) . Если забыть о последующем переходе к реалу (пункт 2), этого достаточно.

А так просто поверить трудно, что такая очевидная (да еще и недокументированная вдобавок) ф-ция, как GetMoney. не работает как положено в тестировании...

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

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

Непрочитанное сообщение AP_Bor » 17 дек 2018, 12:18

Доброго времени суток, BugsDigger
BugsDigger писал(а):viewtopic.php?f=5&t=462
Зачет и лайк,
BugsDigger писал(а):А так просто поверить трудно, что такая очевидная (да еще и недокументированная вдобавок) ф-ция, как GetMoney. не работает как положено в тестировании...
Она потому и недокументированная.
Вариантов, как минимум два.
Первый:
► Показать
Второй:
Подумать, а так ли нам важен стартовый(доступный) капитал, может хватит вложенного(использованного)?
BugsDigger писал(а):Только и всего. Есть работающее решение через известные ф-ции? Даже лайка не пожалею. ;)
Ну не учить мне вас как получить процент от суммы.;)
Лайк, зажал или удочка мала. :lol:
С наилучшими пожеланиями