文章 "重塑经典策略(第二部分):布林带突破"

 

新文章 重塑经典策略(第二部分):布林带突破已发布:

本文探讨了一种将线性判别分析(LDA)与布林带相结合的交易策略,利用对市场区域的分类预测来生成战略性入场信号。

“人工智能”(AI)这个词可能是历史上最具误导性的命名惯例之一。读完本文后,你可能会同意AI是一个误称。作为作者,我对“智能”这个词有疑问。人工智能模型并非以人类意义上的智能存在。相反,它们是优化算法的智能应用。

人工智能模型的主要目标是在一个系统内最小化误差或最大化回报。然而,这些模型得出的解决方案并不总是实用的。例如,一个旨在最小化交易账户损失的人工智能系统可能会得出结论:不进行任何交易是最好的解决方案,因为这样可以保证没有损失。尽管从数学方面来看满足了问题本身,但这种解决方案对交易来说是不切实际的。

作为智能的人工智能实践者,我们必须用精心设计的约束条件来引导我们的模型。在本文中,我们将使用布林带来指导我们的人工智能模型。我们将识别出价格可能处于的四个区域。请注意,在任何给定时间价格只能处于以下这四个区域中的一个。

  • 区域1:价格完全高于布林带。
  • 区域2:价格高于中带但低于上带。
  • 区域3:价格高于下带但低于中带。
  • 区域4:价格低于下带。

我们将训练一个模型,用以理解价格在这四个区域之间的转换,并预测价格将移动到的下一个区域。每当价格从一个区域转移到另一个区域时,就会生成交易信号。例如,如果我们的模型预测价格将从区域2移动到区域1,我们将此解释为向上移动,并发起买入订单。我们的模型和EA将完全用原生MQL5实现。

布林带可以在多种交易策略中使用,从趋势跟踪到识别转折点或反转点。从技术上讲,该指标由一条指数移动平均线(EMA)组成,通常用于平滑证券的收盘价。它由两条附加带包围:一条位于EMA的上方,另一条位于下方,每条通常设置为两个标准差。

作者:Gamuchirai Zororo Ndawana

 
MetaQuotes:

查看新文章:重塑经典策略(第二部分):布林线突破

作者:Gamuchirai Zororo NdawanaGamuchirai Zororo Ndawana

你好,Ndawana

首先感谢你撰写这篇文章并简化人工智能的神话:)我正试图在我的代码中使用由此生成的信号,但需要做一些修改。

能否解释一下您在代码中使用矢量而不是简单数组的原因?

 
Anil Varma #:

你好,恩达瓦纳

首先感谢您的文章并简化了人工智能的神话:)我正试图在我的代码中使用由此产生的信号,但需要做一些修改。

能否解释一下您在代码中使用矢量而不是简单数组的原因?

你好,Anil,首先我想说的是,如果我们使用数组而不是矢量,不会有任何问题,所以我们可以使用简单数组来代替。

,我对矢量的偏好来自于只有矢量才能使用的特殊函数,除了这些特殊函数外,矢量还允许我们同时对所有元素进行计算。下面是一个简单的例子。
//+------------------------------------------------------------------+
//|Anil.mq5 | |
//|Gamuchirai Zororo Ndawana | |
//|https://www.mql5.com/en/gamuchiraindawa| |.
//+------------------------------------------------------------------+
#property copyright "Gamuchirai Zororo Ndawana"
#property link      "https://www.mql5.com/en/gamuchiraindawa"
#property version   "1.00"
//+------------------------------------------------------------------+
//| 脚本程序启动功能|
//+------------------------------------------------------------------+
void OnStart()
  {
//--- 我在数组方面遇到的问题是
double anil_array[3];
ArrayFill(anil_array,0,3,0);
ArrayPrint(anil_array);
//--- 我们必须遍历所有元素以进行计算
for(int i = 0; i < 3; i++)
   {
      anil_array[i] += 1;
   }
ArrayPrint(anil_array);
//--- 对向量进行同样的操作
vector anil_vector = vector::Zeros(3); /Simillar 到一个充满零的数组 
Print(anil_vector);   
//-- 向量允许我们同时对所有元素进行计算
anil_vector = anil_vector + 1;
Print(anil_vector);
  }
//+------------------------------------------------------------------+

向量 VS 阵列.

因此,试想一下,如果将来我们想到了一种可能有用的计算方法,那么由于我们使用的是矢量,修改代码库就会容易得多。