Kaufstopp Verkaufsstopp Rasterberater als Klasse - Seite 2

 

Ich füge nach und nach weitere Funktionen hinzu. Wenn beim Start keine Positionen und keine ausstehenden Aufträge vorhanden sind, werden ausstehende Stop-Aufträge erteilt. Die Versionsbeschreibung ist der Klassendatei beigefügt:

//+------------------------------------------------------------------+
//| 1.001:                                                           |
//|   when starting, sets Buy stop and sell stop                     |
//+------------------------------------------------------------------+

ds

 

Interessant - die Funktion CBuyStopSellStopGrid::RefreshRates(void) prüft auf Null-Asc-Bid-Werte.

Ist eine solche Situation wirklich möglich?

Im Allgemeinen - keine weiteren Bemerkungen, der Code ist ziemlich transparent und klar.

 
George Merts:

Interessant - die Funktion CBuyStopSellStopGrid::RefreshRates(void) prüft auf Null-Asc-Bid-Werte.

Ist diese Situation wirklich möglich?

Im Allgemeinen gibt es keine weiteren Anmerkungen, der Code ist recht transparent und klar.


Ja, so ist das Leben und hier ist alles möglich. Überprüfen Sie generell, ob der Tester Nullwerte eingegeben hat (das war vor etwa einem Jahr: beim Starten der ersten t=wenige Ticks gab der Tester Nullen aus).

Ich füge nach und nach weitere Funktionen hinzu. In OnTradeTransaction, wenn es eine Position gibt ("DEAL_ENTRY_IN"), entfernen wir schwebende Aufträge und setzen zwei schwebende Stop-Aufträge neu:

//+------------------------------------------------------------------+
//| 1.001:                                                           |
//|   when starting, sets Buy stop and sell stop                     |
//| 1.002:                                                           |
//|   OnTradeTransaction: if DEAL_ENTRY_IN delete all pending orders,|
//|   and, sets Buy stop and sell stop                               |
//+------------------------------------------------------------------+

BuyStopSellStopGrid 1.002

Bislang haben wir solche Mängel:

  1. bei jedem Tick wird die Anzahl der Positionen und ausstehenden Aufträge überprüft
  2. Keine Kontrolle der Handelsoperationen (Pending Order Platzierung) - der Expert Advisor behandelt keine Situationen, wenn die Pending Order nicht platziert wurde
  3. Eine Reihe von Positionen ohne Positionen - diese Situation wird nicht behandelt, d.h. wenn wir z.B. eine Kaufposition geschlossen und dann eine Verkaufsposition eröffnet haben...
 
Vladimir Karputov:

Ja, so ist das Leben und alles ist möglich. Im Allgemeinen wurde die Prüfung auf Nullwerte wegen des Testers eingeführt (es gab einen Fall vor etwa einem Jahr: beim Starten der ersten t=wenige Ticks, gab der Tester Nullen).

Ich füge nach und nach weitere Funktionen hinzu. In OnTradeTransaction, wenn es eine Position gibt ("DEAL_ENTRY_IN"), entfernen wir schwebende Aufträge und setzen zwei schwebende Stop-Aufträge neu:


Bislang haben wir solche Mängel:

  1. bei jedem Tick wird die Anzahl der Positionen und ausstehenden Aufträge überprüft
  2. Keine Kontrolle der Handelsoperationen (Pending Order Platzierung) - der Expert Advisor behandelt keine Situationen, wenn die Pending Order nicht platziert wurde
  3. Eine Reihe von Positionen ohne Positionen - zum Beispiel wird die Situation nicht gehandhabt, wenn wir, sagen wir, eine Kauf-Position eröffnet haben und dann eine Verkaufs-Position eröffnet haben...

Der auf dem Screenshot gezeigte Algorithmus wird nicht funktionieren. Damit der Algorithmus funktioniert, müssen Sie Folgendes tun:

Wenn ein Kaufsignal empfangen wird, wird eine Reihe von BUY STOP-Aufträgen über dem Hoch der ersten Kerze platziert. Unterhalb des Schlusskurses wird ein SELL STOP-Auftrag erteilt. Aufträge sollten nicht aufgrund von Gewinn oder Verlust geschlossen werden, sondern aufgrund eines anderen Signals. Mit mehr oder weniger vernünftigen Signalen wird dieses System immer funktionieren.

Dies ist nur eine Variante; man kann alles auch anders machen.

 
Ibragim Dzhanaev:

Wenn die Signale mehr oder weniger vernünftig sind, wird ein solches System immer funktionieren.

Es wäre besser zu schreiben: "Wenn Sie zu den Tiefstkursen kaufen und zu den Höchstkursen verkaufen, werden Sie immer im Gewinn sein".

Wer argumentiert? Das Problem besteht darin, "vernünftige Signale" zu finden.

 

Version 1.003:

//+------------------------------------------------------------------+
//| 1.001:                                                           |
//|   when starting, sets Buy stop and sell stop                     |
//| 1.002:                                                           |
//|   OnTradeTransaction: if DEAL_ENTRY_IN delete all pending orders,|
//|   and, sets Buy stop and sell stop                               |
//| 1.003:                                                           |
//|   OnTradeTransaction: DEAL_ENTRY_IN                              |
//|      DEAL_TYPE_BUY => ClosePositions(POSITION_TYPE_SELL)         |
//|      DEAL_TYPE_SELL => ClosePositions(POSITION_TYPE_BUY)         |
//|   PlacesXXXX:                                                    |
//|      "RefreshRates()" is now inside the "PlacesXXXX"             |
//|   OnTradeTransaction:                                            |
//|      a "while" loop for "PlacesXXXX"                             |
//+------------------------------------------------------------------+

  • schließt nun ALLE gegnerischen Positionen, wenn eine Position eröffnet wird.
  • Die aktuelle Preiserfassung wurde in die Funktionen PlacesBuy und PlacesSell verlagert, um Lücken und Ausrutscher zu vermeiden.
  • InOnTradeTransaction werden schwebende Aufträge in einer while-Schleife platziert - wir kommen dem Server also sozusagen zuvor :) - Das ist zwar nicht die beste Lösung, aber es wird vorerst so bleiben.

Eigentlich können wir jetzt denken:

  1. Wie kann ich meine Positionen am besten erhöhen (Berechnung des Losvolumens)?
  2. Was tun bei gegensätzlichen Positionen...

 
George Merts:

Besser wäre es zu schreiben: "Wenn Sie zu den Tiefstständen kaufen und zu den Höchstständen verkaufen, werden Sie immer im Gewinn sein".

Wer argumentiert? Das Problem besteht darin, "vernünftige Signale" zu finden.


Die einfachste und naheliegendste Option.


 
Darf ich mich zu Ihnen setzen?
 

Zumindest ist es so.


 
Artiom Morochin:
Darf ich mich zu Ihnen setzen?

Erledigt. Verbinden Sie das Warehouse, aktualisieren Sie Projektdateien aus dem Warehouse.