Indikatoren und Prozeduren für ProRealTime Verfasst am: 08.01.2006, 20:54
- Ich würde jetzt am Anfang die Indikatoren hier posten. Im Web weiß ich nicht wie man sie löschen oder überschreiben kann, weil bestimmt Änderungen kommen werden.
- Nach der Empfehlung von Alexander Elder in seinem Buch, werden die Berechnungen grundsätzlich nicht mit Close sondern mit (O+H+L+C)/4 gemacht.
Hier müßte man eventuell noch testen. _________________
Zuletzt bearbeitet von SwingMan am 08.01.2006, 23:59, insgesamt einmal bearbeitet
SwingMan
Anmeldedatum: 16.08.2005 Beiträge: 885
Verfasst am: 08.01.2006, 20:55
REM Indikator: "soTrueRange"
REM True Range mit Faktor
REM Parameter:
REM t=14 (Periode True Range)
REM f=2,1(Multiplikationsfaktor)
myTrueRange = f * AverageTrueRange[t](TotalPrice)
RETURN myTrueRange AS "myTrueRange"
Zuletzt bearbeitet von SwingMan am 08.01.2006, 20:56, insgesamt einmal bearbeitet
SwingMan
Anmeldedatum: 16.08.2005 Beiträge: 885
Verfasst am: 08.01.2006, 20:57
REM Indikator: "soMACD"
REM MACD einfach zeichnen
REM Parameter:
REM p=12 (Periode kurz)
REM q=26 (Periode lang)
REM r=9 (Periode Trigger)
myMACD = MACD[p,q,r](TotalPrice)
RETURN myMACD AS "MACD"
SwingMan
Anmeldedatum: 16.08.2005 Beiträge: 885
Verfasst am: 08.01.2006, 20:59
Bitte die {} Klammern mit eckigen Klammern zu ersetzen
REM Indikator "soSigMAcdEMA"
REM Signale mit MACD und ROC eines EMA Gleitenden Durchschnitt
REM Parameter:
REM p=12 (Periode kurz)
REM q=26 (Periode lang)
REM r=9 (Periode Trigger)
REM s=5 (Periode GD)
REM 1. Rate of Change for MACD Indikator. -------------------------------------------------------
rem Gleitende Durchschnitte
fastMA = exponentialAverage[p](TotalPrice)
slowMA = exponentialAverage[q](TotalPrice)
rem GD Differenz (blaue Linie1)
myMACD = fastMA - slowMA
rem EMA der GD Differenz (braune Linie2)
line = exponentialAverage[r](myMACD)
rem Abstand Linie1-Linie2
histo=(myMACD - line)
rem ROC der Histogram
rocMACD=histo-histo{1}
IF rocMACD>=0 then
TradeSignal=1
elsif rocMACD<0 then
TradeSignal=-1
endif
REM 2. Rate of Change for EMA 13 -------------------------------------------------------
EMA13 = exponentialAverage[s](TotalPrice)
rocEMA = ROC{1}(EMA13)
IF rocEMA>=0 then
TradeSignal=TradeSignal+2
elsif rocEMA<0 then
TradeSignal=TradeSignal-2
endif
RETURN TradeSignal AS "ROC MACD+EMA"
Zuletzt bearbeitet von SwingMan am 08.01.2006, 21:02, insgesamt einmal bearbeitet
SwingMan
Anmeldedatum: 16.08.2005 Beiträge: 885
Verfasst am: 08.01.2006, 21:03
REM Indikator "soSigGD1053"
REM Trading Signale mit Durchkreuzen von 3 GDs
REM Parameter hinzufügen:
REM p10 = 10 (Periode lang)
REM p5 = 5 (Periode mittel)
REM p3 = 3 (Periode kurz)
rem Durchkreuzung GD10
IF EMA5 >= SMA10 THEN
mySignal = 4
ELSE
mySignal = -4
ENDIF
rem Durchkreuzung GD5
IF EMA3 >= SMA5 THEN
mySignal = mySignal + 2
ELSE
mySignal = mySignal - 2
ENDIF
rem Durchkreuzung GD3
IF EMA2 >= SMA3 THEN
mySignal = mySignal + 1
ELSE
mySignal = mySignal - 1
ENDIF
RETURN mySignal AS "GD Signal"
SwingMan
Anmeldedatum: 16.08.2005 Beiträge: 885
Verfasst am: 08.01.2006, 21:07
Bitte die {} Klammern mit eckigen Klammern zu ersetzen
REM Indikator "soSafeZoneStop"
REM Safe-Zone-Stop nach Alexander Elder
REM Parameter:
REM p = 100 (Periode Auswertung)
REM f = 3 (Faktor)
REM g = 5 (Periode GD)
REM np = 10 (Anzahl Perioden f. Differenzen)
SafeZoneStop = Undefined
rem Gleitender Durchschnitt
rem GD = Average[g](TotalPrice)
rem Trend = ROC{1}(GD)
rem 1. UpTrend, Differenzen der Tiefs -------------------------------------------------------
DiffLows = 0
nLows = 0
FOR iBar = 0 TO p DO
IF Low[iBar + 1] > Low[iBar] THEN
DiffLows = DiffLows + (Low[iBar + 1] - Low[iBar])
nLows = nLows +1
ENDIF
IF nLows = np THEN
break
ENDIF
NEXT
DiffLows = DiffLows / nLows
rem Maximum der letzten drei Stopps
UpStop1 = Low - f * DiffLows
UpStop = MAX(UpStop1,UpStop1{1})
UpStop = MAX(UpStop,UpStop1{2})
rem 2. DownTrend, Differenzen der Hochs -------------------------------------------------------
DiffHighs = 0
nHighs = 0
FOR iBar = 0 TO p DO
IF High[iBar] > High[iBar+1] THEN
DiffHighs = DiffHighs + (High[iBar] - High[iBar+1])
nHighs = nHighs +1
ENDIF
IF nHighs = np THEN
break
ENDIF
NEXT
DiffHighs = DiffHighs / nHighs
rem Minimum der letzten drei Stopps
DnStop1 = High + f * DiffHighs
DnStop = MIN(DnStop1, DnStop1{1})
DnStop = MIN(DnStop, DnStop1{2})
IF Trend > 0 THEN
SafeZoneStop = UpStop
ELSE
SafeZoneStop = DnStop
ENDIF
RETURN SafeZoneStop AS "SZStop"
Zuletzt bearbeitet von SwingMan am 08.01.2006, 21:07, insgesamt einmal bearbeitet
SwingMan
Anmeldedatum: 16.08.2005 Beiträge: 885
Verfasst am: 08.01.2006, 21:12
Bitte die {} Klammern mit eckigen Klammern zu ersetzen
REM Indikator "soNormMO"
REM Multiple normierte Momentums
REM Wochendaten
Zuletzt bearbeitet von SwingMan am 08.01.2006, 21:13, insgesamt einmal bearbeitet
SwingManT
Anmeldedatum: 17.08.2005 Beiträge: 1700 Wohnort: Frankfurt am Main
Verfasst am: 08.01.2006, 22:24
Bitte die {} Klammern mit eckigen Klammern zu ersetzen
Hier die Variante 1 des Indikators als Trailingstopp.
(Im Up-Trend z.B. werden keine Stops kleiner als die vorherigen erlaubt).,
REM Indikator "soSafeZoneStop"
REM Safe-Zone-Stop nach Alexander Elder
REM Parameter:
REM p = 100 (Periode Auswertung)
REM f = 3 (Faktor)
REM g = 5 (Periode GD)
REM np = 10 (Anzahl Perioden f. Differenzen)
SafeZoneStop = Undefined
rem Gleitender Durchschnitt
rem GD = Average[g](TotalPrice)
rem Trend = ROC{1}(GD)
rem 1. UpTrend, Differenzen der Tiefs -------------------------------------------------------
DiffLows = 0
nLows = 0
FOR iBar = 0 TO p DO
IF Low[iBar + 1] > Low[iBar] THEN
DiffLows = DiffLows + (Low[iBar + 1] - Low[iBar])
nLows = nLows +1
ENDIF
IF nLows = np THEN
break
ENDIF
NEXT
DiffLows = DiffLows / nLows
rem Maximum der letzten drei Stopps
UpStop1 = Low - f * DiffLows
UpStop3 = MAX(UpStop1,UpStop1{1})
UpStop3 = MAX(UpStop3,UpStop1{2})
rem Zacken nach unten vermeiden
IF (Trend > 0) and (UpStop3 < UpStop{1}) THEN
UpStop = UpStop{1}
ELSE
UpStop = UpStop3
ENDIF
rem 2. DownTrend, Differenzen der Hochs -------------------------------------------------------
DiffHighs = 0
nHighs = 0
FOR iBar = 0 TO p DO
IF High[iBar] > High[iBar+1] THEN
DiffHighs = DiffHighs + (High[iBar] - High[iBar+1])
nHighs = nHighs +1
ENDIF
IF nHighs = np THEN
break
ENDIF
NEXT
DiffHighs = DiffHighs / nHighs
rem Minimum der letzten drei Stopps
DnStop1 = High + f * DiffHighs
DnStop3 = MIN(DnStop1, DnStop1{1})
DnStop3 = MIN(DnStop3, DnStop1{2})
rem Zacken nach oben vermeiden
IF (Trend < 0) and (DnStop3 > DnStop{1}) THEN
DnStop = DnStop{1}
ELSE
DnStop = DnStop3
ENDIF
IF Trend > 0 THEN
SafeZoneStop = UpStop
ELSE
SafeZoneStop = DnStop
ENDIF
rem RETURN SafeZoneStop COLOURED BY GD AS "SZStop"
RETURN SafeZoneStop AS "SZStop"
Zuletzt bearbeitet von SwingManT am 08.01.2006, 22:30, insgesamt einmal bearbeitet
SwingMan
Anmeldedatum: 16.08.2005 Beiträge: 885
Verfasst am: 08.01.2006, 23:15
REM Indikator "soChanel"
REM Chanel mit True Average
REM Parameter:
REM t = 14 (Periode True Range)
REM f = 2,1 (Faktor True Range)
REM g = 5 (Periode GD)
rem TrueRange
mymyTrueRange = CALL soTrueRange[t ,f]
rem Gleitender Durchschnitt
GD = Average[g](TotalPrice)
rem Zeichnen
RETURN Kurve1 AS "UpChanel", Kurve2 AS "DnChanel"
Zuletzt bearbeitet von SwingMan am 08.01.2006, 23:18, insgesamt einmal bearbeitet
Fisch
Anmeldedatum: 02.09.2005 Beiträge: 1641
Verfasst am: 09.01.2006, 06:51
Danke, so geht es auch!
SwingManT
Anmeldedatum: 17.08.2005 Beiträge: 1700 Wohnort: Frankfurt am Main
Verfasst am: 09.01.2006, 08:52
@Fisch
Es war gut die Idee ProRealTime einzusetzen. Die Beiträge werden immer bunter!
williams
Anmeldedatum: 08.11.2005 Beiträge: 172
Verfasst am: 09.01.2006, 09:54
@SwingMan
Ja, stimmt schon, ist schön bunt und praktisch auch.
Insbesondere über die Datenaktualisierung braucht man sich keine Gedanken machen.
Aber Dein MS ist halt das Original und wenn ich das mit der Datenaktualisierung noch raus habe, bleibt MS die Nr. 1.
SwingMan
Anmeldedatum: 16.08.2005 Beiträge: 885
Verfasst am: 09.01.2006, 21:26
Bitte die {} Klammern mit eckigen Klammern zu ersetzen
REM Indikator "soMultipleMO"
REM Relative Stärke mit Multiple Momentums (normierte Momente)
REM Gültig für Wochendaten
- Als eine bessere Alternative zur Berechnung der Relativen Stärke scheint die Berücksichtigung der ROC für den Gleitenden Durchschnitt {5} statt Closes zu nehmen.
REM Indikator "soNormMO2"
REM Multiple normierte Momentums
REM Wochendaten
REM Berechnung mit GD{5} des TotalPrices
Im Screener muß man in diesem Fall "soMultipleMO" mit "soNormMO2{5}" ersetzen.
screenMO
REM Screener "screenMO"
REM Aufruf des Indikators "soNormMO2"
indicator1 = CALL soNormMO2{5}
c1 = indicator1
criteria = CALL soNormMO2{5}
SCREENER[c1] (criteria AS "multiMO")
Zuletzt bearbeitet von SwingMan am 09.01.2006, 22:54, insgesamt einmal bearbeitet
SwingMan
Anmeldedatum: 16.08.2005 Beiträge: 885
Verfasst am: 09.01.2006, 21:51
- Die Listen können maximal 50 Titeln beinhalten. Man soll auch überprüfen ob es vielleicht noch ein paar gibt die ich nicht entdeckt habe.
Man muß in den DAX, MDAX und TECDAX Listen suchen.
Zuletzt bearbeitet von SwingMan am 09.01.2006, 21:53, insgesamt einmal bearbeitet
Fisch
Anmeldedatum: 02.09.2005 Beiträge: 1641
Verfasst am: 11.01.2006, 18:52
@SwingMan
1. kannst Du bitte noch einen Indikator für PRT bauen der den InitStop darstellt!
Also WochenBarRange oder vergleichbares!
2. Die OpenLage wird man wohl nicht umsetzen können! Wonach wählst Du dann in PRT aus!
Nur nach SreenMO mit NormMO2?
3. Die EOD Kurse aus Saxo bekommt man sicherlich auch nicht in MS hinein! Oder hast Du eine Möglichkeit gefunden!
4. Hast Du Deine CFD Liste mit den CFD's im Saxotrader abgestimmt?
Sorry! Viele Fragen. Danke!
Fisch
Anmeldedatum: 02.09.2005 Beiträge: 1641
Verfasst am: 11.01.2006, 19:08
Noch was!
Mir kommen die Unterschiede zwischen screenMO und screenNormMO2 ziemlich groß vor!
MO:
MO2
Kannst Du bitte mal vergleichen!
Jetzt höre ich auf zu nerven.
Fisch
Anmeldedatum: 02.09.2005 Beiträge: 1641
Verfasst am: 15.01.2006, 12:27
Zitat:
SwingMan schrieb am 08.01.2006 22:03
REM Indikator "soSigGD1053"
REM Trading Signale mit Durchkreuzen von 3 GDs
REM Parameter hinzufügen:
REM p10 = 10 (Periode lang)
REM p5 = 5 (Periode mittel)
REM p3 = 3 (Periode kurz)
rem Exponential Moving Averages
EMA5 = ExponentialAverage[p5](WeightedClose)
EMA3 = ExponentialAverage[p5](WeightedClose)
EMA2 = ExponentialAverage[p3](Close)
rem Durchkreuzung GD10
IF EMA5 >= SMA10 THEN
mySignal = 4
ELSE
mySignal = -4
ENDIF
rem Durchkreuzung GD5
IF EMA3 >= SMA5 THEN
mySignal = mySignal + 2
ELSE
mySignal = mySignal - 2
ENDIF
rem Durchkreuzung GD3
IF EMA2 >= SMA3 THEN
mySignal = mySignal + 1
ELSE
mySignal = mySignal - 1
ENDIF
RETURN mySignal AS "GD Signal"
@SwingMan
ist das ein Schreibfehler?
SwingMan
Anmeldedatum: 16.08.2005 Beiträge: 885
Verfasst am: 15.01.2006, 16:39
@Fisch
Du hattest Recht!
Die Formel muß
EMA3 = ExponentialAverage[p3](WeightedClose) lauten.
_________________
Shakk
Anmeldedatum: 07.07.2009 Beiträge: 1
Verfasst am: 07.07.2009, 21:55
Hallo ich weiß nicht ob hier noch fragen beantwortet werden, aber ich bräuchte hilfe beim programmieren bzw. beim übersetzen. Kann mir jemand helfen diesen Code auf ProRealtime zu portieren...??? Vielen Dank schon mal
Handelsystem "Stop Loss Steps"
Meta:
Synopsis("Stop Loss and Trailing stop, based in the volatility. tha trailings stop moves in steps on the multiplie of volatility."),
Weblink("http://www.tradesignalonline.com/Lexicon/Default.aspx?name=Volatilit%u00e4tsstop+mit+Trailing+Stop"),
SubChart( False );
Inputs:
Activate_Stop( True ),//Activate - Deactivate the program
Period_ATR( 20 , 1 ),//Perdiod for the volatility calculation
Start_Factor( 2.5 ),//factor for the init stop
Activate_Trail( True ),//Activate the trailing stop
Trail_Factor( 1.0 ),//factor for the stepwidth
Draw_Stops( True );
initStopLevelLong = Close - stopValue;
initStopLevelShort = Close + stopValue;
If Activate_Stop Then
Begin
If ! LongPos() Then
Begin
Sell("Init Long") Next Bar at initStopLevelLong Stop;
stepCondLong = False;
End;
If ! ShortPos() Then
Begin
Cover("Init Short") Next Bar at initStopLevelShort Stop;
stepCondShort = False;
End;
End;
if LongPOS() and Activate_Stop then
begin
If ( serialTP > serialTP[1] ) Then
Begin
stopLevelLong = initStopLevelLong[1];
newStopLevel = stopLevelLong;
trailLevel = stopLevelLong;
trailBorder = EntryPrice + stopValue;
stepCondLong = True;
If Draw_Stops Then
DrawSymbol( initStopLevelLong[1], "Init Long", SymbolDot, 5, DarkGreen, DarkGreen );
End
Else
Begin
If ( serialOP > 0 ) And Activate_Trail Then
Begin
If ( Close > trailBorder ) Then
Begin
trailBorder = trailBorder + trailValue;
If stepCondLong Then
Begin
stepCondLong = False;
trailLevel = EntryPrice + Commission;
DrawText( trailLevel, "Tx BE", "Break Even", 12, DarkGreen, AlignBottom );
DrawSymbol( trailLevel, "Smbl BE", SymbolTriangleUp, 6, DarkGreen, DarkGreen );
End
Else
trailLevel = trailLevel + trailValue;
End;
If Draw_Stops Then
DrawSymbol( initStopLevelShort[1], "Init Short", SymbolDot, 5, Red, Red );
End
Else
Begin
If ( serialOP > 0 ) And Activate_Trail Then
Begin
If ( Close < trailBorder ) Then
Begin
trailBorder = trailBorder - trailValue;
If stepCondShort Then
Begin
stepCondShort = False;
trailLevel = EntryPrice - Commission;
DrawText( trailLevel, "Tx BE", "Break Even", 12, DarkBlue, AlignTop );
DrawSymbol( trailLevel, "Smbl BE", SymbolTriangleDown, 6, Red, Red );
End
Else trailLevel = trailLevel - trailValue;
End;
If Activate_Stop And ( newStopLevel <> 0 ) Then
Begin
Cover("Stop Short") Next Bar at newStopLevel Stop;
NoPlot("Tx Stop Short");
If Draw_Stops Then
Begin
DrawText[-1]( newStopLevel, "TX Stop Short", "SL: " + CStr( newStopLevel, 4 ), 10, Red, AlignBottom + AlignCenter );
DrawSymbol[-1]( newStopLevel, "Smbl Stop Short", SymbolDot, 5, Red, Red );
End;
End;
end;
// *** Copyright tradesignal GmbH ***
// *** www.tradesignal.com ***“
Funktion "LongPos"
Meta:
Synopsis("Reports True if the systems marketposition is long");
LongPos = MarketPosition = 1;
// *** Copyright tradesignal GmbH ***
// *** www.tradesignal.com ***
Funktion "ShortPos"
Meta:
Synopsis("Reports True if the systems marketposition is short");
ShortPos = MarketPosition = -1;
// *** Copyright tradesignal GmbH ***
// *** www.tradesignal.com ***
Funktion "trend"
trend = 1;
if high[2] < close[7] and high[2] < close[8] and high < low[5] and high <low> close[7] and low[2] > close[8] and low > high[5] and low > high[6] then
trend = 0;