М
Миша1 декабря 2017 г. 2:38

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

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

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

Вам это нравится? Поделитесь в социальных сетях!

16
BlinCT
  • 1 декабря 2017 г. 2:49

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

    М
    • 1 декабря 2017 г. 2: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
      • 3 декабря 2017 г. 16:11

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

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

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

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

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

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

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

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

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

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

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

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

              А вообще, есть вполне стандартные средства для подключения динамических библиотек.
              Сделайте для начала просто какой-нибудь проект в виде библиотеки. Там будет файл *_global.h в котором будет макрос, чтобы помечать методы и файлы как экспортируемые. Тогда их можно будет применять в рамках других проектов и библиотек.
                М
                • 4 декабря 2017 г. 4: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
                  • 4 декабря 2017 г. 4:40

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

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

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

                    class STRATEGYCODSHARED_EXPORT StrategyCod
                    {

                    public:
                        StrategyCod();
                    };

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

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

                        М
                        • 4 декабря 2017 г. 6:24

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

                        QLibrary MyLib("C:\\Qt\project\\StrategyCod\\StrategyCod.pro"); 
                            typedef void (*MyPrototype)();
                            MyPrototype myFunction = (MyPrototype) MyLib.resolve("StrategyCod");
                            myFunction();
                          М
                          • 4 декабря 2017 г. 7:55

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

                            М
                            • 4 декабря 2017 г. 10:10

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

                              Evgenii Legotckoi
                              • 4 декабря 2017 г. 16:07

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

                                М
                                • 5 декабря 2017 г. 2:22

                                Спасибо

                                  Комментарии

                                  Только авторизованные пользователи могут публиковать комментарии.
                                  Пожалуйста, авторизуйтесь или зарегистрируйтесь
                                  AD

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

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

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

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

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

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

                                  Следите за нами в социальных сетях