金字塔决策交易系统:自定义函数的序列与逐K线模式

需积分: 17 7 下载量 22 浏览量 更新于2024-08-08 收藏 1.38MB PDF 举报
"自定义函数的两种工作模式在金字塔决策交易系统中的应用,包括序列模式和逐K线模式,以及如何处理文本txt删除不需要的行的Python3.5方法" 在金字塔决策交易系统中,自定义函数是实现策略的重要工具,它们有两种主要的工作模式:序列模式和逐K线模式。 1. 序列模式: 在这种模式下,公式系统每次处理新数据时只会调用自定义函数一次。传入的参数可以是数组或常数,函数返回的值可以是单一数值或数组。由于只调用一次,序列模式的计算效率非常高。这种模式适合那些对整个数据序列进行一次性计算的策略,例如计算移动平均线。 2. 逐K线模式: 逐K线模式是为了实现头寸管理的交易系统而设计的,它会从第一个周期开始逐个周期调用自定义函数。在这个模式下,函数的参数和返回值都仅限于数值类型。通过Formula.IndexData属性,我们可以获取当前执行的周期。这个模式允许在公式中实现更复杂的控制逻辑,如逐次加仓、多次平仓等算法。逐K线模式下的函数会针对每个周期执行,所以更适合需要动态跟踪价格变化的策略。 以下是一个逐K线模式的自定义函数示例,用于计算指定周期内的收盘价平均值: ```vbs Function CU_MA2(Formula, cyc) ' 防止在序列模式下调用 If Formula.WorkMode = 1 Then Exit Function End If ' 获取K线数据对象 Set History = Formula.ParentGrid.GetHistoryData() ' 如果当前周期未达到计算周期,不参与计算 If Formula.IndexData < cyc - 1 Then CU_MA2 = 0 Exit Function End If DataCount = 0 For i = Formula.IndexData - cyc + 1 To Formula.IndexData ' 累加收盘价 DataCount = DataCount + History.Close(i) Next ' 计算当前周期的均价 CU_MA2 = DataCount / cyc End Function ``` 这个例子中,函数`CU_MA2`计算过去`cyc`个周期的收盘价平均值,每次新的周期都会调用它来更新结果。 了解这两种模式对于编写高效且适应不同场景的交易策略至关重要。在实际使用中,应根据策略需求选择合适的工作模式,并确保对金字塔决策交易系统的后台程序化有深入理解,以便更好地调试和优化公式。 至于Python3.5处理文本txt删除不需要的行的方法,可以使用内置的`open()`函数读取文件,然后通过`for`循环遍历每一行,根据条件判断是否保留。例如,如果要删除所有包含特定字符串的行,可以这样做: ```python with open('input.txt', 'r') as file: lines = file.readlines() new_lines = [] for line in lines: if '特定字符串' not in line: new_lines.append(line) with open('output.txt', 'w') as file: file.writelines(new_lines) ``` 这段代码首先读取输入文件的所有行,然后检查每行是否包含“特定字符串”,如果不包含则将其写入到输出文件中。这样就可以删除文本中不需要的行。