公式太长,大家都有需求分文件编写,特别是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++编写的程序,可以将多个文件按顺序合并到一个目标文件中:
#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;
}
对于你的示例:
运行程序后,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 可以吧,这么好的建议被否,可惜,可以是设计与研发精力过大吧,只能这样解释。