• Библиотека pyd в C# может полноценно использоваться?

    iamserge
    @iamserge Автор вопроса
    Дмитрий Шицков, Ура я их нашел, однако ... Что тут точка входа не то чтобы прямо понял:

    from datetime import datetime
    #from MetaTrader5 import *
    import MetaTrader5
    from pytz import timezone
    import time
    import os
    import types
    
    
    for i in dir(MetaTrader5): print (i)


    C
    MT5CopyRatesFrom
    MT5CopyRatesFromPos
    MT5CopyRatesRange
    MT5CopyTicksFrom
    MT5CopyTicksRange
    MT5Initialize
    MT5Rate
    MT5Shutdown
    MT5TerminalInfo
    MT5Tick
    MT5Version
    MT5WaitForTerminal
    MT5_COPY_TICKS_ALL
    MT5_COPY_TICKS_INFO
    MT5_COPY_TICKS_TRADE
    MT5_TICK_FLAG_ASK
    MT5_TICK_FLAG_BID
    MT5_TICK_FLAG_BUY
    MT5_TICK_FLAG_LAST
    MT5_TICK_FLAG_SELL
    MT5_TICK_FLAG_VOLUME
    MT5_TIMEFRAME_D1
    MT5_TIMEFRAME_H1
    MT5_TIMEFRAME_H12
    MT5_TIMEFRAME_H2
    MT5_TIMEFRAME_H3
    MT5_TIMEFRAME_H4
    MT5_TIMEFRAME_H6
    MT5_TIMEFRAME_H8
    MT5_TIMEFRAME_M1
    MT5_TIMEFRAME_M10
    MT5_TIMEFRAME_M12
    MT5_TIMEFRAME_M15
    MT5_TIMEFRAME_M2
    MT5_TIMEFRAME_M20
    MT5_TIMEFRAME_M3
    MT5_TIMEFRAME_M30
    MT5_TIMEFRAME_M4
    MT5_TIMEFRAME_M5
    MT5_TIMEFRAME_M6
    MT5_TIMEFRAME_MON1
    MT5_TIMEFRAME_W1
    __builtins__
    __cached__
    __doc__
    __file__
    __loader__
    __name__
    __package__
    __path__
    __spec__
  • Библиотека pyd в C# может полноценно использоваться?

    iamserge
    @iamserge Автор вопроса
    Дмитрий Шицков, Так уже проще... На счет имен я понял, осталось судя по всему просто понять как это делается тут потому что точно такое же уже было для C++ у кого то но в целом судя по всему их метод не подходит для поиска имен функций. А для python я его пока не нашел ... Не верится прямо что оно вот так вот заработает ... как будто бы в Python можно вот так вот:

    from datetime import datetime
    from MetaTrader5 import *
    from pytz import timezone
    import time
    import os
    import types
    
    print(dir(yourmodule))


    На деле вообще не работает, ошибка
    NameError: name 'MetaTrader5' is not defined
  • Библиотека pyd в C# может полноценно использоваться?

    iamserge
    @iamserge Автор вопроса
    Дмитрий Шицков, Хм, я примерно понял хотя пока не получилось ... вроде dir должен помочь прямо в python но не работает ... тут еще __init__.py есть, а там кстати константы всякие... Странно как то пытаться без них, ведь вроде бы они ему нужны даже не смотря на то что это самостоятельная DLL?

    # timeframes
    MT5_TIMEFRAME_M1 = 1
    MT5_TIMEFRAME_M2 = 2
    MT5_TIMEFRAME_M3 = 3
    MT5_TIMEFRAME_M4 = 4
    MT5_TIMEFRAME_M5 = 5
    MT5_TIMEFRAME_M6 = 6
    MT5_TIMEFRAME_M10 = 10
    MT5_TIMEFRAME_M12 = 12
    MT5_TIMEFRAME_M15 = 15
    MT5_TIMEFRAME_M20 = 20
    MT5_TIMEFRAME_M30 = 30
    MT5_TIMEFRAME_H1 = 1 | 0x4000
    MT5_TIMEFRAME_H2 = 2 | 0x4000
    MT5_TIMEFRAME_H4 = 4 | 0x4000
    MT5_TIMEFRAME_H3 = 3 | 0x4000
    MT5_TIMEFRAME_H6 = 6 | 0x4000
    MT5_TIMEFRAME_H8 = 8 | 0x4000
    MT5_TIMEFRAME_H12 = 12 | 0x4000
    MT5_TIMEFRAME_D1 = 24 | 0x4000
    MT5_TIMEFRAME_W1 = 1 | 0x8000
    MT5_TIMEFRAME_MON1 = 1 | 0xC000
    # tick copy flags
    MT5_COPY_TICKS_ALL = -1
    MT5_COPY_TICKS_INFO = 1
    MT5_COPY_TICKS_TRADE = 2
    # tick flags
    MT5_TICK_FLAG_BID = 0x02
    MT5_TICK_FLAG_ASK = 0x04
    MT5_TICK_FLAG_LAST = 0x08
    MT5_TICK_FLAG_VOLUME = 0x10
    MT5_TICK_FLAG_BUY = 0x20
    MT5_TICK_FLAG_SELL = 0x40
    # import C methods to our module
    from .C import *
  • Библиотека pyd в C# может полноценно использоваться?

    iamserge
    @iamserge Автор вопроса
    Дмитрий Шицков, Но вот код

    private void Button1_Click(object sender, EventArgs e)
            {
    
                MT5Initialize();
                MT5WaitForTerminal();
                LogList.AppendText(MT5TerminalInfo());
                LogList.AppendText(MT5Version());
                MT5Shutdown();
    
            }


    Выдает ошибку... Не может он найти какую то точку входа, хотя все что использовал я подключил. Все скомпилировалось, но после клика по кнопке вот оно как:

    System.EntryPointNotFoundException: "Не удается найти точку входа "MT5Initialize" в DLL "C:\Users\SERGEY\Desktop\EVO\bin\Debug\mt5.pyd"."
  • Библиотека pyd в C# может полноценно использоваться?

    iamserge
    @iamserge Автор вопроса
    Дмитрий Шицков, Однако ... ОНО включилось, то есть скомпилировалось вот таким путем:

    ... 
    using System.Runtime.InteropServices;
    
    namespace EVO
    {
    
        public partial class Form1 : Form
        {
            [DllImport("C:\\Users\\SERGEY\\Desktop\\EVO\\bin\\Debug\\mt5.pyd", CharSet = CharSet.Auto)]
            static extern void MT5Initialize(string path = "None");
    ...


    То есть оно у меня как бы есть, осталось теперь понять как запустить хотя бы что нибудь ... Так как написал я это "компиляцией" 100500 советов из Google но не понял толком вообще ничерта
  • Библиотека pyd в C# может полноценно использоваться?

    iamserge
    @iamserge Автор вопроса
    Дмитрий Шицков, Я вот то же самое прочитал и так и не понял как ее в Visual Studio правильно "упковать"... Хотя я с DLL вообще дел не имел до этого, может поэтому не понимаю ничего ...
  • Библиотека pyd в C# может полноценно использоваться?

    iamserge
    @iamserge Автор вопроса
    Да очень может быть, но я не знаю как распаковать pyd => пригодный для чтения файл т.к. весь код находится там ...

    Ну и вариант с сервисом через python тут как раз в любом случае появляется (чем бы он ни был) - просто потому что не получается ЭТО написать на C#. Ну и еще потому что оно очень кратко и лаконично доступно для написания на Python, то есть там буквально строк 20 чтобы все работало.

    Минус только один - мне еще за одним сервисом следить, то есть python 3.X + скрипт ... Раньше то было проще, ну то есть просто программа на C# ничего не требовало внимания. А тут вот еще одна "нагрузка", именно поэтому появилось обостренное желание совместить все, чтобы не сократить траты времени потом.

    Вообще видимо получилось бы .pyd => читаемый файл хотя бы, я бы может уже смог бы и повторить все на самом деле. Т.к. из python все и правда чудно подключается и работает без вообще всякого дополнения самой программы.
  • Как сделать событие таймера в Python?

    iamserge
    @iamserge Автор вопроса
    Сказочно просто, я аж не ожидал что заработает, чуть сюда не вляпался:
    https://habr.com/ru/post/176067/
  • Как сделать событие таймера в Python?

    iamserge
    @iamserge Автор вопроса
    Спасибо, вроде заработало ... Правда бы как то его теперь по хоткею что ли "убить" ...
  • Как сделать событие таймера в Python?

    iamserge
    @iamserge Автор вопроса
    А она ведь под Windows работает? А то вроде установил, однако

    import inotify.adapters

    Traceback (most recent call last):
    File "C:/Users/SERGEY/Desktop/MT5TEST.py", line 5, in
    import inotify.adapters
    File "C:\Users\SERGEY\AppData\Local\Programs\Python\Python37-32\lib\site-packages\inotify\adapters.py", line 11, in
    import inotify.calls
    File "C:\Users\SERGEY\AppData\Local\Programs\Python\Python37-32\lib\site-packages\inotify\calls.py", line 4, in
    import inotify.library
    File "C:\Users\SERGEY\AppData\Local\Programs\Python\Python37-32\lib\site-packages\inotify\library.py", line 8, in
    instance = ctypes.cdll.LoadLibrary(_FILEPATH)
    File "C:\Users\SERGEY\AppData\Local\Programs\Python\Python37-32\lib\ctypes\__init__.py", line 442, in LoadLibrary
    return self._dlltype(name)
    File "C:\Users\SERGEY\AppData\Local\Programs\Python\Python37-32\lib\ctypes\__init__.py", line 364, in __init__
    self._handle = _dlopen(self._name, mode)
    OSError: [WinError 126] Не найден указанный модуль
  • C# - как выбрать хранилище данных в памяти?

    iamserge
    @iamserge Автор вопроса
    Честно сказать впечатляет немного, пытаюсь пока осмыслить. После <?php array(); ?> это знаете не так прост осилить ...
  • C# - как выбрать хранилище данных в памяти?

    iamserge
    @iamserge Автор вопроса
    Роман Мирр, Ну я образно про SELECT, чтобы понятно было что хочу делать без сложных описаний
  • C# - как выбрать хранилище данных в памяти?

    iamserge
    @iamserge Автор вопроса
    Роман Мирр, Ну там не так буквально, то есть у меня 20Мб и мне их нельзя никак не учитывать. Но я могу текстом вывести самые важные расчеты.

    А график из всего этого для наглядности, например я близкие точки просто уберу, еще поищу способы сокращения точек на графике и он станет всего 0,5 - 1 Мб в итоге, но на нем будет наглядно видно что получилось. Ну расчеты при этом само собой по всем данным, иначе у меня не расчеты а черти что получится, условно примерное, но нафиг не нужное.

    Да и по графику такой плотности понимать точные цифры вообще не возможно, но все же он нужен для наглядности.
  • C# - как выбрать хранилище данных в памяти?

    iamserge
    @iamserge Автор вопроса
    Ну тут как раз не совсем так, мне старые состояния не очень нужны. Да и память не так сильно расходуется, все же 20Мб это в наше время не какие то заоблачные цифры. Даже у принтера и то больше =)

    Но вообще судя по всему пока по отзывам в C# эти самые списки лидируют ... У меня в целом самый приоритет, за быстры перебор и изменение данных. То есть мне надо по ним пройтись, многие поменять и отрисовать график. А их всего около 250к, а график ждать не хочет, то есть надо быстро делать это ...

    Я могу не перебирать каждый раз все, а штук по 500 перебирать. Но это значит, что мне предварительно их нужно отфильтровать по содержанию. Ну вроде SELECT * FROM list WHERE 1000 > XVAL > 100

    Но понятно дело это тоже на за "бесплатно" в рамках ресурсов, запрос тоже потребует их. А делать это надо опять же быстро, чтобы график не показывал все с паузами по минуте или подобно ...
  • C# - как выбрать хранилище данных в памяти?

    iamserge
    @iamserge Автор вопроса
    Leving, Переделал заработало, спасибо! Я им уже пользовался раньше, надеюсь сработает он быстро ...
  • C# - как выбрать хранилище данных в памяти?

    iamserge
    @iamserge Автор вопроса
    Leving, Да я вот как бы пробую, правда непонятно что за ошибка появилась:

    class FinanceDate
    {

    public DateTime VALX { get; set; }
    public double BID { get; set; }
    public double ASK { get; set; }
    public double LossSummary { get; set; }

    }
    public static List ActiveXML = new List();


    Такой ошибки со словарями не было ..

    Ошибка CS0052 Несогласованность по доступности: доступность типа поля "List" ниже доступности поля "Form1.ActiveXML" ...\Form1.cs


    То есть это один из вариантов, спасибо что напомнили. Как заработает потестирую его пожалуй
  • C# + MySQL как быть с необходимыми средствами или отказаться от него?

    iamserge
    @iamserge Автор вопроса
    alekseyHunter, Хоть на этом радость какая то, вообще по вашей ссылке у меня скачался установщик, который предлагает судя по всему вообще все необходиое. Хотя конечно знаком он мне мало, может придется ни за первый раз это освоить ... Ну да ладно, хотя бы так. Концов ведущих к MYSQL прямо не видать из текущей среды, даже Oracle пишут в комплекте устаревший и надо обновлять, что как бы намекает о чем они пекутся больше всего и что обновляют лучше ...

    Не то, чтобы я не догадывался, но все таки ....
  • C# + MySQL как быть с необходимыми средствами или отказаться от него?

    iamserge
    @iamserge Автор вопроса
    Мда, на счет булевких как то не очень ... Я как раз из за того, что время и булевые переменные строки, не могу уже "бодаться" с этим файлом, его приходится конвертировать предварительно, а он есть место =(

    И да, 10Гб неплохо, но чуть маловато ... 25 ГБ, чтобы вообще собрать все в кучу, рассчитать как хочешь и не морочить голову, так сказать не чистить архивы и не мучать себя такими вопросами о том удалять мне что либо или нет ...

    Ну или на крайний случай, как то сделать побольше БД, тогда хватит вроде ... Мда, MySQL просто сказка ведь всегда был, столько в него влазило и так просто было с ним.
  • C# + MySQL как быть с необходимыми средствами или отказаться от него?

    iamserge
    @iamserge Автор вопроса
    alekseyHunter, То есть мне его все равно надо даже несмотря на то что я уже качаю MS SQL Server и MS SQL MS? Драйвер все равно нужен???