Diskussion zum Artikel "Selbstoptimierender Expert Advisor mit MQL5 und Python (Teil III): Den Boom-1000-Algorithmus knacken"

 

Neuer Artikel Selbstoptimierender Expert Advisor mit MQL5 und Python (Teil III): Den Boom-1000-Algorithmus knacken :

In dieser Artikelserie erörtern wir, wie wir Expert Advisors entwickeln können, die sich selbständig an dynamische Marktbedingungen anpassen. Im heutigen Artikel werden wir versuchen, ein tiefes neuronales Netz auf die synthetischen Märkte von Derivativen abzustimmen.

Wir werden alle synthetischen Märkte von Deriv einzeln analysieren, beginnend mit ihrem bekanntesten synthetischen Markt, dem Boom 1000. Der Boom 1000 ist berüchtigt für sein volatiles und unberechenbares Verhalten. Der Markt ist durch langsame, kurze und gleich große Abwärtskerzen gekennzeichnet, auf die in unregelmäßigen Abständen heftige, wolkenkratzergroße Aufwärtskerzen folgen. Die Aufwärtskerzen sind besonders schwierig zu entschärfen, weil die mit der Kerze verbundenen Ticks normalerweise nicht an das Kundenterminal gesendet werden, was bedeutet, dass alle Stop-Losses jedes Mal mit garantiertem Slippage durchbrochen werden. 



Daher haben die meisten erfolgreichen Händler Strategien entwickelt, die darauf basieren, beim Handel mit dem Boom 1000 nur Kaufgelegenheiten wahrzunehmen. Erinnern Sie sich daran, dass der Boom 1000 auf dem M1-Chart 20 Minuten lang fallen kann und diese gesamte Bewegung dann in einer Aufwärtskerze auf den Anfang zurückspringen kann! Angesichts des übermächtigen steigenden Charakters des Boom 1000 versuchen erfolgreiche Händler, dies zu ihrem Vorteil zu nutzen, indem sie einem Kauf-Setup beim Boom 1000 mehr Gewicht beimessen als einem Verkaufs-Setup.

Autor: Gamuchirai Zororo Ndawana

 
MetaQuotes:
Wir werden alle synthetischen Derivatemärkte einzeln analysieren, beginnend mit dem bekanntesten - Boom 1000.

Vielen Dank für diesen Artikel! Ich beobachte diese Indizes schon seit langem, wusste aber nicht, von welcher Seite ich sie angehen sollte.

Bitte machen Sie weiter!

 
#Das Modell einrichten
model = MLPClassifier(hidden_layer_sizes=(30,10),max_iter=200)

#Kreuzvalidierung des Modells
for i,(train,test) in enumerate(tscv.split(train_X)):
    model.fit(
        train_X.loc[train[0]:train[-1],:],
        ohlc_train_y.loc[train[0]:train[-1]]
    )
    validation_accuracy.iloc[i,0] = accuracy_score(
        ohlc_train_y.loc[test[0]:test[-1]],
        model.predict(train_X.loc[test[0]:test[-1],:])
    )

---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
Cell In[25], line 5
3 #Cross validate the model
4 for i,(train,test) in enumerate(tscv.split(train_X)):
----> 5 model.fit(train_X.loc[train[0]:train[-1],:],ohlc_train_y.loc[train[0]:train[-1]])
6 validation_accuracy.iloc[i,0] = accuracy_score(ohlc_train_y.loc[test[0]:test[-1]],model.predict(train_X.loc[test[0]:test[-1],:]))

File c:\Python\ocrujenie\.ordi\Lib\site-packages\sklearn\base.py:1389, in _fit_context.<locals>.decorator.<locals>.wrapper(estimator, *args, **kwargs)
1382 estimator._validate_params()
1384 with config_context(
1385 skip_parameter_validation=(
1386 prefer_skip_nested_validation or global_skip_validation
1387 )
1388 ):
-> 1389 return fit_method(estimator, *args, **kwargs)

File c:\Python\ocrujenie\.ordi\Lib\site-packages\sklearn\neural_network\_multilayer_perceptron.py:754, in BaseMultilayerPerceptron.fit(self, X, y)
736 @_fit_context(prefer_skip_nested_validation=True)
737 def fit(self, X, y):
738 """Fit the model to data matrix X and target(s) y.
739 740 Parameters (...) 752 Returns a trained MLP model. 753 """
...

476 "Found input variables with inconsistent numbers of samples: %r"
477 % [int(l) for l in lengths]
478 )
ValueError: Found input variables with inconsistent numbers of samples: [4139, 4133]

Output is truncated. View as a scrollable element or open in a text editor. Adjust cell output settings...

Ich habe mehrere Tools ausprobiert, und bei jedem gibt Ihr Modell einenFehler aufgrund einer Nichtübereinstimmung zwischen den Dimensionen der Eingabedaten (X) und den Zielvariablen (y).

 
Janis Ozols # :

Vielen Dank für diesen Artikel! Ich analysiere diese Indizes schon seit langem, war mir aber nicht sicher, wie ich sie angehen sollte.

Bitte machen Sie weiter!

Gern geschehen, Janis.

Ich werde auf jeden Fall fortfahren. Es gibt eine Menge zu behandeln, aber ich werde Zeit schaffen.

 
Aliaksandr Kazunka # :

Ich habe mehrere Tools ausprobiert, und in jedem davon gibt Ihr Modell einen Fehler aufgrund inkonsistenter Größen von Eingabedaten (X) und Zielvariablen (y).

Hallo Aliaksandr, Sie können stattdessen einfach den Code als Vorlage verwenden und dann die notwendigen Anpassungen auf Ihrer Seite vornehmen. Ich würde dir auch empfehlen, verschiedene Indikatoren auszuprobieren, verschiedene Variationen der allgemeinen Idee aus dem Artikel auszuprobieren. Das wird uns helfen, die globale Wahrheit schneller zu verstehen.

 
Aliaksandr Kazunka #:

Ich habe mehrere Tools ausprobiert, und jedes von ihnen hat dazu geführt, dass das Modell aufgrund von Inkonsistenzen in der Größe der Eingabedaten (X) und der Zielvariablen (y) nicht funktioniert.

# Halten Sie die Indizes konsistent, sonst werden die Indizes rekonstruiert, wenn Daten herausgefiltert werden
X = pd.DataFrame(RobustScaler().fit_transform(boom_1000.loc[:, predictors]), columns=predictors, index=boom_1000.index)