Nochmal Divergenzen, mehrere
Forums › ProRealTime Deutsch forum › ProOrder Support › Nochmal Divergenzen, mehrere
- This topic has 16 replies, 4 voices, and was last updated 1 year ago by robertogozzi.
-
-
10/25/2022 at 6:25 PM #203062
Na hi Leute.
(Wenn die Darstellung das Codes nicht richtig klappt, bitte habt ein Nachsehen. Es finde keine Voransicht meines Beitrages.)
Es wird kompliziert.
Ich habe diesen Indikator von hier genommen .
https://www.prorealcode.com/prorealtime-indicators/rsi-classical-hidden-divergences-indicator/
stark eingekürzt und etwas umgeschrieben.
divergence123456789101112131415161718192021222324252627282930313233RsiOverSold = 40RsiOverBought = 60MinBarRange = 3MyRSI = RSI[14](close) // rsi[RsiPeriod](Close)Once Rge1 = 5*pipsizeOnce Rge2 = 8*pipsizeRsiMax = MyRSI < MyRSI[1] and MyRSI[1] > MyRSI[2] and MyRSI[1] > RsiOverBoughtRsiMin = MyRSI > MyRSI[1] and MyRSI[1] < MyRSI[2] and MyRSI[1] < RsiOverSoldif RsiMax thenRSIMax1 = MyRSI[1]High1 = High[1]for I = MinBarRange to 80if RsiMax[I] thenRSIMax2 = MyRSI[I + 1]High2 = High[I + 1]If High1 > High2 and RSIMax1 < RSIMax2 thenDRAWARROWDOWN(barindex, High + Rge1) coloured(255,192,203,255)DRAWTEXT("RSI", barindex, High + Rge2, SansSerif,Italic,10)coloured(0,0,255,255)//elsif High1 < High2 and RSIMax1 > RSIMax2 then//DRAWARROWDOWN(barindex, High + Rge1) coloured(255,192,203,255)//DRAWTEXT("hd_rsi", barindex, High + Rge2, SansSerif,Italic,10)coloured(0,0,255,255)endifbreakendifnextendifreturnWir haben also die Short-Signale mit “DrawArrowDown” beim RSI
Diesen eingekürzten Indikator kann man nun sehr leicht in andere Divergenz-Indikatoren umschreiben, z.B. mit dem MFI
divergence MFI12345678910111213141516171819202122232425262728293031323334RsiOverSold = 30RsiOverBought = 70MinBarRange = 3MyRSI = MoneyFlowIndex[14] // ahaOnce Rge1 = 15*pipsizeOnce Rge2 = 17*pipsizeRsiMax = MyRSI < MyRSI[1] and MyRSI[1] > MyRSI[2] and MyRSI[1] > RsiOverBoughtRsiMin = MyRSI > MyRSI[1] and MyRSI[1] < MyRSI[2] and MyRSI[1] < RsiOverSoldif RsiMax thenRSIMax1 = MyRSI[1]High1 = High[1]for I = MinBarRange to 80if RsiMax[I] thenRSIMax2 = MyRSI[I + 1]High2 = High[I + 1]If High1 > High2 and RSIMax1 < RSIMax2 thenDRAWARROWDOWN(barindex, High + Rge1) coloured(255,192,203,255)DRAWTEXT("MFI", barindex, High + Rge2, SansSerif,Italic,10)coloured(0,0,255,255) //aha//elsif High1 < High2 and RSIMax1 > RSIMax2 then//DRAWARROWDOWN(barindex, High + Rge1) coloured(255,192,203,255)//DRAWTEXT("MFI", barindex, High + Rge2, SansSerif,Italic,10)coloured(0,0,255,255)endifbreakendifnextendifreturnWir haben nun also die Short-Signale mit “DrawArrowDown” dem MFI
Das kann man fortsetzen für andere (gute) Divergenzindikatoren wie Momentum, PVT, SMI, …
Soweit so gut.…………………………………..
Ersetze ich jetzt das “DrawArrowDown” mit Sellshort, füge SL und TP und schreibe den Indikator etwas um, erhalte ich eine Strategie, die sieht dann so aus
Strategie Divergence RSI1234567891011121314151617181920212223242526272829RsiOverSold = 40RsiOverBought = 60MinBarRange = 3MyRSI = RSI[14](close)RsiMax = MyRSI < MyRSI[1] and MyRSI[1] > MyRSI[2] and MyRSI[1] > RsiOverBoughtRsiMin = MyRSI > MyRSI[1] and MyRSI[1] < MyRSI[2] and MyRSI[1] < RsiOverSoldif RsiMax thenRSIMax1 = MyRSI[1]High1 = High[1]for I = MinBarRange to 80if RsiMax[I] thenRSIMax2 = MyRSI[I + 1]High2 = High[I + 1]If High1 > High2 and RSIMax1 < RSIMax2 thensellshort at marketendifbreakendifnextendifset stop ploss 15set target pprofit 15Das gleiche kann ich mit den anderen Indikatoren Momentum, PVT, SMI, … machen.
…………………………………..
Nun kommt meine eigentliche Frage.
Es können 1,2,3,4… “DrawArrowDown” gleichzeitg über einer Kerze oder auch über mehrere Kerzen hintereinander auftreten. So entstehen dann 1,2,3,4… Shortsignale.
Ich möchte nun 1.
einen Short eröffnen, wenn z.B. 3 von 4 Shortsignalen über die letzten n-Kerzen aufgetreten sind, es können auch die gleichen Shortsignale sein, siehe Screenshot1und ich möchte alternativ 2.
Longs eröffnen wenn z.B. 3 von 4 shortsignale über die letzten n-Kerzen aufgetreten sind, es können auch wieder die gleichen Shortsignale sein, siehe Screenshot2Wie würde dafür der der Code aussehen…?
……………………………….
Habe ich es gut erklären können? Habt Ihr Fragen?
10/25/2022 at 6:26 PM #20306510/31/2022 at 11:36 AM #203296Da Sie vom vorherigen Balken 3 bis 80 in die Vergangenheit schauen, gehen Sie jedes Mal, wenn Sie eine Divergenz entdecken, zum Markt, selbst wenn dieses Divergenzsignal bereits in der Vergangenheit gehandelt wurde. Ich schlage vor, dass Sie den BARINDEX dieses Signals testen, damit die nächste Bestellung nicht startet, wenn das Signal vom selben BARINDEX kommt (Code unten nicht getestet):
12345678910111213141516171819202122232425262728293031323334RsiOverSold = 40RsiOverBought = 60MinBarRange = 3MyRSI = RSI[14](close)RsiMax = MyRSI < MyRSI[1] and MyRSI[1] > MyRSI[2] and MyRSI[1] > RsiOverBoughtRsiMin = MyRSI > MyRSI[1] and MyRSI[1] < MyRSI[2] and MyRSI[1] < RsiOverSoldif RsiMax thenRSIMax1 = MyRSI[1]High1 = High[1]for I = MinBarRange to 80if RsiMax[I] thenRSIMax2 = MyRSI[I + 1]High2 = High[I + 1]If High1 > High2 and RSIMax1 < RSIMax2 thendivbar=barindexbreakendifendifnextendifif divbar<>lastdivbar thensellshort at marketlastdivbar=divbarendifset stop ploss 15set target pprofit 151 user thanked author for this post.
11/06/2022 at 2:39 PM #203636Vielen Dank. Das passt so.
Ich habe deinen Code mit defparam cumulateorders = false ergänzt, es sieht im 1 Min-chart 100K so aus, Screenshot1.
Aber es geht noch weiter.
Ich möchte nicht nur die RSI-Divergenzen verwenden sondern auch vom MFI, SMI, PVT. Momentum. Wir hätten dann genau 5 Divergenzen.
Wie kann der Code aussehen, dass ich einen Short eröffne, wenn mindestens 3 der 5 Divergenzen vorliegen? – und das a. in einer Kerze oder b. innerhalb der letzten n-Kerzen?
11/07/2022 at 9:45 AM #20374111/07/2022 at 10:12 AM #20374612/03/2022 at 2:46 PM #205222Nochmal bitte wegen den Divergenzen.
Kannst mir helfen, so daß ich den nachfolgenden Code als Bedingung weiter verwenden kann?
123456789101112131415161718192021222324252627282930313233RsiOverSold = 40RsiOverBought = 60MinBarRange = 3MyRSI = RSI[14](close) // rsi[RsiPeriod](Close)Once Rge1 = 5*pipsizeOnce Rge2 = 8*pipsizeRsiMax = MyRSI < MyRSI[1] and MyRSI[1] > MyRSI[2] and MyRSI[1] > RsiOverBoughtRsiMin = MyRSI > MyRSI[1] and MyRSI[1] < MyRSI[2] and MyRSI[1] < RsiOverSoldif RsiMax thenRSIMax1 = MyRSI[1]High1 = High[1]for I = MinBarRange to 80if RsiMax[I] thenRSIMax2 = MyRSI[I + 1]High2 = High[I + 1]If High1 > High2 and RSIMax1 < RSIMax2 thenDRAWARROWDOWN(barindex, High + Rge1) coloured(255,192,203,255)DRAWTEXT("RSI", barindex, High + Rge2, SansSerif,Italic,10)coloured(0,0,255,255)//elsif High1 < High2 and RSIMax1 > RSIMax2 then//DRAWARROWDOWN(barindex, High + Rge1) coloured(255,192,203,255)//DRAWTEXT("hd_rsi", barindex, High + Rge2, SansSerif,Italic,10)coloured(0,0,255,255)endifbreakendifnextendifreturnAlso in dem Moment wo das der Pfeil im chart erscheint, soll die Bedingung z.B. “c1” als erfüllt gelten so dass ich mit dieser Bedingung weiterarbeiten kann etwa so
if c1 then..12/04/2022 at 3:21 PM #205239Hallo Nikolas.
Vielleicht kannst du nochmal helfen.
Dass Thema mit den Divergenzen finde ich gar nicht so schlecht, und habe mich damit beschäftigt.
So wie ich es verstanden habe, soll es beim Auftreten von mehreren Divergenzen, siehe Screenshort xy eine Shortposition eingenommen werden (Longpositionen werden der Vereinfachung wegen vernachlässigt).
Ich habe es mit meinen Fähigkeiten durchprogrammiert aber es tut nicht was es soll. Mir ist nicht klar, warum es den Handel nicht korrekt auslöst. Nachfolgend der Code für die Divergenz und den Handel. Bitte kannst du helfen?
divergenze1234567891011121314151617181920212223242526272829303132333435/////////////////////////////////////////////// Stochastic divergences ON Stochastic// https://www.prorealcode.com/topic/obv-on-balance-volume-divergence/// based on://// MACD divergences on MACD// by Jose Callao// twitter @jose7674//// little changed by JohnSchermbr = 1n = 40DIVRSI = RSI[10](close)IF (BarIndex > N) THENIF (DIVRSI[1]>DIVRSI AND DIVRSI[1]>DIVRSI[2]) THENextremumRSI2=DIVRSI[1]extremumRSI1=highest[N](DIVRSI)preciomaxRSI2=close[1]preciomaxRSI=Highest[N](close)IF(extremumRSI2<extremumRSI1 AND preciomaxRSI2>preciomaxRSI[1]) THENfor i= mbr to nif DIVRSI[i]=extremumRSI1 thenDRAWARROWDOWN(barindex, High + 10) coloured(255,0,255)DRAWTEXT("RSI", barindex, High + 15, SansSerif,Italic,10)coloured(255,0,255)endifnextendifendifendifreturnHandel123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596defparam cumulateorders = falseonce cDIVMFI = 0once cDIVRSI = 0once cDIVMOM = 0td = opendayofweek >=1 and opendayofweek <= 5tt = time >= 080000 and time <= 210000mbr = 1n = 40//.................................................................................................................DIVMFI = MoneyFlowIndex[14]IF (BarIndex > n) THENIF (DIVMFI[1]>DIVMFI AND DIVMFI[1]>DIVMFI[2]) THENextremumMFI2=DIVMFI[1]extremumMFI1=highest[n](DIVMFI)preciomaxMFI2=close[1]preciomaxMFI=Highest[n](close)IF(extremumMFI2<extremumMFI1 AND preciomaxMFI2>preciomaxMFI[1]) THENfor i=mbr to nif DIVMFI[i]=extremumMFI1 thencDIVMFI = 1EndifnextEndifEndifEndif//.................................................................................................................DIVRSI = RSI[14](close)IF (BarIndex > n) THENIF (DIVRSI[1]>DIVRSI AND DIVRSI[1]>DIVRSI[2]) THENextremumRSI2=DIVRSI[1]extremumRSI1=highest[n](DIVRSI)preciomaxRSI2=close[1]preciomaxRSI=Highest[n](close)IF(extremumRSI2<extremumRSI1 AND preciomaxRSI2>preciomaxRSI[1]) THENfor i=mbr to nif DIVRSI[i]=extremumRSI1 thencDIVRSI = 1EndifnextEndifEndifEndif//.................................................................................................................DIVMOM = Momentum[12](close)If (BarIndex > n) THENIf (DIVMOM[1]>DIVMOM AND DIVMOM[1]>DIVMOM[2]) THENextremumMOM2=DIVMOM[1]extremumMOM1=highest[n](DIVMOM)preciomaxMOM2=close[1]preciomaxMOM=Highest[n](close)If(extremumMOM2<extremumMOM1 AND preciomaxMOM2>preciomaxMOM[1]) THENfor i=mbr to nIf DIVMOM[i]=extremumMOM1 thencDIVMOM = 1EndifnextEndifEndifEndif//.................................................................................................................IF td and tt thenIF cDIVMFI = 1 and cDIVRSI = 1 and cDIVMOM = 1 thenbuy at marketENDIFENDIFIF onmarket thencDIVMFI = 0cDIVRSI = 0cDIVMOM = 0ENDIFset stop ploss 20set target pprofit 2512/07/2022 at 6:22 PM #205355Wenn Sie sowohl in der Strategie als auch im Indikator die gleiche Anzahl von RSI-Perioden angeben, entsprechen die Einträge den Signalen des Indikators.
1 user thanked author for this post.
12/08/2022 at 6:41 PM #205433Hallo Roberto.
Vielen Dank das du mir hier hilfst.
Ich habe die Einstellungen bei denIndikatoren mit den den Einstellungen in der Handelsanweisung synchronisiert. Es stimmt es gab Fehler, aber das Ergebnis blieb das gleiche. Es wurde ein Kaufauftrag ausgelöst, auch wenn nicht alle Pfeile der Indikatoren übereinander lagen.
Ich habe daraufhin einen der Indikatoren komplett überarbeitet, siehe nachfolgend oder auch anbei den itf-file.
12345678910111213141516171819202122232425262728Rge1 = 10Rge2 = 15mbr = 1n = 40DIVSMI = SMI[14,3,5](close)IF (BarIndex > n) THENIF (DIVSMI[1]>DIVSMI AND DIVSMI[1]>DIVSMI[2]) THENextremumSMI2=DIVSMI[1]extremumSMI1=highest[n](DIVSMI)preciomaxSMI2=close[1]preciomaxSMI=Highest[n](close)IF(extremumSMI2<extremumSMI1 AND preciomaxSMI2>preciomaxSMI[1]) THENfor i=mbr to nif DIVSMI[i]=extremumSMI1 thenDRAWARROWDOWN(barindex, High + Rge1) coloured(255,0,255)DRAWTEXT("SMI", barindex, High + Rge2, SansSerif,Italic,10)coloured(255,0,255)EndifnextEndifEndifENDIFreturnDann habe ich die Handelsanweisung überarbeitet und auf ledglich eine Divergenz heruntergebrochen siehe dafür nachfolgend bzw. den itf-file.
12345678910111213141516171819202122232425262728293031323334353637383940defparam cumulateorders = falseonce cDIVSMI = 0mbr = 1n = 40DIVSMI = SMI[14,3,5](close)IF (BarIndex > n) THENIF (DIVSMI[1]>DIVSMI AND DIVSMI[1]>DIVSMI[2]) THENextremumSMI2=DIVSMI[1]extremumSMI1=highest[n](DIVSMI)preciomaxSMI2=close[1]preciomaxSMI=Highest[n](close)IF(extremumSMI2<extremumSMI1 AND preciomaxSMI2>preciomaxSMI[1]) THENfor i=mbr to nif DIVSMI[i]=extremumSMI1 thencDIVSMI = 1EndifnextEndifEndifENDIFIf cDIVSMI = 1 thensellshort at marketENDIFIF onmarket thencDIVSMI = 0ENDIFset stop ploss 15set target pprofit 15Es sieht soweit alles in Ordnung aus und trotzem gibt es wieder Abweichungen, siehe dazu anbei den Screenshot und dort die senkrechten roten Linien.
Der Handel wird nicht auf der “gleichen” Kerze ausgelöst.Kannst du erkennen welchen Fehler ich habe und mir zeigen wie ich den Fehler verbessern kann?
Liebe Grüße
JohnScher12/09/2022 at 9:13 AM #205443Wenn Sie den Zeitrahmen auf 1 Minute ändern, funktioniert es einwandfrei. Nicht zeitbasierte Charts können Strategien nur im Backtest-Modus ausführen, nicht im Live-Modus, aber sie sind möglicherweise nicht so genau.
1 user thanked author for this post.
12/09/2022 at 2:58 PM #205473Hallo Roberto.
Vielen lieben Dank.
Das sieht schon sehr viel besser aus.Nun geht es noch um den Zusammenbau von mehreren Divergenzen zum Auslösen einer Handlung.
Nachfolgend der Code. Die Indikatoren wurden auf die Standardeinstellungen gesetzt und sind synchronisiert.
Anbei auch die itf-files.12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394defparam cumulateorders = falseonce cDIVMFI = 0once cDIVRSI = 0once cDIVMOM = 0td = opendayofweek >=1 and opendayofweek <= 5tt = time >= 080000 and time <= 210000mbr = 1n = 40//.................................................................................................................DIVMFI = MoneyFlowIndex[14]IF (BarIndex > n) THENIF (DIVMFI[1]>DIVMFI AND DIVMFI[1]>DIVMFI[2]) THENextremumMFI2=DIVMFI[1]extremumMFI1=highest[n](DIVMFI)preciomaxMFI2=close[1]preciomaxMFI=Highest[n](close)IF(extremumMFI2<extremumMFI1 AND preciomaxMFI2>preciomaxMFI[1]) THENfor i=mbr to nif DIVMFI[i]=extremumMFI1 thencDIVMFI = 1EndifnextEndifEndifEndif//.................................................................................................................DIVRSI = RSI[14](close)IF (BarIndex > n) THENIF (DIVRSI[1]>DIVRSI AND DIVRSI[1]>DIVRSI[2]) THENextremumRSI2=DIVRSI[1]extremumRSI1=highest[n](DIVRSI)preciomaxRSI2=close[1]preciomaxRSI=Highest[n](close)IF(extremumRSI2<extremumRSI1 AND preciomaxRSI2>preciomaxRSI[1]) THENfor i=mbr to nif DIVRSI[i]=extremumRSI1 thencDIVRSI = 1EndifnextEndifEndifEndif//.................................................................................................................DIVMOM = Momentum[12](close)If (BarIndex > n) THENIf (DIVMOM[1]>DIVMOM AND DIVMOM[1]>DIVMOM[2]) THENextremumMOM2=DIVMOM[1]extremumMOM1=highest[n](DIVMOM)preciomaxMOM2=close[1]preciomaxMOM=Highest[n](close)If(extremumMOM2<extremumMOM1 AND preciomaxMOM2>preciomaxMOM[1]) THENfor i=mbr to nIf DIVMOM[i]=extremumMOM1 thencDIVMOM = 1EndifnextEndifEndifEndif//.................................................................................................................IF td and tt thenIF cDIVMFI = 1 and cDIVRSI = 1 and cDIVMOM = 1 thenbuy at marketENDIFENDIFIF onmarket thencDIVMFI = 0cDIVRSI = 0cDIVMOM = 0ENDIFset stop ploss 40set target pprofit 40Im Anhang sind 2 Screenshots selbsterklärend. Man kann gut erkennen, dass das System nicht macht was es soll.
Kannst du mir dabei helfen den Fehler zu finden und zu beheben?Liebe Grüße
JohnScher12/09/2022 at 2:58 PM #20547812/09/2022 at 6:06 PM #205487Eine Weile und richtig aussteigen, auf den DAX, 1 Minute. Geben Sie ein, wenn die 3 Bedingungen erfüllt sind (die zurückgesetzt werden, wenn es bereits auf dem Markt ist).
1 user thanked author for this post.
12/09/2022 at 6:08 PM #205489Ich hänge ein Bild an.
-
AuthorPosts