М
Миша01 грудня 2017 р. 02:38

Ввод кода в проект через окно проекта

Здравствуйте.

Можно в QT вводить код через виджет и выполнять измененные методы?
Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Стабільний хостинг, на якому розміщується соціальна мережа EVILEG. Для проектів на Django радимо VDS хостинг.

Вам це подобається? Поділіться в соціальних мережах!

16
BlinCT
  • 01 грудня 2017 р. 02:49

Добрый день.
Вы хотите выполнять измененные методы какие? В каком коде?

    М
    • 01 грудня 2017 р. 02:58

    Изменения расчета. Изменения примерно в таком методе

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
     
    void MainWindow::StrategyCod() //код стратегии
    {
      for (int NMA=5;NMA<1000;NMA=NMA+50)//3-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      {
          //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
          int NOpenPosition=0; //число открытых позиций
          double Profit=0;
          double PriceEnter,PriceExit; //цена входа и выхода
          QDate DateOpenPosition; //Дата открытия позиции
          //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
        //int NMA=20;//период ma
        QVector<double> SMA(NBar); //ma
        for(long long bar = NMA; bar <NBar; bar++) //ma
        {
            double Summa=0;//summa
            for(long long i=bar-NMA;i<bar;i++)//summa
            {
                Summa=Summa+Close[i];
            }
            SMA[bar]=Summa/NMA;
        }
     
     
        for(long long bar = NMA; bar <NBar; bar++)//основной цикл
        {
         if (NOpenPosition!=0)//2-------------------------------------------------------------------------------------------------------------------------------------------------------
             {
                 if ((Close[bar-1]<SMA[bar-1])&&(Close[bar]>SMA[bar]))
                 {
                     PriceExit=Close[bar]-qrand()%MaxSlippage; //цена закрытия позиции
                     if (PriceEnter>High[bar]){PriceEnter=High[bar];}
                     if (PriceEnter<Low[bar]){PriceEnter=Low[bar];}
                     NOpenPosition=NOpenPosition-1;
                     Profit=PriceEnter-PriceExit-Commission;
                 }
             }
         else//1--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
             {
                 if ((Close[bar-1]>SMA[bar-1])&&(Close[bar]<SMA[bar]))
                 {
                     PriceEnter=Close[bar]+qrand()%MaxSlippage; //цена открытия позиции  //покупка
                     if (PriceEnter>High[bar]){PriceEnter=High[bar];}
                     if (PriceEnter<Low[bar]){PriceEnter=Low[bar];}
                     NOpenPosition=NOpenPosition+1;
                     DateOpenPosition=Date[bar];
                 }
             }
         //1---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
        }//2------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    qDebug()<<NMA;
    qDebug()<<Profit;
    qDebug()<<QDateTime::currentDateTime();
      }//3------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    }
      Evgenii Legotckoi
      • 03 грудня 2017 р. 16:11

      C++ - это компилируемый язык, а не интерпретируемый. Его не получится выполнять в качестве скрипта в рамках программы.

      Но то что вы хотите сделать возможно в рамках Qt. Сам я не такого не делал, но функционал имеется.
      Qt имеет функционал по интерпретации JavaScript, то есть фактически можно выполнять как JavaScript, который будет выполнять определённый расчеты, а также даже создавать объекты в рамках программы. Но проблема в том, что это тема ещё более сложная, чем построение графиков.

      Насколько знаю, за такой функционал отвечает QJSEngine в Qt .
        М
        • 04 грудня 2017 р. 02:44

        Еще как вариант, создание библиотеки. Я создал в QT проект библиотеке и в срр написал

        StrategyCod::StrategyCod()
        {
            qDebug()<<"Проверка работы";
        }
        Скажите пожалуйста, что делать дальше с этим проектом? Как его превратить в библиотеку? И как потом корректировать эту библиотеку?
          Evgenii Legotckoi
          • 04 грудня 2017 р. 03:00
          • (відредаговано)

          Какое создание библиотеки? Я же вам сказал, что C++ - это компилируемый язык. Если даже Вы будете делать вашу стратегию как библиотеку, то Вам придётся тогда при каждой смене менять dll библиотеки в программе. А корректировать придётся точно также, через среду разработки и никак иначе.

          Ваше конечно право... Но звучит довольно непрактично...

          Как его превратить в библиотеку?
          Ну если вы его уже превратили в библиотеку, то подключайте его в свой проект как динамическую библиотеку.

          И как потом корректировать эту библиотеку?
          Вручную в среде разработки, то есть в Qt Creator`e
            М
            • 04 грудня 2017 р. 04:16

            Я подключил библиотеку так

            QLibrary MyLib("C:\\Qt\project\\StrategyCod\\StrategyCod.pro");
                MyLib.load();
            Скажите пожалуйста, как мне воспользоваться функцией StrategyCod::StrategyCod() ?
              Evgenii Legotckoi
              • 04 грудня 2017 р. 04:22

              Нужно пометить эту функцию как экспортируемую.

              А вообще, есть вполне стандартные средства для подключения динамических библиотек.
              Сделайте для начала просто какой-нибудь проект в виде библиотеки. Там будет файл *_global.h в котором будет макрос, чтобы помечать методы и файлы как экспортируемые. Тогда их можно будет применять в рамках других проектов и библиотек.
                М
                • 04 грудня 2017 р. 04:36

                У меня такой есть, вот его содержимое.

                #ifndef STRATEGYCOD_GLOBAL_H
                #define STRATEGYCOD_GLOBAL_H

                #include <QtCore/qglobal.h>

                #if defined(STRATEGYCOD_LIBRARY)
                #  define STRATEGYCODSHARED_EXPORT Q_DECL_EXPORT
                #else
                #  define STRATEGYCODSHARED_EXPORT Q_DECL_IMPORT
                #endif

                #endif // STRATEGYCOD_GLOBAL_H

                Скажите пожалуйста, как в нем пометить мою функцию?
                  Evgenii Legotckoi
                  • 04 грудня 2017 р. 04:40

                  У вас функция является методом класса, поэтому нужно пометить просто сам класс.

                  class STRATEGYCODSHARED_EXPORT StrategyCod 
                  {
                  
                  }
                  Тогда этот класс будет доступен в других проектах при подключении данного проекта как библиотеки.
                    М
                    • 04 грудня 2017 р. 05:02

                    У меня уже написано так в хедере класса

                    class STRATEGYCODSHARED_EXPORT StrategyCod
                    {

                    public:
                        StrategyCod();
                    };

                    #endif // STRATEGYCOD_H
                    Но как воспользоваться этой функцией в проекте?
                      Evgenii Legotckoi
                      • 04 грудня 2017 р. 05:19
                      • (відредаговано)

                      Тогда написать сигнатуру функции и вызвать её через метод resolve .

                        М
                        • 04 грудня 2017 р. 06:24

                        Сделал так, компилируется, но при запуске вырубается

                        QLibrary MyLib("C:\\Qt\project\\StrategyCod\\StrategyCod.pro"); 
                            typedef void (*MyPrototype)();
                            MyPrototype myFunction = (MyPrototype) MyLib.resolve("StrategyCod");
                            myFunction();
                          М
                          • 04 грудня 2017 р. 07:55

                          Вместо файла про в пути указал файл длл, но то же не работает

                            М
                            • 04 грудня 2017 р. 10:10

                            оказалось что функцию вне класса оно считывает из библиотеки хорошо

                              Evgenii Legotckoi
                              • 04 грудня 2017 р. 16:07

                              При использовании класса из библиотеки нельзя использовать отдельно его метод. Если только это не статический метод класса. Но в данном случае нужно обращаться к методу через имя класса.

                                М
                                • 05 грудня 2017 р. 02:22

                                Спасибо

                                  Коментарі

                                  Only authorized users can post comments.
                                  Please, Log in or Sign up
                                  AD

                                  C++ - Тест 004. Указатели, Массивы и Циклы

                                  • Результат:50бали,
                                  • Рейтинг балів-4
                                  m
                                  • molni99
                                  • 26 жовтня 2024 р. 01:37

                                  C++ - Тест 004. Указатели, Массивы и Циклы

                                  • Результат:80бали,
                                  • Рейтинг балів4
                                  m
                                  • molni99
                                  • 26 жовтня 2024 р. 01:29

                                  C++ - Тест 004. Указатели, Массивы и Циклы

                                  • Результат:20бали,
                                  • Рейтинг балів-10
                                  Останні коментарі
                                  ИМ
                                  Игорь Максимов22 листопада 2024 р. 11:51
                                  Django - Підручник 017. Налаштуйте сторінку входу до Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
                                  Evgenii Legotckoi
                                  Evgenii Legotckoi31 жовтня 2024 р. 14:37
                                  Django - Урок 064. Як написати розширення для Python Markdown Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
                                  A
                                  ALO1ZE19 жовтня 2024 р. 08:19
                                  Читалка файлів fb3 на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
                                  ИМ
                                  Игорь Максимов05 жовтня 2024 р. 07:51
                                  Django - Урок 064. Як написати розширення для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
                                  d
                                  dblas505 липня 2024 р. 11:02
                                  QML - Урок 016. База даних SQLite та робота з нею в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
                                  Тепер обговоріть на форумі
                                  Evgenii Legotckoi
                                  Evgenii Legotckoi24 червня 2024 р. 15:11
                                  добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
                                  t
                                  tonypeachey115 листопада 2024 р. 06:04
                                  google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
                                  NSProject
                                  NSProject04 червня 2022 р. 03:49
                                  Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…
                                  9
                                  9Anonim25 жовтня 2024 р. 09:10
                                  Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…

                                  Слідкуйте за нами в соціальних мережах