"Zaman Serilerinin Tahmini için MetaTrader 5 Göstergelerini ENCOG Makine Öğrenimi Çerçevesi ile Kullanma" makalesi için tartışma - sayfa 5

 
Valentin Petkov:

Merhaba arkadaşlar,

Bu makaleyi encog v.3.2'ye taşımaya çalışıyorum ancak adım 3 zaman kutularıyla ilgili sorunum var. Birisi 3. adımı yapabilir mi?


Benimkini kullan @Valentin petkov. encog 3.3 kullanıyorum. umarım size yardımcı olabilirim.

using System;

using Encog.Util.CSV;

using Encog.App.Quant.Indicators;

using Encog.App.Quant.Indicators.Predictive;

using Encog.Util.Simple;

using Encog.Neural.Networks;

using Encog.Neural.Networks.Layers;

using Encog.Engine.Network.Activation;

using Encog.Persist;

using Encog.App.Analyst;

using System.IO;

using Encog.App.Analyst.CSV.Normalize;

using Encog.App.Analyst.Wizard;

using Encog.Util.Arrayutil;

using Encog.Util.ArrayUtil;

using Encog.ML.Data;


namespace Encog

{

public class Program

{

/// <summary>

/// Tüm dosyaların depolanacağı dizin.

/// </summary>

public const String DIRECTORY = "dizin dosyalarınız";


/// <summary>

/// Tüm süreci başlatan girdi dosyası. Bu dosya EncogStreamWriter nesnesi kullanılarak NinjaTrader'dan indirilmelidir.

/// </summary>

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


/// <summary>

/// Tahmine dayalı bir gelecek göstergesi uyguluyoruz ve ek tahmin alanı eklenmiş ikinci bir dosya oluşturuyoruz.

/// </summary>

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


/// <summary>

/// Daha sonra tüm dosya normalleştirilir ve bu dosyada saklanır.

/// </summary>

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


/// <summary>

/// Eğitim verisi oluşturmak için dosya zaman kutusuna alınır.

/// </summary>

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


/// <summary>

/// Son olarak, eğitilen sinir ağı bu dosyaya yazılır.

/// </summary>

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


/// <summary>

/// Giriş penceresinin boyutu. Bu, bir sonraki çubuğu tahmin etmek için kullanılan çubuk sayısıdır.

/// </summary>

public const int INPUT_WINDOW = 6;


/// <summary>

/// Tahmin etmeye çalıştığımız ileriye dönük çubuk sayısı. Bu genellikle sadece 1 çubuktur. 1. adımda kullanılan gelecek göstergesi

/// geleceğe daha iyi bakalım.

/// </summary>

public const int PREDICT_WINDOW = 1;


/// <summary>

/// En iyi sonucu aramak için ileriye doğru çubuk sayısı.

/// </summary>

public const int RESULT_WINDOW = 5;


/// <summary>

/// İlk gizli katmandaki nöron sayısı.

/// </summary>

public const int HIDDEN1_NEURONS = 12;


/// <summary>

/// Eğitilecek hedef hata.

/// </summary>

public const double TARGET_ERROR = 0.01;


static void Main(string[] args)

{

// Adım 1: Gelecek göstergeleri oluşturun

Console.WriteLine("Adım 1: NinjaTrader Dışa Aktarımını Analiz Edin ve Gelecek Göstergeleri Oluşturun");

ProcessIndicators ind = new ProcessIndicators();

ind.Analyze(new 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)); // najlepszy zwrot w nastepnym RESULT_WINDOW

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

Console.WriteLine("Harici göstergeler bulundu: " + externalIndicatorCount);

Console.ReadKey();

// Adım 2: Normalleştir

Console.WriteLine("Adım 2: Gelecek Göstergeleri Oluşturun");

var analist = yeni EncogAnalist();

var wizard = new AnalystWizard(analyst);

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

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

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


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

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

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

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

analist.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));

// nöron sayıları

int inputNeurons = INPUT_WINDOW * externalIndicatorCount;

int outputNeurons = PREDICT_WINDOW;

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

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

Console.ReadKey();

// Adım 3: Zaman kutusu (isteğe bağlı)

Console.WriteLine("Adım 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; // harici göstergeler

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


twcsv.Process(STEP4_FILENAME);

Console.ReadKey();

// Adım 4: Sinir ağını eğitin

Console.WriteLine("Adım 4: Tren");

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(ağ, eğitim,1);

Console.ReadKey();

// Adım 5: Sinir ağını ve istatistikleri kaydedin

Console.WriteLine("Adım 5: Sinir ağını ve normalleştirilmiş alanları kaydedin");

Console.WriteLine("veya buraya ?");

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

Console.WriteLine("burada hata ?");

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

Console.ReadKey();

}

}

}

 
Encog 3.3'e taşıma konusunda başarılı olan var mı? Görünüşe göre MQL'i ENCOG 3.3 ve sonraki sürümlerle uyumlu hale getirmekle ilgilenen yok. MQL'in neden metatrader için kendi sinir ağını oluşturmadığını anlamıyorum, ölümlüler için çok fazla işten kaçınıyor.
 
tiagobr:
MQL'in neden metatrader için kendi sinir ağını oluşturmadığını anlamıyorum, böylece sıradan ölümlüler için çok fazla iş yapmaktan kaçınıyor.
Eğer mql5.com'da sinir ağları için arama yaparsanız birçok makale ve kod elde edersiniz - her şey sizin için "tak ve çalıştır" temelinde mevcuttur. İhtiyaçlarınıza uymuyorlar mı?
 

Merhaba,

Makale için teşekkürler çünkü programların nasıl geliştirileceğini bilmeye başlamak için çok yararlı. Ancak ben bir acemiyim ve tüm adımları nasıl çalıştırabileceğimi bilmek istiyorum. Verileri komut dosyasını kullanarak indirebilirim, ancak daha sonra Metatrader'da normalleştirme ve zaman kutusunu nasıl gerçekleştireceğimi bilmiyorum. Kodları çalıştırmakla ilgili adım adım bir bilgi var mı? Şimdiden teşekkürler ve bu kadar basit bir soru için özür dilerim.

Saygılarımla

 

Merhaba,

Takıldım kaldım.

7. Sinir Ağı Eğitimi

.Net Core, Mac için Visual Basic Code, Encog 3.3'ü indirdim

Encog ile bundan sonra ne yapmalıyım?

Şimdiden teşekkürler.

Ayrıca makalede kırık linkler var.

Herhangi bir güncelleme olacak mı?

yani.

hata hesaplama ve eğitim algoritmaları

ENCOG belgelerinin tamamı çevrimiçi olarak mevcuttur.

 

Merhaba , nvesteo

Örnek kodu indirdim, MT5 yükleme neuralencogindicator ekran istisnası ile yardım isteyin.


 

Merhaba beyler,

Gerçekten mükemmel bir makale, ancak aynı sonucu yeniden üretmedim.

Gösterge çağrıldığında, makale örneğinde olduğu gibi 1 ve -1'e normalleştirilmez ve sadece düz bir çizgi çizer.

Birisi bu sorunu yaşadı ve çözdü mü?

 
Automated-Trading:

Denetim Masası->Bölge ve Dil->Ek ayarlar'da Ondalık sembolünü "," yerine "." olarak değiştirmeyi deneyin...


Bu benim sorunumdu. Bunu değiştirin ve çözün.

TEŞEKKÜRLER!!!

 
Gösterge çizim yapmıyor. Dll dosyalarını farklı konumlara kopyaladım, hala sonuç yok. Bir fikrin var mı?
 
Bu MT4 ile çalışabilir mi?