Вы должны войти, чтобы создавать сообщения и темы.

Парсинг json по API и запись в файлы...

Всем доброго времени! Рискну попросить, вдруг кому-то для практики будет интересно, а может просто кто-то на помощь откликнется 🙂 в мире не без добрых людей же! 🙂
Суть программы я описывал уже (чуть больше месяца назад), но я сам хотел её написать, но совсем не зная языков, у меня на это очень много времени уйдет, да и не факт, что я смогу, в силу того, что на изучение языка надо выделять не мало времени, а его, как всегда не хватает...

Так вот, в чём собственно задача:
Надо получить данные с биржи, а именно котировки и их цены, пример: "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>


Вообще, было бы очень круто и удобно, если сделать программу с таким "интерфейсом" и по аналогии настройку ещё для 16 строк (ну это я конечно губу раскатал!), все настройки хранятся в том файле .xml, но тут уже надо более точно объяснять для каждой строки какие должны быть значения и расчеты, могу в целом видео записать, если вдруг кого заинтересует, ну или просто описать... [/spoiler]
Благодарю за уделенное время!

Привет 👋. Я сделал прототип(концептуальный) вот ссылка. Единственное я выгрузку пока не делал. Так как не понял нужно предустановленные значение сохранить в xml или конкретно введённые. Так как твой шаблон xml относится к настройкам другой программы возникают вопросы. По порядку:
- Где лежат относительно exe XML файлы
- Если их нет, надо создать?
- Если надо создать использовать шаблон из темы с заменой вычислений First_WorkAmount и т.д.?

P.S. Программа долго запускается, так как я не заморачивался пока с асинхронной загрузкой данных. И если возможно, обратная связь не помешала бы, т.к. это мой учебный проект по wpf.

Лайкнул Евгений
Евгений
Цитата: 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 и т.д. А можно при создании сразу же произвести замену значений на ту, которая получится при расчётах (рабочий объём / на цену монеты и округленная до шага).

Евгений, Привет ещё раз. Так 🤔  "например для 1000$ для 500$, 250$, 100$, 3000$" везде эти расчёты? Оставить возможность редактировать суммы для отдельных монет? В ближайшее время доделаю.

Цитата: 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" маска имени файла.

Доброго, всем, времен! Эту тему, по идее, можно закрывать. Так как я для себя написал, не без помощи конечно :), то что хотел. Просто тут вопрос к @farmv, он вроде бы как это делает в роли учебного проекта по wpf...

Евгений, Привет. Я заметался просто 😅, завтра к вечеру выложу.

Цитата: Viсtor от 03.02.2023, 03:08

Евгений, Привет. Я заметался просто 😅, завтра к вечеру выложу.

Привет, ещё раз! Та тебя же в шею ни кто не гонит 🙂 вообще не парься, пиши в удовольствие, когда захочешь 🙂

Евгений, Вот ссылка на MVP. Основной функционал вроде работает. Что не успел доделать просто скрыл(в исходниках барахло всякое весит). Кнопка открытия директории внизу находится.

Лайкнул Евгений
Евгений
Цитата: Viсtor от 03.02.2023, 23:33

Евгений, Вот ссылка на MVP. Основной функционал вроде работает. Что не успел доделать просто скрыл(в исходниках барахло всякое весит). Кнопка открытия директории внизу находится.

Отлично! 👍 Теперь у меня есть пример чёткого когда 🤝 я совсем новичок в этом деле, будет полезно! Потому как у меня код написан просто тупо в одном файле(но он полностью рабочий, пока это главное) не используя инкапсуляцию и прочие сокращения/упрощения, всё время пытаюсь чем-то дополнить, получается уже около 2к строк кода, но там очень много повторений, по сути его можно сократить процентов на 30 точно...

Лайкнул Viсtor
Viсtor