Autor |
|
_klaus
Administrator
Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 61
|
|
ich möcht folgendes durchtesten: 1. intraday-chart (5min), 2. first-open = signalwert für long / short ( jedoch nur dann, wenn der closekurs des crossings-bars abgeschloßen wurde - ...next bar at market) 3.sollte die eingegangene position durch profitstop flat sein, dann sollte ein wiedereinstieg (also zu späterer zeit ) nach gleichen bedingungen möglich sein. 4. ein stop-loss ist nicht notwendig, da eine bestehende position - die das profit-stop nicht erreicht hat, automatisch durch punkt 2 gedreht wird - sobald das close erreicht wurde.
hier das signal: {*******************************} input: price(close); var: refopen(0); var: xTradePerDay(0);
if date > date[1] then begin xTradePerDay=0; refopen=open; end;
if (BarsSinceEntry=0) and (MarketPostion(0) <>0) then xTradePerDay = xTradePerDay+1;
if price < refopen then exitLong; if price > refopen then exitShort;
if xTradePerDay < 3 and date > date[1] then begin if price > refopen then buy next bar at market else if price < refopen then sell next bar at market; end; setExitOnClose;
{****************************************} resultat: 1. der einstieg ist falsch.... denn es wird das close des ersten bars zur berechnung herangezogen es darf aber frühestens das zweite close sein. 2. exit-Long/Short funktioniert, 3. drehen der position funktioniert nicht, 4. wiedereinstieg funktioniert nicht...
kann da jemand helfen ?? - danke, klaus
(??..im grunde müßte es doch auch mit hilfe einer automatisch generierten trendlinie gehen, ...if close crosses TL.... aber dafür reichen meine kenntnisse in EL nicht aus..)
|
|
15.03.2001, 13:10 |
|
_Uwe
Administrator
Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 313
|
|
Hallo Klaus!
Der "Logik-Wurm" steck natürlich in diesem Teil:
if xTradePerDay < 3 and date > date[1] then
Hier läßt Du nur zu, wenn noch keine 3Trades/Tag getätigt wurden (richtig!) und das Tagesdatum sich geändert hat, daß ein Wieder-/Neueinstieg erfolgen darf.
Die Bedingung date>date[1] ist aber nur beim ersten Tagesbar erfüllt! Beim Intradaychart hast Du z.B. um 14:31, bei einem 5min.Chart am 15.03.2001
date[openDay-1]=1010314 time[openDay-1]=2000
date[openDay]=1010315 time[openDay]=0905
..... .....
date[2]=1010315 time[2]=1425
date[1]=1010315 time[1]=1430
date[0]=date=1010315 time[0]=time=1435
Du siehst also, daß ich um 1435 kein Trade ausführen kann, da date=date[1] ist.
Das zweite Problen, daß du das Close des Bars nach dem "Signalbar" kaufen möchtes habe ich bisher noch nicht so recht nachvollziehen können, da mir die Wirkung der Anweisung next bar at market fremd ist.
Gruß Uwe
|
|
15.03.2001, 17:10 |
|
_klaus
Administrator
Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 61
|
|
danke uwe... Der "Logik-Wurm" steck natürlich in diesem Teil: if xTradePerDay < 3 and date > date[1] then
...ja ja, manchmal ist man fürchterlich BLIND..., habe die anweisung geändert: if xTradePerDay < 3 {and date > date[1]} then... und schon klappt das auch mit dem wiedereinstieg.
es bleibt aber ein problem, welches ich nicht verstehe.
solange ein kurs um die signal-linie pendelt, wird die position wunschgemäß gedreht. der neueinstieg nimmt wie gewollt auch die signal-linie als referenz. wenn aber z.b. eine short-position über ein profit-stop aus den markt genommen wird - dann erfolgt sofort ein neueinstieg in selber richtung, sofern das nächste close < als das open des gleichen bars ist. mein wiedereinstieg sollte jedoch immer das crossover des first-open sein. (refopen=open). kann/ wie müßte ich das first-open umbenennen ??? hast du da eine idee?? danke - klaus
|
|
15.03.2001, 20:10 |
|
_Uwe
Administrator
Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 313
|
|
RE: @uwe ...signalerstellung | |
Hallo, Klaus!
Der Grund des Problems dürfte in der Verwendung der EXITxxx-Anweisung liegen, obwohl Du ein "Drehsystem" einsetzt, solange Du noch keien drei Trages pro Tag ausgeführt hast. Die If-EXITxxx-Anweisungen werden aber zusätzlich ausgeführt, wenn die buy/ell-Bedingung greift.
Du hast nun zwei Möglichkeiten: 1. Das System soll ständig im Martkt sein, solange keine drei Trade am Tag erfolgt sind. Die EXIT-xxxx-Abfragen sind daher nur nach Ausführung des dritten Handels auszuführen:
input: price(close); var: refopen(0); var: xTradePerDay(0);
if date > date[1] then begin xTradePerDay=0; refopen=open; end;
if (BarsSinceEntry=0) and (MarketPosition(0) <>0) then xTradePerDay = xTradePerDay+1;
if xTradePerDay < 3 then begin if price > refopen then buy next bar at Market else if price < refopen then sell next bar at Market; end else if xTradePerDay=3 then begin if price < refopen then exitLong; if price > refopen then exitShort; end;
setExitOnClose;
Für die Zweite Alternative, die sinnvoll ist, wenn es zu einem Schwanken um dei Ref-Linie kommt, ist ein Programm mit einer veränderten Logik erforderlich, die feststellt, ob eine Buy-, Sell, Exit-Bedingung während des Bars entstanden ist, um nur eine dieser Aktionen auszuführen (EXITLONG-Bedingung darf nicht gleichzeit mit SELL-Bedingung entstehen.
if EXITLONG-BEdingung then EXITLONG else begin "Sell"bedingung untersuchen end if EXIT-Sgort-Bedingung then EXITSHORT else begin "buy"bedingung untersuchen end;
Gruß Uwe
P.S. Bitte Vorsicht, Programmmteile sind nur Entwürfe ohne Tests!
|
|
16.03.2001, 13:10 |
|
_klaus
Administrator
Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 61
|
|
|
19.03.2001, 10:10 |
|
|