MetaTrader 5 Python 사용자 그룹 - Metatrader에서 Python을 사용하는 방법 - 페이지 83

 

그렇군요 - 제대로 준비하지 못한 ....

그것에 대해 어디에서 읽을 수 있습니까? 내 생각에 국회를 위한 자료, 중요한 것, 그렇지 않은 것 등을 준비한다.

한 가지는 나에게 미스터리입니다. 동일한 유형의 데이터를 "묶음으로" 수집해야 합니까 아니면 사용할 수 있게 되면 추가해야 합니까?

어느 쪽에서 데이터를 수집할 것인가: 더 많은 "이전"에서 또는 "새로"에서?

 
Сергей Таболин :

그렇군요 - 제대로 준비하지 못한 ....

그것에 대해 어디에서 읽을 수 있습니까? 내 생각에 국회를 위한 자료, 중요한 것, 그렇지 않은 것 등을 준비한다.

한 가지는 나에게 미스터리 입니다. 동일한 유형의 데이터를 "묶음으로" 수집해야 합니까 아니면 사용할 수 있게 되면 추가해야 합니까?

어느 쪽에서 데이터를 수집할 것인가: 더 많은 "이전"에서 또는 "새로"에서?

MO 주제에서 누군가에게 답변을 요청하십시오. 이 스레드는 커넥터에 관한 것입니다.

 
Сергей Таболин :

문제는 정상화가 비참한 일이라는 것입니다!

설명하겠습니다. 데이터 A, B, C가 있습니다...

의미 등이 다릅니다. (Google의) 모든 사람은 행이 아니라 열(A-A-A, B-B-B, B-B-B)로 정규화해야 한다고 씁니다. 이것은 논리적으로 이해할 수 있습니다.

그러나 "예측"할 새 데이터가 있을 때 행이 하나뿐인 경우 정규화하는 방법은 무엇입니까? 그리고 이 행의 어떤 항이 훈련 및 테스트 데이터에 대한 정규화를 넘어설 수 있습니까?

그리고 라인에 대한 정규화는 어떤 영향도 주지 않습니다!

사실 이 뉘앙스를 확인한 후 이 "영혼의 외침"이 탄생했습니다))))

정규화는 계수를 유지합니다. 범위를 벗어나지 않으려면 많은 양의 기록을 가져와 정규화한 다음 이러한 계수를 적용해야 합니다. 새로운 데이터로

정규화되지 않은 데이터에서 그리드는 학습하지 않거나 제대로 학습하지 않습니다. 그들은 그러한 기능을 가지고 있습니다
 
Maxim Dmitrievsky :

정규화는 계수를 유지합니다. 범위를 벗어나지 않으려면 많은 양의 기록을 가져와 정규화한 다음 이러한 계수를 적용해야 합니다. 새로운 데이터로

정규화되지 않은 데이터에서 그리드는 학습하지 않거나 제대로 학습하지 않습니다. 그들은 그러한 기능을 가지고 있습니다

모든 것이 논리적이고 이해할 수 있지만! 네트워크는 학습 중입니다! 또한, 비정규화 데이터를 사용할 경우 훈련이 더 어렵다는 정보가 있지만 이는 중요하지 않습니다.

그리고 범위를 벗어나지 않는 방법은 무엇입니까? 예를 들어 가격이 있습니다. 교육 및 테스트 데이터에 대한 가격대가 있습니다. 123-324를 가정해 보겠습니다. 그러나 오늘날에는 가격이 421까지 올랐습니다. 어떻게 이 범위에 들어갈까요?

그러나 우리는 질문의 본질에서 멀어졌습니다. 정상적인 훈련과 테스트에서 예측이 전혀 아무 것도 아닌 이유는 무엇입니까?

 

친애하는, 내 스키는 다시 가지 않습니다 ... 도움을 요청합니다.

나는 훈련된 네트워크 의 예측을 확인하기 위해 작은 테스터를 스케치하기로 결정했습니다.

# Загрузка данных
df_full = pd.read_csv(flname_csv, header=None)
r, c = df_full.shape
border = c - row_signal
test_data = np.array(df_full.values[:, :border])
test_verification = np.array(df_full.values[:, border:])
print(test_data[2], 'len =', len(test_data[2]))
print(test_verification[2], 'len =', len(test_verification[2]))

여기 모든 것이 괜찮습니다.

[ 3.00000 e+ 00 7.00000 e+ 00 1.14656 e+ 00 1.14758 e+ 00 1.14656 e+ 00 1.14758 e+ 00
 3.00000 e+ 00 7.00000 e+ 00 1.27800 e+ 03 1.27800 e+ 03 3.00000 e+ 00 7.00000 e+ 00
 1.14758 e+ 00 1.14857 e+ 00 1.14758 e+ 00 1.14857 e+ 00 3.00000 e+ 00 8.00000 e+ 00
 2.93000 e+ 02 6.20000 e+ 02 3.00000 e+ 00 8.00000 e+ 00 1.14857 e+ 00 1.14960 e+ 00
 1.14821 e+ 00 1.14960 e+ 00 3.00000 e+ 00 8.00000 e+ 00 4.78000 e+ 02 7.23000 e+ 02
 3.00000 e+ 00 8.00000 e+ 00 1.14960 e+ 00 1.14966 e+ 00 1.14860 e+ 00 1.14860 e+ 00
 3.00000 e+ 00 8.00000 e+ 00 2.32100 e+ 03 2.41100 e+ 03 ] len =  40
[ 1 . 0 .] len =  2

그리고 트린데츠...

 if num_check_rows > r or num_check_rows == 0 :
    num_check_rows = r

model = tf.keras.models.Sequential()
model = tf.keras.models.load_model(flname)
model.summary()

for i in range(num_check_rows):
    b = model.predict(test_data[i])
    a = b[ 0 ]
    x = a[ 0 ]
    y = a[ 1 ]
    x = format(x, '.5f' )
    y = format(y, '.5f' )
    print(f 'ожидалось {test_verification[i]} >>> получили [{x} {y}]' )

욕을 하다

Model: "sequential_16"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
dense (Dense)                (None, 20 )                 820        
_________________________________________________________________
dropout (Dropout)            (None, 20 )                 0          
_________________________________________________________________
dense_1 (Dense)              (None, 10 )                 210        
_________________________________________________________________
dense_2 (Dense)              (None, 2 )                 22         
=================================================================
Total params : 1 , 052
Trainable params : 1 , 052
Non-trainable params : 0
_________________________________________________________________

Traceback (most recent call last):
  File "M:/PythonProgs/PycharmProjects/NNets/ТестерНС.py" , line 79 , in <module>
    b = model.predict(test_data[i])
.....
ValueError: Error when checking input: expected dense_input to have shape ( 40 ,) but got array with shape ( 1 ,)

뭐가 문제 야?

 

인터넷을 뒤지고 내 코드를 작성한 기사를 본 후 "초보자를 위한" 기사의 모든 작성자는 중요한 것을 말하는 것을 잊어버릴 것이라는 실망스러운 결론에 도달했습니다...

여기 저기 - 네트워크를 훈련 할 때 StandardScaler 가 사용된다는 것이 밝혀졌습니다. 그리고 기사에는 구구가 없다는 사실에 대해선 이것이 무엇을 위한 것인지.

또한 StandardScaler는 표준화에 관한 것입니다. 그리고 어떻게 단일 입력 벡터에 대해 동일한 표준화를 수행할 수 있습니까? 특히 단어가 아닙니다.

데이터세트의 열에 따라 "표준화"가 수행된다는 것은 더 나쁩니다! 아니요, 그냥 통계의 경우 - 이것은 정상입니다. 그리고 예측을 위해 - 이것은 "*** 가득 찼습니다"! 새로운 데이터가 나타날 때 새로운 데이터가 "표준화" 범위에 들어갈 수 있도록 새로운 방식으로 네트워크를 훈련시켜야 하는 건가요???

날뛰다!

이 "새로운 네트워크"가 학습하는 동안 상황은 이미 근본적으로 바뀔 수 있습니다. 글쎄, 이것이 필요한 것은 무엇입니까?

여기에 "선명한"라이브러리의 무리가있는 Python이 있습니다 ....

저를 설득해 주시면 정말 감사하겠습니다.


추신 나는 단지 내가 헛되이 파이썬에 시간을 보냈다고 믿고 싶습니다.
 
Сергей Таболин :

인터넷을 뒤지고 내 코드를 작성한 기사를 본 후 "초보자를 위한" 기사의 모든 작성자는 중요한 것을 말하는 것을 잊어버릴 것이라는 실망스러운 결론에 도달했습니다...

여기 저기 - 네트워크를 훈련할 때 StandardScaler가 사용되는 것으로 나타났습니다. 그리고 기사에는 구구가 없다는 사실에 대해선 이것이 무엇을 위한 것인지.

또한 StandardScaler는 표준화에 관한 것입니다. 그리고 어떻게 단일 입력 벡터에 대해 동일한 표준화를 수행할 수 있습니까? 특히 단어가 아닙니다.

데이터세트의 열에 따라 "표준화"가 수행된다는 것은 더 나쁩니다! 아니요, 그냥 통계의 경우 - 이것은 정상입니다. 그리고 예측을 위해 - 이것은 "*** 가득 찼습니다"! 새로운 데이터가 나타날 때 새로운 데이터가 "표준화" 범위에 들어갈 수 있도록 새로운 방식으로 네트워크를 훈련시켜야 하는 건가요???

날뛰다!

이 "새로운 네트워크"가 학습하는 동안 상황은 이미 근본적으로 바뀔 수 있습니다. 글쎄, 이것이 무엇이 필요합니까?

여기에 "선명한"라이브러리의 무리가있는 Python이 있습니다 ....

저를 설득해 주시면 정말 감사하겠습니다.


추신 나는 단지 내가 헛되이 파이썬에 시간을 보냈다고 믿고 싶습니다.
아마도 이것이 시작에 불과하기 때문일 것입니다.
그러나 나는 최근에 mt.에 대한 파이썬의 가능성에 관심을 갖게 되었습니다. 그리고 그것이 가능한지에 대해 아무도 대답하지 않았습니다. 이것에 추가하여 mql4에서는 작동하지 않습니다. 나는 시간을 낭비하지 않기로 결정했습니다(시간이 지나면 상황이 더 좋아질 것입니다.
 

나는 슬픔을 절반으로 처리했습니다. )))

그러나 이제 또 다른 질문이 생겼습니다(이 모든 것을 시작하기 위해).

네트워크를 훈련 할 때 다음과 같은 결과를 얻었습니다.

Score on train data     Score on test data      Test loss       Test acc
0.970960                  0.968266                  0.199544          0.981424

즉, 결과는 훌륭합니다!

테스터를 실행합니다. 이 결과를 얻었습니다

Model: "sequential_16"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
dense (Dense)                (None, 15 )                 465        
_________________________________________________________________
dropout (Dropout)            (None, 15 )                 0          
_________________________________________________________________
dense_1 (Dense)              (None, 7 )                 112        
_________________________________________________________________
dense_2 (Dense)              (None, 2 )                 16         
=================================================================
Total params : 593
Trainable params : 593
Non-trainable params : 0
_________________________________________________________________
2021 - 01 - 18 17 : 59 : 04.495645 : I tensorflow/stream_executor/platform/ default /dso_loader.cc: 44 ] Successfully opened dynamic library cublas64_10.dll
ожидалось [ 0 . 1 .] >>> получили [ 0.08348 0.08859 ]
ожидалось [ 0 . 1 .] >>> получили [ 0.08324 0.08838 ]
ожидалось [ 0 . 0 .] >>> получили [ 0.08667 0.09141 ]
ожидалось [ 0 . 0 .] >>> получили [ 0.08263 0.08784 ]
ожидалось [ 0 . 0 .] >>> получили [ 0.09200 0.09218 ]
ожидалось [ 0 . 0 .] >>> получили [ 0.08351 0.08861 ]
ожидалось [ 0 . 0 .] >>> получили [ 0.08944 0.09384 ]
ожидалось [ 1 . 0 .] >>> получили [ 0.08313 0.08828 ]
ожидалось [ 1 . 0 .] >>> получили [ 0.08432 0.08933 ]

Process finished with exit code 0

음, 어디에서 네트워크가 98% 정확한 결과로 훈련되었는지 말해주세요????

 

안녕하세요, 토론에서 몇 페이지를 읽어도 다음 질문에 대한 구체적인 내용을 찾지 못했습니다.


- 현재 MT 및 R 통합을 위해 MetaTraderR 또는 MetaTrader5 패키지와 같이 작동하는 것이 있습니까?


건배

 

실례합니다, 나는 내 서사시를 계속할 것입니다 ...))))

동일한 Google에서 조금 더 많은 지식을 수집한 후 다음과 같은 결론에 도달했습니다.

  1. 데이터는 "균형"되어야 합니다. 예를 들어, 1000개의 입력 데이터 중 신호가 100개에만 나타나면 최소한 1000 - ((1000 - 100) /3) = 700 "빈" 데이터(신호를 형성하지 않음)를 제거해야 합니다.
  2. 나머지는 "정규화"하는 것이 바람직합니다. 0-1 범위를 가져옵니다. 그러나 여기에는 정규화의 "범위"를 선택하는 데 명백한 어려움이 있습니다. 최소는 무엇이며 최대는 무엇입니까? 나는 아직 모른다. 각 입력 배열을 범위로만 정규화합니다...

이 두 가지 조건을 충족한 후 네트워크 학습 이 눈에 띄게 감소했습니다. 게다가 내가 발견한 것은

  1. 이전에 폐기된 일부 손실 함수가 더 잘 작동합니다.
  2. 더 적은 수의 은닉층이 있는 결과가 우세하기 시작했습니다.
  3. 훈련 epoch의 수를 확인하는 것이 남아 있습니다.

또한, 또 다른 질문이 생겼습니다. 네트워크의 응답은 무엇입니까?

  1. 하나의 뉴런(0-1-2)(매수-매도 신호 없음)
  2. 두 개의 뉴런 [0-0],[1-0],[0-1]
  3. 세 개의 뉴런 [0-0-1],[1-0-0],[0-1-0]
???