"Zaman Serilerinin Tahmini için MetaTrader 5 Göstergelerini ENCOG Makine Öğrenimi Çerçevesi ile Kullanma" makalesi için tartışma - sayfa 5
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
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();
}
}
}
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.
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ü?
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!!!