Diskussion zum Artikel "Maschinelles Lernen für Grid- und Martingale-Handelssysteme. Würden Sie darauf wetten?" - Seite 3

 
Wo kann ich Multiplikator-Varianten sehen? z.B. nicht von Martin, sondern mit verschiedenen Varianten der Loserhöhung bei Wachstum oder Abnahme, Stoppen der Losgrößenänderung, Absicherung eines Loses einer anderen Sequenz, und andere Varianten.
 
1_lexa:
Wo kann ich die Optionen der Multiplikatoren sehen, z.B. nicht nach Martin, sondern mit verschiedenen Varianten der Loserhöhung bei Wachstum oder Abnahme, Stoppen der Losgrößenänderung, Absicherung eines Loses einer anderen Sequenz und andere Varianten.

GRID_COEFFICIENTS, GRID_DISTANCES, GRID_SIZE

Das Raster wird hier für alle Fälle als fest angenommen, und der Algorithmus für maschinelles Lernen verallgemeinert es auf alle Situationen. Für die Absicherung müssen Sie das Markup und die Prüflogik korrigieren. Ich habe es nicht getan.

 
Aleksey Vyazmikin:

Versuchen Sie, den Preis nicht nach dem Gewinn zu berechnen, sondern nach der Anzahl der offenen Positionen - wobei weniger besser ist.

Ich werde sehen können, dass es eine Menge Möglichkeiten gibt. Wenn ich eine weitere Studie abgeschlossen habe, werde ich es ausprobieren.

Das ist nicht schwer, Sie müssen nur die Aufschlagsbedingung ändern.
 
Maxim Dmitrievsky:

Wir werden sehen, es gibt eine Menge Möglichkeiten. Wenn ich mit der anderen Studie fertig bin, werde ich es ausprobieren.

Das ist nicht schwer, man muss nur die Auszeichnungsbedingung ändern.
def add_labels(dataset, min, max, distances, coefficients):
    labels = []
    for i in range(dataset.shape[0]-max):
        rand = random.randint(min, max)
        all_pr = dataset['close'][i:i + rand + 1]

        grid_stats = {'up_range': all_pr[0] - all_pr.min(),
                      'dwn_range': all_pr.max() - all_pr[0],
                      'up_state': 0,
                      'dwn_state': 0,
                      'up_orders': 0,
                      'dwn_orders': 0,
                      'up_profit': all_pr[-1] - all_pr[0] - MARKUP,
                      'dwn_profit': all_pr[0] - all_pr[-1] - MARKUP
                      }

        for i in np.nditer(distances):
            if grid_stats['up_state'] + i <= grid_stats['up_range']:
                grid_stats['up_state'] += i
                grid_stats['up_orders'] += 1
                grid_stats['up_profit'] += (all_pr[-1] - all_pr[0] + grid_stats['up_state']) \
                * coefficients[int(grid_stats['up_orders']-1)]
                grid_stats['up_profit'] -= MARKUP * coefficients[int(grid_stats['up_orders']-1)]

            if grid_stats['dwn_state'] + i <= grid_stats['dwn_range']:
                grid_stats['dwn_state'] += i
                grid_stats['dwn_orders'] += 1
                grid_stats['dwn_profit'] += (all_pr[0] - all_pr[-1] + grid_stats['dwn_state']) \
                * coefficients[int(grid_stats['dwn_orders']-1)]
                grid_stats['dwn_profit'] -= MARKUP * coefficients[int(grid_stats['dwn_orders']-1)]
        
        if grid_stats['up_orders'] < grid_stats['dwn_orders'] and grid_stats['up_profit'] > 0:
            labels.append(0.0)
            continue
        elif grid_stats['dwn_profit'] > 0:
            labels.append(1.0)
            continue
        
        labels.append(2.0)

    dataset = dataset.iloc[:len(labels)].copy()
    dataset['labels'] = labels
    dataset = dataset.dropna()
    dataset = dataset.drop(
        dataset[dataset.labels == 2].index).reset_index(drop=True)
    return dataset

Gelb - ändern Sie die Bedingung

Ergebnis (Studie von 2020.05)

Diese Bedingungen sind leicht nach Belieben zu ändern, Sie können Zeitfilter (siehe den vorherigen Artikel) oder andere hinzufügen.

Es ist möglich, Einstellungen zu finden, bei denen der Bot seit 2010 und früher fast nicht mehr zu töten ist (wenn man in einigen Fällen mit Drawdowns arbeitet).

Es gibt immer noch eine Menge Trades

Vielleicht sollten wir eine Suche nach Parametern durchführen, in Analogie zum vorherigen Artikel.

 
Maxim Dmitrievsky:

Gelb - die Bedingung ändern

Ergebnis (Ausbildung ab 2020.05)

Diese Bedingungen können leicht nach Belieben geändert werden, Sie können Zeitfilter (siehe vorherigen Artikel) oder andere Filter hinzufügen.

Es ist möglich, Einstellungen zu finden, bei denen der Bot seit 2010 und früher fast nicht mehr zu töten ist (wenn man in einigen Fällen mit Drawdowns arbeitet).

Es gibt immer noch eine Menge von Trades

Vielleicht sollten wir eine Suche nach Parametern durchführen, in Analogie zum vorherigen Artikel.

Das scheint besser zu sein.

Für mich besteht der Sinn des Trainings auf dem Modellgitter darin, eine Entscheidung darüber zu treffen, ob es sinnvoll ist, eine Position auf einem bestimmten Niveau zu eröffnen oder dieses Signal zu übergehen. Und zu diesem Zweck sollte das Modell die Schließung der Gesamtposition als Gewinn bewerten, wenn der Schließungspunkt erreicht ist. Wenn ein Gewinn erzielt wird, ist es nicht sinnvoll, eine Position zu eröffnen. Zu diesem Zweck ist es erforderlich, den Preiswert zum Zeitpunkt der Positionsschließung zu schätzen.

 
Aleksey Vyazmikin:

Das ist schon mal besser.

Für mich besteht der Sinn des Trainings mit dem Gittermodell darin, eine Entscheidung darüber zu treffen, ob es sinnvoll ist, eine Position auf einem bestimmten Niveau zu eröffnen oder dieses Signal zu übergehen. Und zu diesem Zweck sollte das Modell die Schließung der Gesamtposition auf Gewinn bewerten, wenn der Schließungspunkt erreicht ist. Wenn ein Gewinn erzielt wird, ist es nicht sinnvoll, eine Position zu eröffnen. Zu diesem Zweck ist es notwendig, den Preiswert zum Zeitpunkt der Positionsschließung zu schätzen.

Also nicht schlecht, ja, es bleibt die Variante mit der Arbeit an einer längeren Historie auszuarbeiten. Sie funktioniert zum Beispiel nicht in Krisen mit starkem Rückgang, weil es während der Ausbildung keine solchen Beispiele gab.

 
Maxim Dmitrievsky:

Also nicht schlecht, ja, es bleibt, die Variante mit der Arbeit an einer längeren Geschichte auszuarbeiten. Zum Beispiel funktioniert es nicht in Krisen mit einem starken Rückgang, denn es gab keine solchen Beispiele während der Ausbildung.

Wenn man versucht, in einer Krise zu überleben, wird der Gesamtgewinn viel kleiner sein als in den Zeiträumen vor und nach der Krise. Es ist eine philosophische Frage, ob man in der Krise einen Teil des Depots verliert und ein Vielfaches von dem verdient, was man vor und nach der Krise verloren hat, oder ob man die Chance hat, in der Krise nicht zu verlieren, aber 3-5 mal weniger zu verdienen.

Man braucht zumindest dynamische Niveaus, um bei großen Bewegungen zu überleben.

 
Aleksey Vyazmikin:

Wenn man in der Krise das Überleben anstrebt, wird der Gesamtgewinn viel geringer sein als in den Zeiten vor und nach der Krise. Es ist eine philosophische Frage, ob man in der Krise einen Teil des Depots verliert und ein Vielfaches von dem verdient, was man vor und nach der Krise verloren hat, oder ob man die Chance hat, in der Krise nicht zu versiegen, aber 3-5 mal weniger zu verdienen.

Man braucht zumindest dynamische Niveaus, um bei großen Bewegungen zu überleben.

Wenn wir uns der Krise und dem ruhigen Markt annähern, dann ist es eng mit den Standardchips, wir brauchen entweder dies oder das. Oder wir suchen nach Kompromissen.

 
Aleksey Vyazmikin:

Das ist schon mal besser.

Für mich besteht der Sinn des Trainings mit dem Gittermodell darin, eine Entscheidung darüber zu treffen, ob es sinnvoll ist, eine Position auf einem bestimmten Niveau zu eröffnen oder dieses Signal zu übergehen. Und zu diesem Zweck sollte das Modell die Schließung der Gesamtposition auf Gewinn bewerten, wenn der Schließungspunkt erreicht ist. Wenn ein Gewinn erzielt wird, ist es nicht sinnvoll, eine Position zu eröffnen. Zu diesem Zweck ist es notwendig, den Preiswert zum Zeitpunkt der Positionsschließung zu schätzen.

Ich verstehe nicht, handelt es sich in diesem Fall überhaupt um ein Raster? Wenn die Vorhersage ergibt, dass es keinen Gewinn geben wird - dann ist es auf jeden Fall notwendig zu schließen und nicht darüber nachzudenken, ob man eine Position eröffnet oder nicht. Und bei einem Grid sollte man trotzdem öffnen.

Denn das Raster versucht nur, den Abstand zu gewinnen, um den Schlusspunkt auf einen wahrscheinlicheren Punkt mit demselben Gewinn zu verschieben.

Wenn Sie sich mit dem Raster befassen wollen, sollten Sie eine Ergebnismatrix erstellen und diese bei jeder neuen Kursbewegung, d. h. bei einer neuen Prognose, nach Bayes korrigieren.

 
Aleksey Mavrin:

Wenn die Vorhersage besagt, dass es keinen Gewinn geben wird, dann sollte man auf jeden Fall schließen und nicht darüber nachdenken, ob man öffnen sollte oder nicht. Und in einem Raster sollten Sie trotzdem öffnen.

Denn das Grid versucht nur, den Abstand zu gewinnen, um den Schlusspunkt auf einen wahrscheinlicheren Punkt mit demselben Gewinn zu verschieben.

Wenn Sie sich mit dem Raster befassen wollen, sollten Sie eine Ergebnismatrix erstellen und diese bei jeder neuen Kursbewegung, d. h. bei einer neuen Prognose, nach Bayes korrigieren.

Dies war das Ziel, um andere Setups zu finden, die ohne ein Raster unmöglich sind.