预计阅读时间: 14分钟

PrescienTrader将以下AFL功能添加到AmiBroker。 大多数用户只需要使用 PrescienTrader() ,PTPlotFLDs()和PTBacktest()函数.

如果您只想将PrescienTrader用作分析图表的独立工具,则可以 只需双击PrescienTrader AFL公式,以创建一个新的PrescienTrader图表窗格。 您无需阅读本文的其余部分。

其余功能用于 进阶使用者 他们想从自定义AFL脚本中调用我们的算法,以开发交易系统。


PrescienTrader

PrescienTrader()
  • 这是 主功能 它显示PrescienTrader图表窗格,显示所有图并在“解释”窗口中生成报告。
  • 该函数不接受任何参数,因为所有参数均在“ AmiBroker参数”窗口中设置。
  • 尽管可以在现有的价格图表窗格上绘制PrescienTrader,但它包含大量的指标和图形,这些指标和图形可能会造成混乱,并可能与现有指标冲突。因此,我们建议专门为PrescienTrader创建一个单独的窗格。
  • 您必须在“参数”窗口中设置API密钥。 如果您未设置API密钥,则PrescienTrader将显示一个 无效的API密钥 信息。
  • 要了解如何使用这些参数,请阅读文章, PrescienTrader参数.

PTPlotFLD

PTPlotFLDs()
  • 此功能绘制 未来的分界线 (FLD),由PrescienTrader确定的每个周期峰值。
  • 该函数不接受任何参数,因为所有参数均在“ AmiBroker参数”窗口中设置。
  • 由于FLD与价格密切相关,并且使用与价格相同的标度, 我们建议在价格图表窗格上而不是在PrescienTrader窗格上绘制FLD.
  • 此函数使用PrescienTrader作为其数据源来生成FLD图。因此, 它需要 PrescienTrader() 函数在单独的图表窗格中运行.
  • 您可以在“参数”窗口中设置以下参数:
    • FLD(1-10) –这使您可以选择要在图表上显示的FLD图。每个循环的峰值频率都有一个相关的FLD图,但是此参数可通过限制图的数量来避免图表混乱。
    • 与PrescienTrader同步 –启用此功能后,该功能将每秒自动运行一次,以从PrescienTrader获取最新数据,确保FLD图与PrescienTrader生成的周期分析保持同步。如果禁用同步,则可能每次必须手动刷新图表。
  • 该功能可以绘制过去,现在和将来的FLD。但是,要显示 过去 FLD图,必须在PrescienTrader中启用静态指标。这是因为循环频率随每个新柱而变化。因此,要绘制过去的FLD,该功能需要访问过去的周期分析,而这需要静态指标。如果禁用了静态指标,则只会看到当前柱线和未来柱线的FLD图。记住, 未来的FLD图仅是估计值,可能会随着向图表中添加新柱线而变化.

PTBar分析

PTBarAnalysis(数据系列,极性,PL基础,回溯范围,最小频率,最大频率,谐波滤波器,最小适合度,最佳X周期,分析栏,绘图开始栏,绘图结束栏,缓存索引) 

PTBar分析 在单个条上执行时间点周期分析。然后,它会在指定的绘图范围内生成各种绘图,并在时间上向后(可选)向前移动。通过确认后退图的形状遵循相应的价格柱,可将其用于可视化验证周期分析的准确性。前向图用于 预测未来价格 或在过去的柱形图中查看其预测的准确性。这是您要使用的功能 实时交易.

此函数不直接返回任何值。而是填充一组AFL变量,包括标量,数组和矩阵。这些阵列可以像任何AFL阵列一样绘制。

参量

  • 数据系列 (数组)
    • 此参数期望 AmiBroker阵列,其中包含您要分析的实际数据系列。例如,如果您要分析收盘价,则可以通过内置的AmiBroker 关闭(C) 变量,它是一个包含数据序列收盘价的数组。
  • 极性 (整数)
    • 0 =正
    • 1 =负数
  • PL基础 (整数)
    • 0 =振幅
    • 1 =力量
  • 回溯范围 (整数)
    • 1 – 15
  • 最小频率 (整数)
    • 通常为10 – 100
  • 最大频率 (整数)
    • 通常为150 – 300
  • 谐波滤波器 (整数)
    • 0 – 100
  • 最低健身度 (整数)
    • 0 – 100
  • 最佳X周期 (整数)
    • 1 – 10
  • 分析栏 (整数)
    • 这是将对其执行分析的柱线索引。
    • 在进行实时交易分析时,您需要将分析条设置为等于图表上最后一个条的条索引。
    • AmiBroker将图表上的第一个条形显示为条形编号1。但是,AFL使用的内部索引从条形编号0开始。因此,如果要分析特定的条形,则需要从AmiBroker中显示的条形编号减去1来得出。获取正确的条形码。如果图表上有5,000个柱,则最后一个柱号将是4,999,而不是5,000。
    • 您可以指定一个过去的柱线索引以对该柱线进行时间点分析。例如,如果指定的柱线指数为1,000,则可以将柱线1,001到图表上的最后一个柱线的Prescient Line与该柱线范围的实际价格柱线进行比较,以查看预测的准确性 在那个时间点。生成循环图时,该函数将忽略指定条形编号右边的任何价格数据。
  • 绘图开始栏 (整数)
    • 指定绘图开始的条形索引。
    • 通常不必计算整个系列的图。例如,如果图表视图显示100条,则只需要这100条的图,而不需要整个系列。
  • 情节结束栏 (整数)
    • 指定图形结束处的钢筋索引。
    • 您可以通过指定大于图表上条形图数量的“图形结束条形图”来将图形投影到未来。
  • 缓存索引 (整数)
    • 该函数包含一个内部缓存机制,旨在防止对同一数据发送多个连续的API请求。缓存存储每个API请求的数据系列,参数和结果。如果它连续两次接收到完全相同的数据系列和参数,它将跳过API请求并立即返回缓存的结果。
    • 如果您仅分析图表上的单个数据系列,则应将“缓存索引”设置为0。
    • 如果要分析图表上的多个数据系列,则应为每个数据系列指定唯一的缓存索引。例如,如果要分析基本周期以及两个更高的时间段,则可以为基本周期指定Cache Index 0,为HTP 1指定Cache Index 1,为HTP 2指定Cache Index2。这将创建一个单独的缓存每个时间段。

响应

AFL阵列:

这些数组中的每个元素都代表一个柱,从柱零开始。

如果您设定 情节结束栏 大于 LastValue(BarIndex()),它将自动 向后移数组 通过差异。然后,您可以使用 情节 功能 XShift 参数。

例如,假设您的图表包含5,000个柱,这意味着最后一个柱索引为4,999。如果您设定 情节结束栏 到5009,数组将向左移动10个小节。然后,将XShift设置为10,以绘制10个未来的柱线。由于数组向左移动了10条,因此XShifted图将与图表正确对齐。

  • PTPL先行线 情节
  • 斜率 先行线正值表示向上倾斜,负值表示向下倾斜。
  • PTTrendBar相对条码 在当前的Prescient Line趋势之内。每个趋势中的第一个柱号为柱0,所有后续柱号均相对于趋势的第一个柱。
  • PT趋势栏酒吧总数 在当前的Prescient Line趋势中。
  • 趋势科技完成百分比 当前的Prescient Line趋势。该百分比永远不会达到100,因为这意味着新趋势已从零完成开始。因此,旧趋势的100%相当于新趋势的0%。

AFL矩阵:

  • PT周期 –每个循环频率包含一行,在指定的范围内 最小频率maxFrequency 参数。每行包含八列,列号由AFL变量标识。从矩阵中读取值时, 您应该始终使用与其关联的AFL变量来引用列号, 而不是硬编码列号。这样,如果将来更改列号,您的代码仍然可以使用,
    • 频率 (PTColFrequency)–周期频率。
    • 振幅 (PTColAmplitude)–周期幅度。
    • 强度 (PTColStrength)–循环强度,其强度除以频率。
    • 起始栏 (PTColStartBar)–循环图开始的条形索引。这用于为循环图设置正确的相位,但是通常没有必要,因为该函数在下面讨论的PTPlots矩阵中为您提供了这些图。
    • 适合度 (PTColFitness)–从0%到100%的可靠度的统计量度。
    • (PTColPeak)–指示该循环是否为峰,如果是,则指示是否被参数设置中指定的过滤器之一过滤:
      • 0 =不是峰值
      • 1 =有效峰值
      • -1 =峰值被过滤 最低健身度 过滤
      • -2 =峰值被过滤 谐波滤波器
      • -3 =峰值被过滤 最佳X周期 过滤
    • (PTColSlope)–指示循环是向上倾斜还是向下倾斜。仅在有效峰值(峰值= 1)的周期上计算斜率:
      • 1 =倾斜
      • -1 =倾斜
    • FLD价格 (PTColFLDPrice)–指示周期的FLD价格。仅在有效峰值(峰值= 1)的周期上计算。
  • 峰值峰值 矩阵包含与格式相同的相同信息 PT周期 矩阵,只包含有效峰值(峰值= 1)的周期。周期将按频率排序。
  • PTPlotPTPlot 矩阵包含每个循环的图,该循环是一个有效峰值(Peak = 1),按循环频率排序。每行代表一个 峰值周期频率 每列代表一个 酒吧。与数组一样,如果您指定一个 情节结束栏 除了图表上的最后一个柱形,矩阵行将通过差异向左移动。您可以使用 MxGetBlock 函数将矩阵行转换为AFL数组。
  • 价格 – PTFLDPrices矩阵包含每个周期的FLD价格,这是一个有效峰值(Peak = 1),按周期频率排序。每行代表一个峰值循环频率,每列代表一个条形。该矩阵仅包含当前柱和未来柱的FLD价格。使用 PTRange分析 函数获取过去的FLD数据。与数组一样,如果您在图表上的最后一个柱形上方指定了“绘图结束柱形”,则矩阵行将向左移动该差值。您可以使用MxGetBlock函数将矩阵行转换为AFL数组。

AFL标量

  • PTFLDScoreFLD分数 是一个功能强大的指标,可以帮助确认或拒绝Prescient Line建议的交易以及其他周期指标。
    • FLD得分是通过将强度或幅度乘以(取决于 PL基础 每个系列的峰值周期频率设置(1或-1),具体取决于系列价格是高于还是低于FLD价格,并将它们加在一起。
    • 如果FLD得分为 ,表示市场处于周期性 上升趋势.
    • 如果FLD得分为 ,表示市场处于周期性 下降趋势.

PTRange分析

PTRangeAnalysis(数据系列,极性,PL基础,回溯范围,最小频率,最大频率,谐波滤波器,最小适应度,最佳X周期,开始条,结束条,过程阵列)

PTRange分析 分析一个 整个酒吧范围,返回 时间点 分析范围内每个条形的数值。呼唤 PTRange分析 1,000点的范围等同于 PTBar分析 1000次,范围内的每个条一次。这是用于 回测优化, 进行实时交易。

此函数不直接返回任何值。而是填充一组AFL数组和矩阵。这些阵列可以像任何AFL阵列一样绘制。

参量

  • 数据系列 (数组)
    • 此参数期望 AmiBroker阵列,其中包含您要分析的实际数据系列。例如,如果您要分析收盘价,则可以通过内置的AmiBroker 关闭(C) 变量,它是一个包含数据序列收盘价的数组。
  • 极性 (整数或数组
    • 0 =正
    • 1 =负数
  • PL基础 (整数或数组)
    • 0 =振幅
    • 1 =力量
  • 回溯范围 (整数或数组)
    • 1 – 15
  • 最小频率 (整数或数组)
    • 通常为10 – 100
  • 最大频率 (整数或数组)
    • 通常为150 – 300
  • 谐波滤波器 (整数或数组)
    • 10 – 100
  • 最低健身度 (整数或数组)
    • 0 – 95
  • 最佳X周期 (整数或数组)
    • 1 – 10
  • 开始/结束栏 (整数)
    • 起始栏端栏 参数指定要分析的条形范围。不像 PTBar分析,结束栏可能 超过图表上最后一个值的柱线索引。该功能用于 回测,而不是实时交易,因此将地块投影到未来毫无意义。
  • 处理阵列 (整数)
    • 此参数确定函数是否将参数处理为整数或数组。这仅适用于可以是整数或数组的参数,包括极性,PL基础,回溯范围,最小频率,最大频率,谐波滤波器,最小适应度和最佳X周期。
    • 通常,这些参数是整数,这意味着相同的参数设置将应用于整个分析条形范围。这是默认设置,大多数用户应该保留此设置。但是,如果您是高级用户,这将为您提供无比强大的功能,可以通过将值作为数组传递来逐条地更改参数设置。
    • 如果确实使用数组,则必须将Process Arrays参数设置为1,因此PrescienTrader知道将其作为数组进行处理。 启用此功能会大大增加每个API请求的文件大小,这会占用带宽并减慢处理时间,因此只有在知道自己在做什么并且有充分理由这样做时才启用它。
      • 0 =关
      • 1 =开

响应

AFL阵列

这些数组中的每个元素都代表一个柱,从柱零开始。

  • PTStaticPL –静态 先行线。这包含在 指定范围内每个条的时间点。这是 非常不一样 从标准的Prescient Line分析返回 PTBar分析,它计算在 时间点,然后在时间上向后和向前投影图。
  • PTStaticPLSlope –的斜率 静态的 先行线。正值表示向上倾斜,负值表示向下倾斜。
  • PTStaticPLSlopeCum累积的 静态Prescient线的斜率。这就是你要使用的 情节 静态的预科学线。
  • PTStaticTrendBar相对条码 在当前静态Prescient Line趋势内。每个趋势中的第一个柱号为柱0,所有后续柱号均相对于趋势的第一个柱。
  • PTStaticTrendBars酒吧总数 在当前静态Prescient Line趋势中。
  • PTStaticTrendPct完成百分比 当前静态Prescient Line趋势。该百分比永远不会达到100,因为这意味着新趋势已从零完成开始。因此,旧趋势的100%相当于新趋势的0%。
  • PTStaticFLDScore –请参阅 PTBar分析 部分以了解FLD得分。

AFL矩阵

这些矩阵返回与以下内容有关的值的列表: 峰值周期频率 每个酒吧。每个矩阵代表一个不同的指标,但它们均按频率排序。因此,例如,第3行第999列对应于 相同 在所有矩阵中,峰值循环频率为bar 1,000。矩阵包含列出所有条的所有峰值周期频率所需的行数。

  • PTStaticFrequency –此矩阵中的每一行都对应一个 峰值周期频率.
  • PTStaticSlopes –该矩阵中的每一行都对应于在 PTStaticFrequency 矩阵,在同一行和同一列。
  • PTStaticFLD价格 –该矩阵的每一行对应于在同一行和同一列的PTStaticFrequency矩阵中找到的频率的FLD价格。

PT回测

PTBacktest()

该功能用于 一个 单线程 分析以进行探索,回测或优化。它不需要任何参数,因为您可以在 参量 窗口。运行时,它会调用 PTRange分析 并生成PTRangeAnalysis函数中描述的AFL数组和矩阵。

与PrescienTrader函数支持两个以上的时间段不同, PT回测 功能支持 无限 较高的时间段。

阅读 探索,回测和OPTimization 文章,以详细说明如何使用此功能。


PTBacktestMultiPrepare

PTBacktestMultiPrepare()

该功能用于 准备 一个 多线程 分析以进行探索,回测或优化。它使用在“参数”窗口中定义的参数来为API请求以正确的格式生成数据。

阅读 探索,回测和OPTimization 文章,以详细说明如何使用此功能。


PTBacktestMultiExecute

PrescientAnalysisExecute()

该功能用于 执行 一个 多线程 分析以进行探索,回测或优化。它解析数据,将结果输出到探索列,并生成包含结果的AFL数组。

阅读 探索,回测和OPTimization 文章,以详细说明如何使用此功能。


PTLogToFile

PTLogToFile(消息)

您可以使用 PTLogToFile 将消息写入回测“参数”窗口中定义的日志文件。


PTWait

PTWait(第二)

您可以使用 PTWait 暂停执行指定的秒数。通常,在发出API请求时会使用它。如果API请求由于Internet连接断开而失败,则可以使用PTWait等待一定的秒数,然后重试。

PTP位置大小

PTPositionSize(风险点,风险权益百分比,帐户基础货币)

此功能可自动执行Van Tharp风格的AmiBroker中基于波动率的头寸调整。我们认为这是确定头寸规模的最佳方法,因为它会根据波动率和投资组合权益自动管理风险。

AmiBroker的内置 SetPositionSize 函数包含将头寸规模指定为权益百分比的选项,但它将头寸规模视为 余量 开仓所需的金额。问题是, 保证金仅与风险相关。尽管确实存在风险较高的工具 通常 有更高的保证金要求,我们认为最好根据每笔交易的确切风险来计算头寸规模,而不是依靠经纪人为您管理风险。因此,我们需要使用 现金 头寸的价值,而不是保证金的价值。例如,如果您购买期货合约并且其价格下跌了2%,则您已经失去了2% 现金价值 合约的保证金,而不是保证金的2%!

该函数设置AmiBroker用于执行交易的头寸大小;它不返回值。它旨在替换内置的SetPositionSize函数。

  • 风险点 参数应该是一个数组,指定您愿意在每笔交易中冒险承担的点数。通常,这将与您用于止损的点数相同。如果您没有使用止损,则在交易系统退出或反转头寸之前,估计您的交易系统通常会损失的最大点数。我们建议使用考虑当前工具典型价格范围的公式。例如, ATR(20)* 2 将指定最大风险为平均真实范围的两倍。在对多个工具进行回测(投资组合回测)时,使用公式而不是静态值尤为重要,因此有风险的积分会自动适应每种工具的价格范围和波动性。
  • 股权风险百分比 是您愿意在每笔交易中冒险承担的当前股本的百分比。我们通常使用2%,但您可以使用更高或更低的值,具体取决于您的风险承受能力。
  • 帐户基础货币 是包含您的交易帐户的基本货币的字符串。例如,“ USD”。

该函数使用“ AmiBroker信息”窗口中的以下字段:

  • 保证金存款
  • 点值
  • 货币

另外,该功能支持 多货币头寸调整,当工具的基础货币与帐户的基础货币不同时,这是必需的。最常见的情况是,外汇对以美元以外的货币计价。要执行多货币头寸规模调整,该函数将查找您的帐户基础货币和要回测的外汇对基础货币的组合的外汇对价格。例如,如果您要回测CHFJPY,则基础货币将为JPY。如果您的帐户基础货币是USD,则该函数将查询USDJPY的价格,以美元计算JPY的价格,然后允许它以美元计算CHFJPY的头寸规模。因此,需要以下数据才能使多货币头寸调整工作:

  1. 您必须输入正确的 点值 对于您要回测的每种乐器。有关点值的说明,请查阅AmiBroker文档。
  2. 您必须输入 保证金存款 对于您要回测的每种乐器。您可以输入固定的保证金存款为正数,也可以输入为合同现金价值的百分比,方法是输入百分比作为负数。例如,如果您的经纪人提供20:1的杠杆,则保证金为5%。因此,您将输入-5作为保证金。
  3. 对于任何乐器 以您的帐户基本货币计价的货币,您必须在 货币 领域。以CHFJPY为例,您将在该工具的“货币”字段中输入JPY。
  4. 您的AmiBroker数据库中必须包含报价符号XXXOOO或OOOXXX的引号,其中XXX代表您的 帐户 基本货币,OOO代表 仪器 基础货币。 如果您的帐户基础货币首先出现在符号(XXXOOO)中,则该功能将自动反转货币对的价格。 同样,使用CHFJPY的示例,如果您的帐户基础货币为USD,则需要在数据库中具有USDJPY的报价。该符号的格式必须完全符合XXXOOO或OOOXXXX,而不是XXX-OOO或其他某种形式。 如果您的数据提供商使用非标准的股票代码格式,您可以通过创建以标准格式命名的变量并将非标准格式指定为值,将数据库中的标准格式映射为非标准格式。同样,使用上面的示例,如果您的数据库包含符号USD-JPY,则可以使用以下代码将USDJPY映射到USD-JPY:
USDJPY =“ USD-JPY”;

或者,您可以通过将变量设置为等于数值来设置固定的转换值。例如:

USDJPY = 108.68;
  • 设置固定的转换值会覆盖数据库中的所有值。当您的数据库中没有用于转换币种的报价时,这特别有用。
  • 您必须为所有符号图创建变量 之前 调用PrescientPositionSize函数。
  • PrescientPositionSize函数将忽略AmiBroker的内置货币转换设置。因此,使用此功能时,您可以忽略 首选项->货币 屏幕。我们实际上建议您 禁用AmiBroker的动态货币转换功能 通过从中删除符号 动态速率符号 此屏幕中的列。这是因为,当转换货币的报价历史短于所分析的工具时,AmiBroker的内置动态货币转换会产生问题。在这种情况下,对于转换货币的报价历史记录范围之外的任何日期,头寸大小都将设置为零。从“动态汇率符号”列中删除符号将禁用动态货币转换,从而解决了此问题。如果您的转换货币的报价历史短于被分析工具的报价历史,则PresicentPositionSize函数将使用 最后一个酒吧 转换货币的价格,适用于转换货币的报价历史记录范围以外的任何柱线。
本文是否有帮助?
不喜欢 0
观看次数: 1392
永久自由
每日交易信号
通过PrescientSignals
订阅
订阅以每天免费收到发送到您的电子邮件收件箱的免费交易信号
免费信号会延迟一周。通过比较前一周的预测与实际结果,您可以无风险地评估我们的PrescientSignals服务。
永久自由
PrescientSignals的每日交易信号
订阅
订阅以每天免费收到发送到您的电子邮件收件箱的免费交易信号
免费信号会延迟一周。通过比较前一周的预测与实际结果,您可以无风险地评估我们的PrescientSignals服务。