大公式文件分多个小公式文件的问题
公式太长,大家都有需求分文件编写,特别是if () else {} 特别多时,一不小心就弄错了,既然大家都有这个需求,能不能开发个功能,文件包含比如公式1(含开仓交易系统)公式2文件(含止赢交易系统)import 公式1公式3文件(含止损交易)import 公式2这样,公式3就包含了公式1和公式2的所有代码,这样文件可独立,各文件代码又少,方便编写注意不是导入函数,也不是导入指标,是import导入完整的交易系统,,相当于一个大文件分成三个文件, 我是要把一个长长的交易系统,变成三个文件来写,这样,各文件代码比较少,方便{}之类的代码观察,许多软件都具有这个功能 python,javascript。等
我把你的需求转发给产品研发吧这个不是我这里能决定的
将三个文件的内容合并到一个文件中去,形成一个完整的文件。比如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 内容:1file2.txt 内容:2file3.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就完整的把公式合并了一个完整的文件,不存变量互不通的问题。实际上,开仓、止赢、止损,我想 放在三个文件里,单独编辑,再合并成一个文件执行或者再来个公式4include 公式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 可以吧,这么好的建议被否,可惜,可以是设计与研发精力过大吧,只能这样解释。