Парсинг json по API и запись в файлы...
Цитата: Евгений от 24.12.2022, 12:22Всем доброго времени! Рискну попросить, вдруг кому-то для практики будет интересно, а может просто кто-то на помощь откликнется 🙂 в мире не без добрых людей же! 🙂
Суть программы я описывал уже (чуть больше месяца назад), но я сам хотел её написать, но совсем не зная языков, у меня на это очень много времени уйдет, да и не факт, что я смогу, в силу того, что на изучение языка надо выделять не мало времени, а его, как всегда не хватает...
[spoiler title="Так вот, в чём собственно задача:"] Надо получить данные с биржи, а именно котировки и их цены, пример: "symbol":"ADAUSDT","price":"0.33570". По этой ссылке можно получить актуальные данные с биржи, они там представлены в одну строку, json формат. Далее нужно рассчитать объём в монетах, исходя из желаемого объема в USDT. Что бы понятнее было, обратимся к примеру выше, получится следующее: цена монеты 0.33570, желаемый объем 1000$, значит 1000$ / 0.33570 = 2 978,85 монет и так надо сделать 5 расчётов (например для 1000$ для 500$, 250$, 100$, 3000$) своего рода мини калькулятор получился. Далее надо получившиеся данные (2 978,85 и ещё 4) записать в файл, точнее отредактировать имеющийся файл, который относится к этой монете (у каждой монеты свой файл, монет около 170). Файл формата ".xml" следующего вида:
[spoiler title="BINAD.CCUR_FUT.ADAUSDT_Settings_76D4O.xml"]<?xml version="1.0" encoding="utf-8"?> <Settings> <DOM> <FilledAt Value="1500000" /> <AutoScroll Value="True" /> <ScrollStepTurbo Value="100" /> <StringHeight Value="10" /> <BigAmount Value="1500000" /> <HugeAmount Value="3000000" /> <PlayBigAmount Value="False" /> <PlayHugeAmount Value="False" /> <RulerDataType Value="2" /> <FindIcebergOrders Value="False" /> <PlayIcebergOrders Value="False" /> <IcebergSuspectedFrom Value="999999" /> <IcebergFactor Value="2" /> <Focus_TSpreadFTick Value="True" /> <FatLevelsFactor Value="50" /> <SlimLevelsFactor Value="10" /> <PanelWidth Value="126" /> <UserLevels Value="" /> <UserSignalPriceLevels Value="" /> <PlayUserSignalPriceLevels Value="True" /> </DOM> <TICK_PANEL> <ShowTicksFrom Value="8500" /> <HideFilteredTicks Value="True" /> <TicksStyle Value="DotsLines" /> <TicksWeight Value="1" /> <SumTicks_Period Value="250" /> <PanelWidth Value="81" /> <BigAmount Value="999999" /> <PlayBigAmount Value="False" /> </TICK_PANEL> <CLUSTER_PANEL> <FilledAt Value="4000000" /> <ShowClusterPanel Value="True" /> <TimeFrame Value="5" /> <GridWidth Value="288" /> <ClusterStyleText Value="Summ" /> <ClusterStyleColor Value="BlackBalance" /> <PanelWidth Value="30" /> </CLUSTER_PANEL> <COMMON_PANEL> <PriceAggregationStep Value="2" /> <PriceAggregationFactor Value="1" /> <MaxAmountZeroDigits Value="0" /> <ReduceAmountThousands Value="True" /> <ShowAdditiveCursor Value="True" /> </COMMON_PANEL> <TRADING> <First_WorkAmount Value="2 978" /> //строки с теми самыми объёмами <Second_WorkAmount Value="1 489" /> <Third_WorkAmount Value="744" /> <Fourth_WorkAmount Value="297" /> <Fifth_WorkAmount Value="8 936" /> <ActiveWorkAmountKey Value="5" /> <IsWorkAmountInMoneyMode Value="True" /> <ThrowLimitTo Value="100" /> <StopLoss_Steps Value="0" /> <TakeProfit_Steps Value="0" /> <StopLimitOrdersThrowRange Value="0" /> <StopOrdersThrowRange Value="0" /> <IsServerStopOrders Value="True" /> <StopOrdersMethod_TPricesFTick Value="False" /> <AveragingMethod Value="Dispatcher" /> <PlaySoundOnTrade Value="True" /> <ShowProfitType Value="2" /> </TRADING> </Settings>[/spoiler]
Вообще, было бы очень круто и удобно, если сделать программу с таким "интерфейсом" и по аналогии настройку ещё для 16 строк (ну это я конечно губу раскатал!), все настройки хранятся в том файле .xml, но тут уже надо более точно объяснять для каждой строки какие должны быть значения и расчеты, могу в целом видео записать, если вдруг кого заинтересует, ну или просто описать... [/spoiler]
Благодарю за уделенное время!
Всем доброго времени! Рискну попросить, вдруг кому-то для практики будет интересно, а может просто кто-то на помощь откликнется 🙂 в мире не без добрых людей же! 🙂
Суть программы я описывал уже (чуть больше месяца назад), но я сам хотел её написать, но совсем не зная языков, у меня на это очень много времени уйдет, да и не факт, что я смогу, в силу того, что на изучение языка надо выделять не мало времени, а его, как всегда не хватает...
[spoiler title="BINAD.CCUR_FUT.ADAUSDT_Settings_76D4O.xml"]
<?xml version="1.0" encoding="utf-8"?>
<Settings>
<DOM>
<FilledAt Value="1500000" />
<AutoScroll Value="True" />
<ScrollStepTurbo Value="100" />
<StringHeight Value="10" />
<BigAmount Value="1500000" />
<HugeAmount Value="3000000" />
<PlayBigAmount Value="False" />
<PlayHugeAmount Value="False" />
<RulerDataType Value="2" />
<FindIcebergOrders Value="False" />
<PlayIcebergOrders Value="False" />
<IcebergSuspectedFrom Value="999999" />
<IcebergFactor Value="2" />
<Focus_TSpreadFTick Value="True" />
<FatLevelsFactor Value="50" />
<SlimLevelsFactor Value="10" />
<PanelWidth Value="126" />
<UserLevels Value="" />
<UserSignalPriceLevels Value="" />
<PlayUserSignalPriceLevels Value="True" />
</DOM>
<TICK_PANEL>
<ShowTicksFrom Value="8500" />
<HideFilteredTicks Value="True" />
<TicksStyle Value="DotsLines" />
<TicksWeight Value="1" />
<SumTicks_Period Value="250" />
<PanelWidth Value="81" />
<BigAmount Value="999999" />
<PlayBigAmount Value="False" />
</TICK_PANEL>
<CLUSTER_PANEL>
<FilledAt Value="4000000" />
<ShowClusterPanel Value="True" />
<TimeFrame Value="5" />
<GridWidth Value="288" />
<ClusterStyleText Value="Summ" />
<ClusterStyleColor Value="BlackBalance" />
<PanelWidth Value="30" />
</CLUSTER_PANEL>
<COMMON_PANEL>
<PriceAggregationStep Value="2" />
<PriceAggregationFactor Value="1" />
<MaxAmountZeroDigits Value="0" />
<ReduceAmountThousands Value="True" />
<ShowAdditiveCursor Value="True" />
</COMMON_PANEL>
<TRADING>
<First_WorkAmount Value="2 978" /> //строки с теми самыми объёмами
<Second_WorkAmount Value="1 489" />
<Third_WorkAmount Value="744" />
<Fourth_WorkAmount Value="297" />
<Fifth_WorkAmount Value="8 936" />
<ActiveWorkAmountKey Value="5" />
<IsWorkAmountInMoneyMode Value="True" />
<ThrowLimitTo Value="100" />
<StopLoss_Steps Value="0" />
<TakeProfit_Steps Value="0" />
<StopLimitOrdersThrowRange Value="0" />
<StopOrdersThrowRange Value="0" />
<IsServerStopOrders Value="True" />
<StopOrdersMethod_TPricesFTick Value="False" />
<AveragingMethod Value="Dispatcher" />
<PlaySoundOnTrade Value="True" />
<ShowProfitType Value="2" />
</TRADING>
</Settings>
Вообще, было бы очень круто и удобно, если сделать программу с таким "интерфейсом" и по аналогии настройку ещё для 16 строк (ну это я конечно губу раскатал!), все настройки хранятся в том файле .xml, но тут уже надо более точно объяснять для каждой строки какие должны быть значения и расчеты, могу в целом видео записать, если вдруг кого заинтересует, ну или просто описать... [/spoiler]
Благодарю за уделенное время!
Цитата: Viсtor от 27.01.2023, 23:59Привет 👋. Я сделал прототип(концептуальный) вот ссылка. Единственное я выгрузку пока не делал. Так как не понял нужно предустановленные значение сохранить в xml или конкретно введённые. Так как твой шаблон xml относится к настройкам другой программы возникают вопросы. По порядку:
- Где лежат относительно exe XML файлы
- Если их нет, надо создать?
- Если надо создать использовать шаблон из темы с заменой вычислений First_WorkAmount и т.д.?P.S. Программа долго запускается, так как я не заморачивался пока с асинхронной загрузкой данных. И если возможно, обратная связь не помешала бы, т.к. это мой учебный проект по wpf.
Привет 👋. Я сделал прототип(концептуальный) вот ссылка. Единственное я выгрузку пока не делал. Так как не понял нужно предустановленные значение сохранить в xml или конкретно введённые. Так как твой шаблон xml относится к настройкам другой программы возникают вопросы. По порядку:
- Где лежат относительно exe XML файлы
- Если их нет, надо создать?
- Если надо создать использовать шаблон из темы с заменой вычислений First_WorkAmount и т.д.?
P.S. Программа долго запускается, так как я не заморачивался пока с асинхронной загрузкой данных. И если возможно, обратная связь не помешала бы, т.к. это мой учебный проект по wpf.
Цитата: Евгений от 28.01.2023, 08:39Цитата: Viсtor от 27.01.2023, 23:59Привет 👋. Я сделал прототип(концептуальный) вот ссылка. Единственное я выгрузку пока не делал. Так как не понял нужно предустановленные значение сохранить в xml или конкретно введённые. Так как твой шаблон xml относится к настройкам другой программы возникают вопросы. По порядку:
- Где лежат относительно exe XML файлы
- Если их нет, надо создать?
- Если надо создать использовать шаблон из темы с заменой вычислений First_WorkAmount и т.д.?P.S. Программа долго запускается, так как я не заморачивался пока с асинхронной загрузкой данных. И если возможно, обратная связь не помешала бы, т.к. это мой учебный проект по wpf.
@farmv Доброго времени, благодарю! Но в целом я уже на Windows forms сделал, то что мне надо было... Точнее в процессе, основное уже есть по большей степени.
Что касается вопросов:
- .xml да, шаблон к настройкам другой программы, .exe может лежать прям в папке с .xml, либо же можно сделать textBox для динамического пути.
- Если их нет, то создаются .xml по верхнему шаблону для каждой монеты.
- Можно сначала создать без замены всех значений First_WorkAmount и т.д. А можно при создании сразу же произвести замену значений на ту, которая получится при расчётах (рабочий объём / на цену монеты и округленная до шага).
Цитата: Viсtor от 27.01.2023, 23:59Привет 👋. Я сделал прототип(концептуальный) вот ссылка. Единственное я выгрузку пока не делал. Так как не понял нужно предустановленные значение сохранить в xml или конкретно введённые. Так как твой шаблон xml относится к настройкам другой программы возникают вопросы. По порядку:
- Где лежат относительно exe XML файлы
- Если их нет, надо создать?
- Если надо создать использовать шаблон из темы с заменой вычислений First_WorkAmount и т.д.?P.S. Программа долго запускается, так как я не заморачивался пока с асинхронной загрузкой данных. И если возможно, обратная связь не помешала бы, т.к. это мой учебный проект по wpf.
@farmv Доброго времени, благодарю! Но в целом я уже на Windows forms сделал, то что мне надо было... Точнее в процессе, основное уже есть по большей степени.
Что касается вопросов:
- .xml да, шаблон к настройкам другой программы, .exe может лежать прям в папке с .xml, либо же можно сделать textBox для динамического пути.
- Если их нет, то создаются .xml по верхнему шаблону для каждой монеты.
- Можно сначала создать без замены всех значений First_WorkAmount и т.д. А можно при создании сразу же произвести замену значений на ту, которая получится при расчётах (рабочий объём / на цену монеты и округленная до шага).
Цитата: Viсtor от 28.01.2023, 12:05Евгений, Привет ещё раз. Так 🤔 "например для 1000$ для 500$, 250$, 100$, 3000$" везде эти расчёты? Оставить возможность редактировать суммы для отдельных монет? В ближайшее время доделаю.
Евгений, Привет ещё раз. Так 🤔 "например для 1000$ для 500$, 250$, 100$, 3000$" везде эти расчёты? Оставить возможность редактировать суммы для отдельных монет? В ближайшее время доделаю.
Цитата: Евгений от 28.01.2023, 12:45Цитата: Viсtor от 28.01.2023, 12:05Евгений, Привет ещё раз. Так 🤔 "например для 1000$ для 500$, 250$, 100$, 3000$" везде эти расчёты? Оставить возможность редактировать суммы для отдельных монет? В ближайшее время доделаю.
Для отдельных монет особо наверно смысла нет, там уж как ты захочешь 🙂
Главная задача была вот тут вводим суммы/рабочие объёмы и каждая сумма делится на цену каждой монеты, полученные значения присваиваются в переменные First_WorkAmount, Second_WorkAmount, Third_WorkAmount, Fourth_WorkAmount, Fifth_WorkAmount и далее заменяют значения в xml файлах (у каждой монеты свой файл), где "BINAD.CCUR_FUT.ADAUSDT_Settings_76D4O.xml" маска имени файла.
Цитата: Viсtor от 28.01.2023, 12:05Евгений, Привет ещё раз. Так 🤔 "например для 1000$ для 500$, 250$, 100$, 3000$" везде эти расчёты? Оставить возможность редактировать суммы для отдельных монет? В ближайшее время доделаю.
Для отдельных монет особо наверно смысла нет, там уж как ты захочешь 🙂
Главная задача была вот тут вводим суммы/рабочие объёмы и каждая сумма делится на цену каждой монеты, полученные значения присваиваются в переменные First_WorkAmount, Second_WorkAmount, Third_WorkAmount, Fourth_WorkAmount, Fifth_WorkAmount и далее заменяют значения в xml файлах (у каждой монеты свой файл), где "BINAD.CCUR_FUT.ADAUSDT_Settings_76D4O.xml" маска имени файла.
Цитата: Евгений от 02.02.2023, 08:58Доброго, всем, времен! Эту тему, по идее, можно закрывать. Так как я для себя написал, не без помощи конечно :), то что хотел. Просто тут вопрос к @farmv, он вроде бы как это делает в роли учебного проекта по wpf...
Доброго, всем, времен! Эту тему, по идее, можно закрывать. Так как я для себя написал, не без помощи конечно :), то что хотел. Просто тут вопрос к @farmv, он вроде бы как это делает в роли учебного проекта по wpf...
Цитата: Евгений от 03.02.2023, 13:00Цитата: Viсtor от 03.02.2023, 03:08Евгений, Привет. Я заметался просто 😅, завтра к вечеру выложу.
Привет, ещё раз! Та тебя же в шею ни кто не гонит 🙂 вообще не парься, пиши в удовольствие, когда захочешь 🙂
Цитата: Viсtor от 03.02.2023, 03:08Евгений, Привет. Я заметался просто 😅, завтра к вечеру выложу.
Привет, ещё раз! Та тебя же в шею ни кто не гонит 🙂 вообще не парься, пиши в удовольствие, когда захочешь 🙂
Цитата: Viсtor от 03.02.2023, 23:33Евгений, Вот ссылка на MVP. Основной функционал вроде работает. Что не успел доделать просто скрыл(в исходниках барахло всякое весит). Кнопка открытия директории внизу находится.
Евгений, Вот ссылка на MVP. Основной функционал вроде работает. Что не успел доделать просто скрыл(в исходниках барахло всякое весит). Кнопка открытия директории внизу находится.
Цитата: Евгений от 04.02.2023, 10:00Цитата: Viсtor от 03.02.2023, 23:33Евгений, Вот ссылка на MVP. Основной функционал вроде работает. Что не успел доделать просто скрыл(в исходниках барахло всякое весит). Кнопка открытия директории внизу находится.
Отлично! 👍 Теперь у меня есть пример чёткого когда 🤝 я совсем новичок в этом деле, будет полезно! Потому как у меня код написан просто тупо в одном файле(но он полностью рабочий, пока это главное) не используя инкапсуляцию и прочие сокращения/упрощения, всё время пытаюсь чем-то дополнить, получается уже около 2к строк кода, но там очень много повторений, по сути его можно сократить процентов на 30 точно...
Цитата: Viсtor от 03.02.2023, 23:33Евгений, Вот ссылка на MVP. Основной функционал вроде работает. Что не успел доделать просто скрыл(в исходниках барахло всякое весит). Кнопка открытия директории внизу находится.
Отлично! 👍 Теперь у меня есть пример чёткого когда 🤝 я совсем новичок в этом деле, будет полезно! Потому как у меня код написан просто тупо в одном файле(но он полностью рабочий, пока это главное) не используя инкапсуляцию и прочие сокращения/упрощения, всё время пытаюсь чем-то дополнить, получается уже около 2к строк кода, но там очень много повторений, по сути его можно сократить процентов на 30 точно...