기고글 토론 "시계열 예측을 위한 ENCOG 머신 러닝 프레임워크와 함께 MetaTrader 5 지표 사용" - 페이지 5

 
Valentin Petkov:

안녕하세요,

이 문서를 encog v.3.2로 포팅하려고 하는데 3단계 시간 상자에 문제가 있습니다. 누군가 3 단계를 수행 할 수있습니까 ?


내 것을 사용하십시오 @Valentin petkov. 나는 encog 3.3을 사용하고 있습니다 ... 나는 당신을 도울 수 있기를 바랍니다 ...

시스템 사용;

사용 Encog.Util.CSV;

Encog.App.Quant.Indicators 사용;

사용 Encog.App.Quant.Indicators.Predictive;

using Encog.Util.Simple;

Encog.Neural.Networks 사용;

사용 Encog.Neural.Networks.Layers;

사용 Encog.Engine.Network.Activation;

Encog.Persist;

using Encog.App.Analyst;

using System.IO;

사용 Encog.App.Analyst.CSV.Normalize;

Encog.App.Analyst.Wizard;

사용 Encog.Util.Arrayutil;

사용 Encog.Util.ArrayUtil;

사용 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>

/// 미래 예측 지표를 적용하고 추가 예측 필드가 추가된 두 번째 파일을 생성합니다.

/// </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>

/// 첫 번째 숨겨진 레이어에 있는 뉴런의 수입니다.

/// </summary>

public const int HIDDEN1_NEURONS = 12;


/// <summary>

/// 훈련할 목표 오류입니다.

/// </summary>

public const double TARGET_ERROR = 0.01;


static void Main(string[] args)

{

// 1단계: 향후 지표 생성

Console.WriteLine("1단계: 닌자트레이더 내보내기 분석 및 향후 인디케이터 생성");

프로세스지표 ind = 새로운 프로세스지표();

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)); // RESULT_WINDOW를 반환합니다.

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

Console.WriteLine("외부 표시기 발견: " + externalIndicatorCount);

Console.ReadKey();

// 2단계: 정규화

Console.WriteLine("2단계: 향후 지표 생성");

var analyst = 새로운 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("3단계: 타임박스");

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("4단계: 훈련");

Console.ReadKey();

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

BasicNetwork network = 새로운 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(네트워크, 훈련, TARGET_ERROR);

EncogUtility.TrainConsole(network, training,1);

Console.ReadKey();

// 5단계: 신경망 및 통계 저장하기

Console.WriteLine("5단계: 신경망 및 정규화된 필드 저장");

Console.WriteLine("또는 여기 ?");

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

Console.WriteLine("오류 여기 ?");

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

Console.ReadKey();

}

}

}

 
Encog 3.3으로 포팅에 성공한 사람이 있나요? 인코그 3.3 이상 버전과 MQL이 호환되도록 하는 데는 관심이 없는 것 같습니다. 왜 MQL이 메타트레이더를 위한 자체 신경망을 만들지 않고, 컴맹을 위한 많은 작업을 피하는지 이해가 되지 않습니다.
 
tiagobr:
왜 MQL이 메타트레이더를 위한 자체 신경망을 만들지 않고, 컴맹을 위한 많은 작업을 피하는지 이해할 수 없습니다.
mql5.com에서 신경망을 검색하면 많은 기사와 코드를 찾을 수 있습니다. 모든 것이 "플러그 앤 플레이" 방식으로 제공됩니다. 여러분의 필요에 맞지 않나요?
 

안녕하세요,

프로그램 개발 방법을 아는 데 매우 도움이되는 기사 주셔서 감사합니다. 하지만 저는 초보자이고 모든 단계를 어떻게 실행할 수 있는지 알고 싶습니다. 스크립트를 사용하여 데이터를 다운로드 할 수 있지만 Metatrader에서 정규화 및 타임 박싱을 수행하는 방법을 모릅니다. 코드 실행에 대한 단계별 정보가 있습니까? 미리 감사드리며 너무 기본적인 질문이라 죄송합니다.

안부 인사

 

안녕하세요,

나는

7. 신경망 훈련

.Net Core, Mac용 Visual Basic Code, Encog 3.3을 다운로드했습니다.

Encog로 다음에 무엇을 해야 하나요?

미리 감사드립니다.

문서에 끊어진 링크도 있습니다.

업데이트가 있을까요?

오류 계산훈련 알고리즘

전체 ENCOG 문서는 온라인에서 확인할 수있습니다 .

 

안녕하세요 , 엔베스테오

MT5 로딩 뉴럴엔코더 표시 예외가 있는 샘플 코드를 다운로드했는데 도움을 요청합니다.


 

안녕하세요,

정말 훌륭한 기사이지만 동일한 결과를 재현하지 못했습니다.

지표라고 할 때 기사의 예와 같이 1과 -1로 정규화되지 않고 직선으로 만 플롯됩니다.

누군가이 문제를 해결하고 해결 했습니까?

 
Automated-Trading:

제어판->지역 및 언어->추가 설정...에서 소수점 기호를 "." 대신 "."로 변경해 보세요.


이것이 제 문제였습니다. 이것을 변경하고 해결하십시오.

고마워요!!

 
표시기가 그림을 그리지 않습니다. dll 파일을 다른 위치에 복사했지만 여전히 결과가 없습니다. 어떤 방법이 있을까요?
 
MT4에서 작동하나요?