大公式文件分多个小公式文件的问题

公式太长,大家都有需求分文件编写,特别是if () else {} 特别多时,一不小心就弄错了,既然大家都有这个需求,能不能开发个功能,文件包含

比如

公式1(含开仓交易系统)

公式2文件(含止赢交易系统)

import 公式1


公式3文件(含止损交易)

import 公式2

这样,公式3就包含了公式1和公式2的所有代码,这样文件可独立,各文件代码又少,方便编写

注意不是导入函数,也不是导入指标,是import导入完整的交易系统,,相当于一个大文件分成三个文件,   我是要把一个长长的交易系统,变成三个文件来写,这样,各文件代码比较少,方便{}之类的代码观察,许多软件都具有这个功能 python,javascript。等

公式文件嵌套问题,盼开发
导入公式应用建议支持导入txt文件
TBQuant 主文件夹的dmp文件可以删除吗,文件非常大
旗舰版报错 加载公式执行文件失败
TBQ的数据中心,本地数据库,导入文件能批量导入多个文件csv吗?
公式执行文件被非法篡改
关于帮助文件
关于TBQ3 update文件的问题
软件升级后原来的公式是用dll文件复制粘贴到桌面的,现在复制粘贴回去却无法显示了
FileDelete无法清理文件信息

我把你的需求转发给产品研发吧

这个不是我这里能决定的

将三个文件的内容合并到一个文件中去,形成一个完整的文件。比如file1.txt 文件内容是1,file2.txt 文件内容是2,file3.txt 文件内容是3,把三个文件按顺序合并到file4.txt中去,那么file4.txt内容就是 1 2 3 4 ,用C++程序,代码是怎样写的

C++ 合并多个文件内容

以下是一个用C++编写的程序,可以将多个文件按顺序合并到一个目标文件中:

#include <iostream>

#include <fstream>

#include <vector>

#include <string>


bool mergeFiles(const std::vector<std::string>& inputFiles, const std::string& outputFile) {

   std::ofstream outFile(outputFile, std::ios::binary);

   if (!outFile) {

       std::cerr << "无法打开输出文件: " << outputFile << std::endl;

       return false;

   }


   for (const auto& inputFile : inputFiles) {

       std::ifstream inFile(inputFile, std::ios::binary);

       if (!inFile) {

           std::cerr << "无法打开输入文件: " << inputFile << std::endl;

           return false;

       }


       // 将输入文件内容写入输出文件

       outFile << inFile.rdbuf();

       

       // 如果不是最后一个文件,添加空格分隔

       if (&inputFile != &inputFiles.back()) {

           outFile << " ";

       }


       inFile.close();

   }


   outFile.close();

   return true;

}


int main() {

   std::vector<std::string> inputFiles = {"file1.txt", "file2.txt", "file3.txt"};

   std::string outputFile = "file4.txt";


   if (mergeFiles(inputFiles, outputFile)) {

       std::cout << "文件合并成功!输出文件: " << outputFile << std::endl;

   } else {

       std::cerr << "文件合并失败!" << std::endl;

   }


   return 0;

}

示例运行:

对于你的示例:

  • file1.txt 内容:1
  • file2.txt 内容:2
  • file3.txt 内容:3

运行程序后,file4.txt 内容将是:1 2 3

这个东西没有用啊,用其他语言当然可以随便写合并文件的东西,关键是每种语言有自己的结构特点,有的语言可以,有的语言不行,拿c++意义在哪里?

可能是我没有描述清楚,我想要的效果是将一个200行的公式,太长了,有好else { },一不小心弄错了,翻页一次不容易 ,用三个公式作用一个K线的话,不同文件的变量是不通的,太多的话,要好多set进全局变量,特别麻烦,我是想纯从代码上将这一个大文件分成三个文件,单独编程,这样比较短小,这三个文件不是导入函数,不是导入指标,是纯粹将代码合到一起就可以了,需要非常简单。

比如双均线系统

公式1:

Params

   Numeric FastLength(5);// 短期指数平均线参数

   Numeric SlowLength(20);// 长期指数平均线参数

Vars

   Series<Numeric> AvgValue1;

   Series<Numeric> AvgValue2;

Events

   OnReady()

   {

       SetBackBarMaxCount(1+Max(FastLength,SlowLength));

       Range[0:DataSourceSize() - 1]

       {

           setPlotOption("MA1", "begin-bar", FastLength);

           setPlotOption("MA2", "begin-bar", SlowLength);

       }

   }

   OnBar(ArrayRef<Integer> indexs)

   {

       AvgValue1 = AverageFC(Close,FastLength);

       AvgValue2 = AverageFC(Close,SlowLength);

       PlotNumeric("MA1",AvgValue1);

       PlotNumeric("MA2",AvgValue2);        

     

   

   }

公式2:

 include 公式1

       If(MarketPosition <>1 && AvgValue1[1] > AvgValue2[1])

       {

           Buy(0,Open);

       }

公式3

    include 公式2

       If(MarketPosition <>-1 && AvgValue1[1] < AvgValue2[1])

       {

           SellShort(0,Open);

       }    


这样,公式3就完整的把公式合并了一个完整的文件,不存变量互不通的问题。

实际上,开仓、止赢、止损,我想 放在三个文件里,单独编辑,再合并成一个文件执行


或者再来个公式4

include 公式1

include 公式2

include 公式3

这样公式4就组合成了一个完整程序,启动运行公式4就行了

公式4就是完整代码:

Params

   Numeric FastLength(5);// 短期指数平均线参数

   Numeric SlowLength(20);// 长期指数平均线参数

Vars

   Series<Numeric> AvgValue1;

   Series<Numeric> AvgValue2;

Events

   OnReady()

   {

       SetBackBarMaxCount(1+Max(FastLength,SlowLength));

       Range[0:DataSourceSize() - 1]

       {

           setPlotOption("MA1", "begin-bar", FastLength);

           setPlotOption("MA2", "begin-bar", SlowLength);

       }

   }

   OnBar(ArrayRef<Integer> indexs)

   {

       AvgValue1 = AverageFC(Close,FastLength);

       AvgValue2 = AverageFC(Close,SlowLength);

       PlotNumeric("MA1",AvgValue1);

       PlotNumeric("MA2",AvgValue2);        

       

       

       

       If(MarketPosition <>1 && AvgValue1[1] > AvgValue2[1])

       {

           Buy(0,Open);

       }

       

       If(MarketPosition <>-1 && AvgValue1[1] < AvgValue2[1])

       {

           SellShort(0,Open);

       }    

   }

200多行还好的

多空策略都1500行左右


暂时无解的情况下

你试试 Visual Studio Code 编辑器

功能很强大

程序员都在用


不过我自己是在TBQ的编辑器中熬

有一说一

白底配色太闪瞎眼睛

TBQ3好像黑底?

使用上还是喜欢TBQ

整个策略共享一个MarketPosition,但是变量是独立的,公式间传递好多变量,特别不方便,不如粗暴简单就合并几个文件不就完了,还整这么复杂,要不我找人来开发,就一个晚上的功夫。

👍请明天展示一下您的成果让我们学习一下

看到了MarketPosition

怎么说好哩


还是多想想策略算法

没有平台是完美的


或者用python直接干

或者看看这里:多公式情形

你可以试试:GetPlotNumericValue-获取当前策略应用商品当前bar上的数值型指标值

应该可以满足你的部分需求。

写函数不行,一堆变量是要通用的,只要把三个文件,最简单的连接起来就行了,没任何难度,一杯咖啡的时间,工程师就开发出来了,唉,顽固

写函数可以达到一样的功能


import算是类继承

面相对象

也要改写和调用开仓、增减仓、止损、止盈方法


其实差不多

只是20年前开始流行object

更加适合协同大项目

不知道这有什么难度,在公式2里,完整的把公式1加载进来就可以了,就是读一个文件而已,要不我来开发一下。

不用import公式1,用clude 公式1 可以吧,这么好的建议被否,可惜,可以是设计与研发精力过大吧,只能这样解释。