記事"時系列予測に対する ENCOG マシン学習へのMetaTrader 5インディケータ使用"についてのディスカッション - ページ 5

 
Valentin Petkov:

こんにちは、

この記事をencog v.3.2に移植しようとしたのですが、ステップ3のタイムボックスに問題があります。 ステップ3が できる 人は いますか?


私はencog 3.3を使用しています。

using System.Util.CSV

using Encog.Util.CSV;

using Encog.App.Quant.Indicators;

using Encog.App.Quant.Indicators.Predictive;

using Encog.Util.Simple.Networks; using Encog.Neural.Networks; using Encog.Neural.Networks

using Encog.Neural.Networks;

usingEncog.Neural.Networks.Layers;

using Encog.Engine.Network.Activation.Neural.Networks; using Encog.Neural.Networks.Layers; using Encog.Engine.Network.Activation.Neural.Networks

を使用する;

usingEncog.App.Analyst.Layer;usingEncog.Persist;を使用します;

を使用する;

using Encog.App.Analyst.CSV.Normalize;

using Encog.App.Analyst.Wizard.Wizard; using System.IO; using Encog.App.Analyst.CSV.Normalize; using System.IO

using Encog.Util.Arrayutil;

using Encog.Util.ArrayUtil;

using Encog.ML.Data;


名前空間 Encog

{

public class Program

{

/// <summary>

/// すべてのファイルが格納されるディレクトリ。

/// </summary>

public const String DIRECTORY = "あなたのディレクトリ・ファイル";


/// <summary>

/// このファイルは EncogStreamWriter オブジェクトを使用して NinjaTrader からダウンロードする必要があります。

/// </summary>

public const String STEP1_FILENAME = DIRECTORY + "mt4export.csv";


/// <summary>

/// 予測未来インジケータを適用し、予測フィールドを追加した2つ目のファイルを生成します。

/// </summary>

public const String STEP2_FILENAME = DIRECTORY + "step2_future.csv";


/// <summary>

/// 次に、ファイル全体が正規化され、このファイルに格納されます。

/// </summary>

public const String STEP3_FILENAME = DIRECTORY + "step3_norm.csv";


/// <summary>

/// ファイルはトレーニングデータを作成するためにタイムボックス化されます。

/// </summary>

public const String STEP4_FILENAME = DIRECTORY + "step4_train.csv";


/// <summary>

/// 最後に、訓練されたニューラルネットワークがこのファイルに書き込まれます。

/// </summary>

public const String STEP5_FILENAME = DIRECTORY + "step5_network.eg";


/// <summary>

/// 入力ウィンドウのサイズ。 これは、次のバーを予測するために使用されるバーの数です。

/// </summary>

public const int INPUT_WINDOW = 6;


/// <summary>

/// 予測しようとする前方のバーの数。 これは通常1バーだけです。 ステップ1で使用される未来インジケータは、 /// より前方を見ている可能性があります。

/// もっと先の未来を見ることもできます。

/// </summary>

public const int PREDICT_WINDOW = 1;


/// <summary>

/// 最良の結果を得るための、前方のバーの数。

/// </summary>

public const int RESULT_WINDOW = 5;


/// <summary>

/// 第1隠れ層のニューロン数。

/// </summary>

public const int HIDDEN1_NEURONS = 12;


/// <summary>

/// 学習目標とする誤差。

/// </summary>

public const double TARGET_ERROR = 0.01;


static void Main(string[] args)

{

// ステップ1:フューチャー・インディケータの作成

Console.WriteLine("Step 1: Analyze NinjaTrader Export & Create Future Indicators");

ProcessIndicators ind = new ProcessIndicators();

ind.Analyze(新しいFileInfo(STEP1_FILENAME), true, CSVFormat.English); //.Analyze(STEP1_FILENAME, true, AnalystFileFormat.DecpntComma);

int externalIndicatorCount = ind.Columns.Count - 3;

ind.AddColumn(new BestReturn(RESULT_WINDOW, true)); // RESULT_WINDOW を表示する。

ind.Process(new FileInfo(STEP2_FILENAME));// Process(STEP2_FILENAME);

Console.WriteLine("External indicators found: " + externalIndicatorCount);

Console.ReadKey();

// ステップ2:正規化

Console.WriteLine("Step 2: Create Future Indicators");

var analyst = new EncogAnalyst();

var wizard = new AnalystWizard(analyst);

wizard.Wizard(new FileInfo(STEP2_FILENAME), true, AnalystFileFormat.DecpntComma);

Analyst.Script.Normalize.NormalizedFields[0].Action=NormalizationAction.PassThrough;

analyst.Script.Normalize.NormalizedFields[1].Action=NormalizationAction.PassThrough;


Analyst.Script.Normalize.NormalizedFields[2].Action = NormalizationAction.Normalize;

analyst.Script.Normalize.NormalizedFields[3].Action=NormalizationAction.Normalize;

analyst.Script.Normalize.NormalizedFields[4].Action=NormalizationAction.Normalize;

analyst.Script.Normalize.NormalizedFields[5].Action=NormalizationAction.Normalize;

analyst.Script.Normalize.NormalizedFields[6].Action=NormalizationAction.Normalize;


var norm = new AnalystNormalizeCSV();

norm.Analyze(new FileInfo(STEP2_FILENAME), true, CSVFormat.English, analyst);

norm.ProduceOutputHeaders = true;

norm.Normalize(new FileInfo(STEP3_FILENAME));

// ニューロン数

int inputNeurons = INPUT_WINDOW * externalIndicatorCount;

int outputNeurons = PREDICT_WINDOW;

Console.WriteLine("inputneurons : {0}",inputNeurons);

Console.WriteLine("outputNeurons : {0}", outputNeurons);

Console.ReadKey();

// ステップ3:タイムボックス(オプション)

Console.WriteLine("Step 3: Timebox");

var twcsv = new TemporalWindowCSV();

twcsv.Analyze(new FileInfo(STEP3_FILENAME), true, CSVFormat.English);

twcsv.InputWindow = INPUT_WINDOW;

twcsv.PredictWindow = PREDICT_WINDOW;

int index = 0;

twcsv.Fields[index++].Action = TemporalType.Ignore;

twcsv.Fields[index++].Action = TemporalType.Ignore;

twcsv.Fields[index++].Action = TemporalType.Ignore;

for (int i = 0; i < externalIndicatorCount; i++)

twcsv.Fields[index++].Action = TemporalType.Input; // 外部インジケータ

twcsv.Fields[index++].Action = TemporalType.Predict; // PredictBestReturn


twcsv.Process(STEP4_FILENAME);

Console.ReadKey();

// ステップ4:ニューラルネットワークを訓練する

Console.WriteLine("Step 4: Train");

Console.ReadKey();

IMLDataSet training = EncogUtility.LoadCSV2Memory(STEP4_FILENAME, inputNeurons, outputNeurons, true, CSVFormat.English,false);

BasicNetwork network = new BasicNetwork();

network.AddLayer(new BasicLayer(new ActivationTANH(), true, inputNeurons));

network.AddLayer(new BasicLayer(new ActivationTANH(), true, HIDDEN1_NEURONS));

network.AddLayer(new BasicLayer(new ActivationLinear(), true, outputNeurons));

network.Structure.FinalizeStructure();

network.Reset();


//EncogUtility.TrainToError(network, training, TARGET_ERROR);

EncogUtility.TrainConsole(network, training,1);

Console.ReadKey();

// ステップ5:ニューラルネットワークと統計情報の保存

Console.WriteLine("Step 5: Save Neural network and normalized fields");

Console.WriteLine("or here ?");

EncogDirectoryPersistence.SaveObject(new FileInfo(STEP5_FILENAME), network);

Console.WriteLine("error here ?");

//EncogDirectoryPersistence.SaveObject(new FileInfo(STEP5_FILENAME), analyst);

Console.ReadKey();

}

}

}

 
Encog 3.3への移植に成功した人はいますか?MQLをENCOG 3.3以降のバージョンと互換性を持たせることに関心がないようです。なぜMQLがメタトレーダー用のニューラルネットワークを 独自に作らないのか理解できません。
 
tiagobr:
MQLがなぜメタトレーダー用のニューラルネットワークを独自に作らないのか理解できない。
mql5.comでニューラル・ネットワークを 検索すると、たくさんの記事やコードがヒットします。あなたのニーズには合わないだろうか?
 

こんにちは、

プログラムを開発する方法を知るのにとても役に立ちます。しかし、私は初心者で、すべてのステップを実行する方法を知りたいのです。スクリプトを使用してデータをダウンロードすることはできましたが、メタトレーダーでどのように正規化とタイムボックス化を行うのかわかりません。コードを実行するためのステップバイステップの情報はありますか?基本的な質問で申し訳ありません。

よろしくお願いします。

 

こんにちは、

私は

7.ニューラルネットワークのトレーニング

.Net Core、Visual Basic Code for Mac、Encog 3.3をダウンロードしました。

Encogで次に何をすべきでしょうか?

よろしくお願いします。

この記事にはリンク切れもあります。

アップデートはありますか?

例えば

エラー 計算と トレーニング・アルゴリズム

ENCOGの完全なドキュメントは オンラインで入手可能です

 

こんにちは、nvesteo

サンプルコードをダウンロードしたのですが、MT5のneuralencogindicatorの読み込みで例外が表示され、助けを求めています。


 

やあ、みんな、

本当に素晴らしい記事ですが、私は同じ結果を再現できませんでした。

インジケータを呼び出すと、記事の例のように1と-1に正規化されず、ただの直線がプロットされます。

どなたかこの問題を解決された方はいらっしゃいますか?

 
Automated-Trading:

コントロールパネル」→「地域と言語」→「追加設定」で、小数点記号を「,」ではなく「...」に変更してみてください。


これが私の問題でした。これを変更して解決。

ありがとうございました!

 
インジケーターは何も描画しない。DLLファイルを別の場所にコピーしても、結果は変わりません。心当たりは?
 
MT4で使用できますか?