記事"時系列予測に対する ENCOG マシン学習へのMetaTrader 5インディケータ使用"についてのディスカッション - ページ 5 123456 新しいコメント ryuga68 2015.11.17 05:29 #41 Valentin Petkov:こんにちは、この記事をencog v.3.2に移植しようとしたのですが、ステップ3のタイムボックスに問題があります。 ステップ3が できる 人は いますか?私はencog 3.3を使用しています。using System.Util.CSVusing 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.Networksusing 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.IOusing 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; // PredictBestReturntwcsv.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();}}} Discussion of article "Using 時系列予測に対する ENCOG マシン学習へのMetaTrader 5インディケータ使用 Comparative testing of recurrent tiagobr 2015.11.22 10:18 #42 Encog 3.3への移植に成功した人はいますか?MQLをENCOG 3.3以降のバージョンと互換性を持たせることに関心がないようです。なぜMQLがメタトレーダー用のニューラルネットワークを 独自に作らないのか理解できません。 Stanislav Korotky 2015.11.22 21:07 #43 tiagobr: MQLがなぜメタトレーダー用のニューラルネットワークを独自に作らないのか理解できない。 mql5.comでニューラル・ネットワークを 検索すると、たくさんの記事やコードがヒットします。あなたのニーズには合わないだろうか? mgarciat 2016.04.16 14:48 #44 こんにちは、プログラムを開発する方法を知るのにとても役に立ちます。しかし、私は初心者で、すべてのステップを実行する方法を知りたいのです。スクリプトを使用してデータをダウンロードすることはできましたが、メタトレーダーでどのように正規化とタイムボックス化を行うのかわかりません。コードを実行するためのステップバイステップの情報はありますか?基本的な質問で申し訳ありません。よろしくお願いします。 Chee Chua 2016.07.14 03:12 #45 こんにちは、私は 7.ニューラルネットワークのトレーニング.Net Core、Visual Basic Code for Mac、Encog 3.3をダウンロードしました。Encogで次に何をすべきでしょうか?よろしくお願いします。この記事にはリンク切れもあります。アップデートはありますか?例えばエラー 計算と トレーニング・アルゴリズムENCOGの完全なドキュメントは オンラインで入手可能です。 Aipe Li 2016.12.22 09:15 #46 こんにちは、nvesteo サンプルコードをダウンロードしたのですが、MT5のneuralencogindicatorの読み込みで例外が表示され、助けを求めています。 Mateus Oliveira 2016.12.28 00:44 #47 やあ、みんな、本当に素晴らしい記事ですが、私は同じ結果を再現できませんでした。インジケータを呼び出すと、記事の例のように1と-1に正規化されず、ただの直線がプロットされます。どなたかこの問題を解決された方はいらっしゃいますか? ファイル: Captura_de_tela_2016-12-27_21.40.31.png 114 kb Mateus Oliveira 2016.12.29 00:12 #48 Automated-Trading:コントロールパネル」→「地域と言語」→「追加設定」で、小数点記号を「,」ではなく「...」に変更してみてください。これが私の問題でした。これを変更して解決。ありがとうございました! Cagatay Tezsezen 2017.04.25 12:45 #49 インジケーターは何も描画しない。DLLファイルを別の場所にコピーしても、結果は変わりません。心当たりは? bmkinyua 2017.06.15 06:21 #50 MT4で使用できますか? 123456 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
こんにちは、
この記事を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();
}
}
}
MQLがなぜメタトレーダー用のニューラルネットワークを独自に作らないのか理解できない。
こんにちは、
プログラムを開発する方法を知るのにとても役に立ちます。しかし、私は初心者で、すべてのステップを実行する方法を知りたいのです。スクリプトを使用してデータをダウンロードすることはできましたが、メタトレーダーでどのように正規化とタイムボックス化を行うのかわかりません。コードを実行するためのステップバイステップの情報はありますか?基本的な質問で申し訳ありません。
よろしくお願いします。
こんにちは、
私は
7.ニューラルネットワークのトレーニング
.Net Core、Visual Basic Code for Mac、Encog 3.3をダウンロードしました。
Encogで次に何をすべきでしょうか?
よろしくお願いします。
この記事にはリンク切れもあります。
アップデートはありますか?
例えば
エラー 計算と トレーニング・アルゴリズム
ENCOGの完全なドキュメントは オンラインで入手可能です。
こんにちは、nvesteo
サンプルコードをダウンロードしたのですが、MT5のneuralencogindicatorの読み込みで例外が表示され、助けを求めています。
やあ、みんな、
本当に素晴らしい記事ですが、私は同じ結果を再現できませんでした。
インジケータを呼び出すと、記事の例のように1と-1に正規化されず、ただの直線がプロットされます。
どなたかこの問題を解決された方はいらっしゃいますか?
コントロールパネル」→「地域と言語」→「追加設定」で、小数点記号を「,」ではなく「...」に変更してみてください。
これが私の問題でした。これを変更して解決。
ありがとうございました!