// Pass input data and calculate the output
if (nn.GetResponse(1, inputs, outputs) != 0) return (3);
return 0;
}
编译。DLL 适配程序就绪! 在“EA 交易”中使用神经网络 至此,我们已创建了多个文件。我将列出这些“EA 交易”工作所需的文件,以及您应该将它们放入的文件夹。所有文件均已附于本文。
[td]文件
描述
存放路径(终端文件夹中)
WeekPattern.dll
我们在 NeuroSolutions 中创建的 DLL 神经网络
MQL5\Files\NeuroSolutions\
WeekPattern.nsw神经网络的平衡设置
MQL5\Files\NeuroSolutions\NeuroSolutionsAdapter.dll
可用于任何 DLL 神经网络的通用 DLL 适配程序
MQL5\Libraries\
以下是完整的“EA 交易”WeekPattern.mq5 的代码。为便于搜寻和进一步修改,与神经网络相关的一切已放在单独的 CNeuroSolutionsNeuralNet 类中。
[C] 纯文本查看 复制代码input double Lots = 0.1;
//+------------------------------------------------------------------+
// Connect the DLL adapter, using which we are going to use the DLL neuronet created in NeuroSolutions
#import "NeuroSolutionsAdapter.dll"
int CalcNeuralNet(string dllPath, string weightsPath, double& inputs[], double& outputs[]);
#import
//+------------------------------------------------------------------+
class CNeuroSolutionsNeuralNet
{
private:
string dllPath; // Path to a DLL neuronet created in NeuroSolutions
string weightsPath; // Path to a file of the neuronet balances
public:
double in[20]; // Neuronet inputs - OHLC of 5 bars
double out[1]; // Neuronet outputs - Close of a current bar
CNeuroSolutionsNeuralNet();
bool Calc();
};
//+------------------------------------------------------------------+
void CNeuroSolutionsNeuralNet::CNeuroSolutionsNeuralNet()
{
string terminal = TerminalInfoString(TERMINAL_PATH);
dllPath = terminal + "\\MQL5\\Files\\NeuroSolutions\\WeekPattern.dll";
weightsPath = terminal + "\\MQL5\\Files\\NeuroSolutions\\WeekPattern.nsw";
}
//+------------------------------------------------------------------+
bool CNeuroSolutionsNeuralNet::Calc()
{
// Get current quotes for the neuronet
MqlRates rates[], rate;
CopyRates(Symbol(), Period(), 0, 6, rates);
ArraySetAsSeries(rates, true);
// Fill the array of input data of the neuronet
double zlevel=0;
for (int bar=0; bar= 0)) close = true;
if(close)
{
CTrade trade;
trade.PositionClose(_Symbol);
}
}
// If there is no positions, open one according to the prediction
if((Prognoze!=0) && (!PositionSelect(_Symbol)))
{
CTrade trade;
if(Prognoze > 0) trade.Buy (Lots);
if(Prognoze
一个检查我们是否正确连接神经网络的好方法是,在策略测试程序中运行“EA 交易”——采用与训练神经网络所使用的同一时间周期。
好吧,有经验的交易人员要说了,该神经网络是此周期的“适配程序”。因此它被训练为针对那些确切的数据模式(主导特定的周期)识别和通知获利信号。针对这样一段时间绘制的“EA 交易”的盈利图应该是上升的。
我们来检查一下。在我们的示例中,它应该是如下的漂亮图形:
这表示一切连接正确。至于统计数据,下面附上了“EA 交易”测试的其他报告:
为防万一,我来为开发新人解释一下交易策略和神经网络。
用于自身优化(训练其神经网络)的某个周期的“EA 交易”的盈利能力,不会反映该 EA 的总体盈利能力。换言之,它不保证自己在其他周期上的盈利能力。其他周期可以有其他的主导模式。
创建盈利能力紧随训练周期的交易策略是一项十分复杂的任务。您不能指望 NeuroSolutions 或任何其他神经网络应用程序可以为您解决这个问题。它只能为您的数据创建神经网络。
以上这些就是我没有在此给出获得的“EA 交易”的前瞻性测试的结果的原因。创建一个盈利的交易策略不是本文的目标。本文的目的是告诉读者如何将神经网络连接至“EA 交易”。 总结现在,交易人员有了另一款强大且易用的工具用于自动交易分析和交易。结合对神经网络原理和功能的深刻理解以及训练它们的准则来使用神经网络,将使您在创建盈利“EA 交易”的道路上飞速前进。