Thema Datum  Von Nutzer Rating
Antwort
Rot VBA: Wiederkehrende Elemente im Code
28.10.2018 21:01:38 Bernd
NotSolved
29.10.2018 08:42:08 Gast43637
NotSolved

Ansicht des Beitrags:
Von:
Bernd
Datum:
28.10.2018 21:01:38
Views:
741
Rating: Antwort:
  Ja
Thema:
VBA: Wiederkehrende Elemente im Code

Wertes Forum,

ich habe als Anfänger eine Frage zu einem Code von mir. Der Code macht grob folgendes:

Es wird ein Aktienkurs nach Kauf- und Verkaufsignalen durchsucht. Diese werden dann in ein anderes Tabellenblatt (Backtesting) geschrieben.

Die aktZeile ist die letzte Zeile des Aktienkurses. Von der arbeite ich mich solange nach oben, bis das Kaufsignal (hier EMA5>EMA10>EMA20) erreicht ist. Aus dieser Zeile schreibe ich dann einige Werte in das Tabellenblatt Backtesting.

Von diesem ermittelten Kaufsignal gehe ich weiter nach oben und suche das Verkaufssignal (hier EMA5<EMA10 EMA10<EMA20). Auch aus dieser Zeile werden manche Werte in das Backtesting übernommen.

Zum Schluß werden noch manche Werte von Kauf- und Verkaufssignal verrechnet.

Das ganze sieht dann so aus:

Do Until aktZeile = ersteZeile

        'Suche Kaufsignal und schreibe Werte in Auswertetabelle
            
            Kaufname = "EMA5>EMA10>EMA20"
            
            Do Until (Cells(aktZeile, EMA5) > Cells(aktZeile, EMA10) And Cells(aktZeile, EMA10) > Cells(aktZeile, EMA20))
            If aktZeile = ersteZeile Then
            Exit Do
            End If
            
            aktZeile = aktZeile - 1
                Loop
            Worksheets("Backtesting").Cells(n, 2).Value = Cells(1, 1)
            Worksheets("Backtesting").Cells(n, 3).Value = Cells(aktZeile, 1)
            Worksheets("Backtesting").Cells(n, 4).Value = Cells(aktZeile, 5)

            Kauf = aktZeile

        'Suche Verkaufsignal und schreibe Werte in Auswertetabelle
            
           Verkaufname = "EMA5<EMA10 EMA10<EMA20"
            
            Do Until (Cells(aktZeile, EMA5) < Cells(aktZeile, EMA10) Or Cells(aktZeile, EMA10) < Cells(aktZeile, EMA20))
            If aktZeile = ersteZeile Then
            Worksheets("Backtesting").Cells(n, 5).Value = Cells(aktZeile, 1)
            Worksheets("Backtesting").Cells(n, 6).Value = Cells(aktZeile, 5)
            Exit Do
            End If
            
            aktZeile = aktZeile - 1
            Loop
            Worksheets("Backtesting").Cells(n, 1).Value = Kaufname & "_" & Verkaufname
            Worksheets("Backtesting").Cells(n, 5).Value = Cells(aktZeile, 1)
            Worksheets("Backtesting").Cells(n, 6).Value = Cells(aktZeile, 5)
        
            
        Verkauf = aktZeile
    
    'Berechnung Rendite
        Worksheets("Backtesting").Cells(n, 7).Value = Worksheets("Backtesting").Cells(n, 6) / Worksheets("Backtesting").Cells(n, 4) - 1
    'Berechnung Haltedauer
        Worksheets("Backtesting").Cells(n, 8).Value = Worksheets("Backtesting").Cells(n, 5) - Worksheets("Backtesting").Cells(n, 3)
    'Berechnung Maximaler Gewinn
    Worksheets("Backtesting").Cells(n, 9).Value = Application.WorksheetFunction.Max(Range(Cells(Kauf, 5), Cells(Verkauf, 5))) / Worksheets("Backtesting").Cells(n, 4) - 1
    'Berechnung Maximaler Verlust
    Worksheets("Backtesting").Cells(n, 10).Value = Application.WorksheetFunction.Min(Range(Cells(Kauf, 5), Cells(Verkauf, 5))) / Worksheets("Backtesting").Cells(n, 4) - 1

    n = n + 1
    
    Loop

Meine Frage:

Ich möchte mehrere Kauf- und Verkaufssignale nacheinander testen, also verschiedene Varianten und Kombinationen. Nun könnte ich diese ja einfach untereinander schreiben. Hier sehe ich zunächst das Problem, dass die Übersichtlichkeit durch die vielen Zeilen verloren geht. Zum anderen kann ich mir aber auch vorstellen, dass ich z.B. das gleiche Kaufsignal mehrmals verwenden möchte, aber mit unterschiedlichen Verkaufsignalen.

Wie mache ich das am übersichtlichsten und dass ich diese Codes nur einmal schreiben muss und immer wieder aufrufen kann? (Selbst in diesen Do Schleifen wird sich ja vieles wiederholen bis auf die erste Zeile.)

Ich habe hier schon eine Variante in ein eigenes Sub getan, allerdings hab ich dann trotz "Public" Varianten, das nicht zum laufen gebracht...

 

Vielen Dank für Eure Antworten!


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:

 
 

  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot VBA: Wiederkehrende Elemente im Code
28.10.2018 21:01:38 Bernd
NotSolved
29.10.2018 08:42:08 Gast43637
NotSolved