Einloggen Suche | Aktive Themen
Trailing-Stopp Optionen
Rene Schneider
Geschrieben: Tuesday, May 8, 2012 9:42:11 PM
Gruppen: Kunde

Beiträge: 38

Tai-Pan End-of-Day
Hallo Taxus,

Wie stellt man denn hier ein Bild rein, wollte das lezthin mal machen ging aber leider nicht.

Danke
Steffen Vohswinkel
Geschrieben: Tuesday, May 8, 2012 9:59:27 PM

Gruppen: Kunde

Beiträge: 371

Tai-Pan End-of-Day
Hallo René,

von L+P gibt es keinen Speicherplatz für uns.
Man muß sich also der Dienste eines Dritten bedienen.
Du klickst am besten mit der rechten Maustaste in ein im Formum hochgeladenes Bild eines Mitgliedes, nicht aber von L+P MA´s, und überlegst danach sorgfältig, ob Du über diesen Anbieter gehen möchtest.

Nachteil:
Die Bilder verschwinden, wenn dieser Anbieter Deine Bilder löscht, weil ... 1000 Gründe.
Ich habe einen Ami und einen deutschen Anbieter entdeckt, aber nicht im Kopf.

Gruß
Steffen Vohswinkel
Geschrieben: Tuesday, May 8, 2012 10:07:28 PM

Gruppen: Kunde

Beiträge: 371

Tai-Pan End-of-Day
Hallo René,

zu Deinem AmiBroker - Programm "Forums-Beitrag vom Sonntag, 6. Mai 2012 21:35:52" in diesem Thema hier.

Das ist ein kleines Handelssystem und kein reines Trailing-Stop-Programm.

Bisher habe ich folgendes erledigt, um mir ein Bild machen zu können:

1. Layout mit Candlesticks-Chart und SMA 25
2. Signalgeber für das Kaufsignal:

ref(Cross(C,SMA(C, 25)), -1)and
O >= Ref(O, -1)

Daraus wird das AB-Programm die überflüssigen Kaufsignale entfernen und nach Trailing-Stop-Auslösung verkaufen.

Vielleicht kann noch jemand mithelfen.
Die Punkte 1. und 2. könnt Ihr schon mal erledigen und ggf. nachfragen.

Vielleicht könntest Du das mit dem Trailing Stop schon erklären.
Was haben den die geschweiften Klammern für eine Bedutung?

Grüße

Rene Schneider
Geschrieben: Tuesday, May 8, 2012 11:55:36 PM
Gruppen: Kunde

Beiträge: 38

Tai-Pan End-of-Day
Hallo,

Hier das Kleine Handelssystem nochmals mit den Erklärungen der einzelnen Teile,

// Formel für TrailStop Linie zeichnen

Buy = Ref(Cross(Close, SMA(Close, 25)), - 1) AND Open >= Ref(Open, -1);
Sell = 0;



StopLevel = 0.04; ........ // Stop Limit 4%
trailARRAY = Null; ......// Das TrailARRAY muss auf Null gesetzt sein, sonst gehts in der for Schlaufe nicht
trailstop = 0; .............// auch den trailstop auf Null setzen, damit die Anfangbedingung erfüllt ist



for( i = 1; i < BarCount; i++ ) ..........// Normale For Schlaufe am Anfang
{ ................................................. // Klammer für eusere Schlaufe

if( trailstop == 0 AND Buy[ i ] ) ............// erste if Schlaufe, " trailstop = 0 und Buy = true" ?
{ .....................................................// wenn trailstop = 0 und Buy true, wird der teil ausgeführt
trailstop = High[ i ] * (1-stoplevel); ..// trailstop erhält wert vom High mal stoplevel =
............................................................... ( z.b. 10.00 -1* 0.04 = 9.60)

}

else Buy[ i ] = 0; ........................... // Entfernt die überschüssigen Kauf-Signale

if( trailstop > 0 ) ............................// zweite if Schleife, "wenn trailstop > 0 ist wird neuer wert zugewiesen
{
trailstop = Max( High[ i ] * (1-stoplevel), trailstop ); ........... // Neue Wertzuweisung
trailARRAY[ i ] = trailstop; ..............................................// trailARRAY erhält hier den trailstopwert
........................................................................................... zum Zeichnen der Linie
}

if( trailstop > 0 AND Low[ i ] < trailstop ) ................ // dritte Schleife mit bedingung
................................................................................"trailstop >0 und tief kleiner als trailstop
{
Sell[ i ] = 1; ................................................. // wenn das so ist haben wir die Stoplinie erreicht und Verkaufen
SellPrice[ i ] = trailstop; ................................ // hier weisen wir den verkaufspreis zu
........................................................................... ( brauche ich zur Auswertung im Backtest)
trailstop=0; ........................................... // hier wird dann der trailstop wieder auf null gesetzt
........................................................................damit wir wieder von vorne anfangen können

}

} ...........................// dies ist das ende der for Schleife, genaugenommen ist die Auswertung hier zu Ende


PlotShapes(Buy*shapeUpArrow,colorBlue,0,Low); ......// Dies zeichnet mir den Kaufpunkt im blauen Pfeil ein
PlotShapes(Sell*shapeDownArrow,colorRed,0,High); .... // und hier den Verkaufspunkt in Rot

Plot( trailARRAY, " Stop Limit Line ", colorRed); .....// Hiernmit zeichne ich die Trailllingstop Linie im Chart ein.

Der Traillingstop kann auch nur mit den Schleifen 2 und 3 gemacht werden wenn man dem trailstop den Kaufpreis zuweist und anstelle der 2 Schleife das else Statment nimmt ( else sell[i] =0, trailstop = 0; End)

Ich stelle später dann noch ein Bild zur Verdeutlichung wie das bei mir aussieht rein.

Gruss
Steffen Vohswinkel
Geschrieben: Wednesday, May 9, 2012 6:48:58 AM

Gruppen: Kunde

Beiträge: 371

Tai-Pan End-of-Day
Guten Morgen,

ich wollte gerade schreiben, daß die Klammern für Begin und End in Tai Pan stehen.

Nun habe ich noch folgende Fragen:

trailARRAY = Null; // Was macht das trailARRAY?
i++ // Wofür steht das i++? Was bedeuten die beiden ++? Sind das nur Zeichen? Ist das eine Variable?

for( i = 1; i < BarCount; i++ ) Übersetze bitte mal diesen Ausdruck.

if( trailstop == 0 AND Buy[ i ] ) Was bedeuten die == ?

trailARRAY[ i ] = trailstop; // siehe Frage von oben zum trailARRAY
// In Tai Pan wäre das ein trailARRAY-Element "i". Ist das hier auch so?

( else sell[i] =0, trailstop = 0; End) // Übersetze bitte auch diesen Ausdruck.

Das wär´s erst einmal. Danke vorab René.

Grüße
mitho
Geschrieben: Wednesday, May 9, 2012 3:47:59 PM

Gruppen: Kunde

Beiträge: 20

Tai-Pan End-of-Day
Hallo Michael,

recht herzlichen Dank für Deine Lösung, es klappt.
Ich hatte schon gedacht, man müsste wie folgt programmieren.

Wenn das heutige High größer ist als das gestrige, dann nimm das heutige, sonst das gestrige.

Geht so was mit der Formelsprache von Tai-Pan?

Grüße
mitho
Rene Schneider
Geschrieben: Wednesday, May 9, 2012 6:21:02 PM
Gruppen: Kunde

Beiträge: 38

Tai-Pan End-of-Day
Hallo Taxus,

Wenn Du die Formel mal aufmerksam durchliest wird Dir schon eine frage beantwortet.

Das trailARRAY wird mit den Werten des Stop gefüllt, siehe "TrailARRAY[i] = trailstop" oder anders gesagt das trailARRAY erhält die Werte welche zum Zeichnen der Triggerlinie nötig sind.

trailARRAY = NULL / damit deklariere ich das ARRAY, wenn ich nur trailARRAY = 0 schreiben würde wäre es kein ARRAY sondern nur ein Wert.

for( i = 1; i < BarCount; i++ )
Dies ist ganz einfach / for (i =1; heisst die for Schleife fängt mit 1 an,
und / i < Barcount; / bedeutet das die Schleife solange durchlaufen wird bis i gleich wie Barcount ist, Barcount steht hier für die einzelnen Kurse ( Kurs = engl. Bar) und das / i++ / heisst nichts anderes als das i bei jedem Schleifendurchlauf um 1 erhöht wird, also so wie in TP inc(I).

if( trailstop == 0 AND Buy[ i ] )
die == 0 heisst wenn trailstop den wert 0 enthält, das muss so sein weil trailstop kein ARRAY ist.

" ( else sell[i] =0, trailstop = 0; End) // Übersetze bitte auch diesen Ausdruck. "
Entschuldige mal aber so steht das nirgens in der Formel, aber nur zum besseren Verständnis wenn es in der Formel wäre würde das so aussehen:

else
sell[i] = 0; // damit wird das Verkaufssignal gelöscht oder eben auf 0 gesetzt.
trailstop = 0; // hier genau das selbe wie bei sell
End; // dies gibt es nicht im Script sondern nur die Klammer " } " und damit verlässt man dann die for Schlaufe.

Hoffe ich konnte damit die noch offenen Fragen genügend beantworten.

Grüsse
Michael
Geschrieben: Wednesday, May 9, 2012 8:30:36 PM
Gruppen: Kunde

Beiträge: 104

Tai-Pan End-of-Day
Hallo Mitho,

freut mich zunächst mal, daß es bei dir hinhaut.

Zu deiner Frage:

Wenn das heutige High größer ist als das gestrige, dann nimm das heutige, sonst das gestrige.

Geht so was mit der Formelsprache von Tai-Pan?


Ja, das geht und ist nicht schwer umzusetzen.

Z.B.

High1 := Ref(High,-1); // das gestrige Hoch

Result := If(High > High1,High,High1);


Damit kannst du z.B. in einer Liste das höhere der beiden Highs ausgeben, oder den Wert im Chartmodul für Berechnungen hernehmen.

Falls du es für den Trailing-Stop nutzen willst: Brauchst du nicht, das macht die HHV-Funktion schon automatisch...


Michael
Rene Schneider
Geschrieben: Wednesday, May 9, 2012 8:38:14 PM
Gruppen: Kunde

Beiträge: 38

Tai-Pan End-of-Day
Hier noch der Chart wie das bei mir Aussieht in AmiBroker




Gruss
mitho
Geschrieben: Thursday, May 10, 2012 5:49:21 PM

Gruppen: Kunde

Beiträge: 20

Tai-Pan End-of-Day
Hallo Michael,

danke für die schnelle Antwort, wieder was gelernt.

Grüße
mitho
mitho
Geschrieben: Monday, May 28, 2012 6:23:02 PM

Gruppen: Kunde

Beiträge: 20

Tai-Pan End-of-Day
Guten Tag,

ich benötige wieder einmal die Hilfe des Forums um den Trailing-Stop weiter zu entwickeln.
Ich möchte mir gerne die Schnittpunkte zweier Linien z.B. sma(100) und sma(40) im Chart durch Pfeile von oben anzeigen lassen.
Die Schnittpunkte erhalte ich über

wcross:=cross(sma(c,100),sma(c,40)); aber dann nur als 0 oder 1 unter dem Chart

den Pfeil im Endpunkt über

Enum eArrow (Down = 200);
Function DrawArrow (AArrow: eArrow; ADateTime: DateTime; AKurs: Double; ATextColor: ColorRef = Black): Text;
Begin
tArrow := DrawText ("" + AArrow, ADateTime, AKurs, ATextColor, Leer, 14);
tArrow.FaceName := "Wingdings 3";
Case AArrow Of
eArrow.Down: tArrow.Format := TextFormat.Center Or TextFormat.Top;

End;
Result := tArrow;
End;

Result3 := DrawArrow (eArrow.Down, LastDate(H).ToDateTime(), LastValue(H), Red);


Wie verbinde ich jetzt die beiden Formeln, um den oben beschriebenen Sachverhalt zu erhalten oder funktioniert das so nicht?

Danke und Grüße
mitho

Michael
Geschrieben: Monday, May 28, 2012 8:41:57 PM
Gruppen: Kunde

Beiträge: 104

Tai-Pan End-of-Day
Hallo mitho,

hast du schon dran gedacht, einfach ein Signal zu erstellen, z.B.

wcross:=cross(sma(c,100),sma(c,40));

Result:= wcross


Unter "Darstellung" kannst du dann den "Verkaufspfeil" wählen und in Größe, Farbe und Lage (unter oder über Kurs) bequem einstellen (allerdings nicht genau auf den Schnittpunkt).
Der Pfeil erscheint dann mit wenig Aufwand jeweils über der Kursreihe (nicht über den SMAs), sofern der 40er unter den 100er SMA kreuzt.

Oder soll die Pfeilspitze genau auf den Schnittpunkt der SMAs zeigen?

Schönen Abend,

Michael
mitho
Geschrieben: Wednesday, May 30, 2012 4:19:32 PM

Gruppen: Kunde

Beiträge: 20

Tai-Pan End-of-Day
Guten Tag,

anbei der Formeltext für alle Interessierten an einem Trailing-Stopp.
Die Formel gibt im Chart an.

1. Per Pfeil den Einstiegskurs am Kauftag
2. Einen frei wählbaren Stoppkurs „Halt_1“
3. Einen TrailingStopp „Halt_2“ der x% unter den Höchstkurs gelegt werden kann.

Die Formel funktioniert bei mir auch im Stundenchart

Leider ist es mir bis jetzt nicht gelungen, das Kreuzen der Linien im Chart (nicht im Signalgeber) auch per Pfeil darzustellen.
Bedanken möchte ich mich bei Taxus, der mir den Mut gegeben hat auch als Anfänger einfach einmal anzufangen. Auch bei Michael, der immer schnell eine Antwort parat hatte.

Für die, die wie ich kaum Ahnung von der Taipan-Formelsprache haben helfe ich gerne auch mit ganz banalen Fragen zur Anwendung dieser Formel.

Man kann mich auch persönlich per Mail ansprechen.
Grüße
mitho

//Trailing-Stop long.

KaufDatum := Para1;//Typ auf Datum einstellen
KaufKurs := Para2;//Typ auf Double einstellen
Prozentzahl:=Para3;//Typ auf Double einstellen
Halt_1:=Para4;//Stopp am Einstieg Typ Double

heute:=SystemDate(); aktuelles Datum

Bereich:= IndexofDateTime(C,heute) - IndexofDateTime(C,KaufDatum-1); // Anzahl Kurstage im Bereich
Hoch:=LastValue(HHV(H,Bereich)); // höchster Schlußkurs im Bereich

Abstand1 := Hoch*para3/100; // Para3-% unter neuem Hoch

wHalt_1 := Line (Para1,Para4,Para1,Para4,True,False,True);
wHalt_2 := Line (Para1,Hoch-Abstand1,Para1,Hoch-Abstand1,True,False,True);

Result1 := wHalt_1;wHalt_2;

Enum eArrow (Left = 198 ); //gibt den Einstieg mit einem Pfeil an

Function DrawArrow (AArrow: eArrow; ADateTime: DateTime; AKurs: Double; ATextColor: ColorRef = Black): Text;
Begin
tArrow := DrawText ("" + AArrow, ADateTime, AKurs, ATextColor, Leer, 14);
tArrow.FaceName := "Wingdings 3";
Case AArrow Of

eArrow.Left: tArrow.Format := TextFormat.Left Or TextFormat.VCenter;
End;
Result := tArrow;
End;


Result3 := DrawArrow (eArrow.Left, Para1.ToDateTime(), Para2, Red);

//Jetzt müsste noch per Pfeil der mögliche Schnittpunkt
//von wHalt_1 oder wHalt_2 mit dem Chart angegeben werden.

//wcross:= cross(close,wHalt_2);
//wResult3:=wcross

//color 1:= if(wResult3,Cyan,Black)
Steffen Vohswinkel
Geschrieben: Wednesday, May 30, 2012 6:46:34 PM

Gruppen: Kunde

Beiträge: 371

Tai-Pan End-of-Day
Hallo mitho,

zum Setzen von Pfeilen am Kreuzungspunkt von Linien
:

Wenn ich das so richtig verstanden habe, dann gibt es dafür eine einfache Erklärung.
Die ist mir auch erst später aufgegangen mitho.

Nimm doch bitte mal ein Chartbeispiel mit der Kreuzung von zwei Linien.
Der Chart sollte den ganzen Bildschirm einnehmen.
Stelle nun eine ganz niedrige Kursanzahl um die Kreuzung der Linien herum ein,
also etwa 5-10 Tage vor und 5-10 Tage nach der Kreuzung.
Nun scanne die Kreuzungsstelle mit einer vertikalen Linie.

Was kann man daraus ablesen?

Kleine Hilfe:
Die Kreuzungen ergeben ein Array.

Deine Frage finde ich sehr gut, weil sie ganz wichtig für die Ergebnisse ist.
Deshalb sollte man sie auch mal gut durchdenken und seine Schlußfolgerungen daraus ziehen.
Danke mitho.

Schöne Grüße

Juergen Gerdes
Geschrieben: Saturday, August 25, 2012 10:47:21 AM
Gruppen: Kunde

Beiträge: 39

Hallo an Alle,
seid ihr in dem Thema weiter gekommen und könnte mir jemand die Formel zur Verfügung stellen? Vielen Dank im voraus!

Jürgen Gerdes

juergengerdes@gmx.de
Benutzer die diese Diskussion aktuell lesen
Guest

Powered by Yet Another Forum.net version 1.9.1.8 (NET v4.0) - 3/29/2008
Copyright © 2003-2008 Yet Another Forum.net. All rights reserved.

Durch die Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu. Weitere Informationen zum Datenschutz finden Sie hier