Conversion de l’indicateur “Ichimoku Oscillator” pour PRT
Forums › ProRealTime forum Français › Support ProBuilder › Conversion de l’indicateur “Ichimoku Oscillator” pour PRT
- This topic has 3 replies, 2 voices, and was last updated 3 weeks ago by
Gilou34.
-
-
08/06/2025 at 10:51 AM #249434
Bonjour,
Je souhaite utiliser l’indicateur “Ichimoku Oscillator” de Lonesome The Blue qui est en open source.
Serait-il possible de convertir le code en pj en langage ProBuilder pour ProRealTime.
En vous remerciant par avance.
Gilles
08/26/2025 at 5:58 PM #250084voici:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285// ---------------------------------------------//// PRC_Ichimoku Oscillator (BY LonesomeTheBlue)//version = 0//26.08.2025//Iván González @ www.prorealcode.com//Sharing ProRealTime knowledge// ---------------------------------------------//// --- PARÁMETROS CONFIGURABLES ---conversionPeriods = 8basePeriods = 13laggingSpan2Periods = 26displacement = 13useatr = 1atrlen = 9atrmul = 2.0bounceoff = 1useema = 1emalen = 9ematkpartprft = 1bgcolupI = 1 // 1=Verde, 2=Rojo, 3=AzulbgcoldnI = 3 // 1=Verde, 2=Rojo, 3=Azulbgtransp = 60// --- CÁLCULOS ICHIMOKU ---highestConv = HIGHEST[conversionPeriods](High)lowestConv = LOWEST[conversionPeriods](Low)conversionLine = (lowestConv + highestConv) / 2highestBase = HIGHEST[basePeriods](High)lowestBase = LOWEST[basePeriods](Low)baseLine = (lowestBase + highestBase) / 2leadLine1 = (conversionLine + baseLine) / 2highestLagging = HIGHEST[laggingSpan2Periods](High)lowestLagging = LOWEST[laggingSpan2Periods](Low)leadLine2 = (lowestLagging + highestLagging) / 2// --- CÁLCULO DEL OSCILADOR ---CloudMin = MIN(leadLine1[displacement - 1], leadLine2[displacement - 1])CloudMax = MAX(leadLine1[displacement - 1], leadLine2[displacement - 1])inthecloud = (close >= CloudMin AND close <= CloudMax)IF close > CloudMax THENmtrend = 1ELSIF close < CloudMin THENmtrend = -1ENDIF// CAPA 1: OsclineIF mtrend = 1 THENOscline = (close - CloudMin)ELSEOscline = (close - CloudMax)ENDIF// CAPA 2: LagginglaggingComponent = 0IF mtrend = 1 THENlaggingComponent = MAX(close - CloudMax[displacement - 1], 0)ELSElaggingComponent = MIN(close - CloudMin[displacement - 1], 0)ENDIFLagging = Oscline + laggingComponent// CAPA 3: Conversion/BaseconvBaseComponent = 0IF mtrend = 1 THENconvBaseComponent = MAX((conversionLine - baseLine), 0)ELSEconvBaseComponent = MIN((conversionLine - baseLine), 0)ENDIFConvBase = Lagging + convBaseComponent// CAPA 4: CloudcloudComponent = 0IF mtrend = 1 THENcloudComponent = MAX(leadLine1 - leadLine2, 0)ELSEcloudComponent = MIN(leadLine1 - leadLine2, 0)ENDIFcloud = ConvBase + cloudComponent// --- LÓGICA DE TENDENCIA ---anyofthemrising = (conversionLine > conversionLine[1]) OR (baseLine > baseLine[1])anyofthemfalling = (conversionLine < conversionLine[1]) OR (baseLine < baseLine[1])convoverbase = conversionLine >= baseLinebaseoverconv = conversionLine <= baseLinetole = 0IF useatr = 1 THENtole = AverageTrueRange[atrlen] * atrmulENDIFIF mtrend = 1 THENIF mtrend[1] = -1 THENtrend = 0ENDIFIF trend < 4 AND close > CloudMax THENnewTrend = 1IF Lagging > Oscline THENnewTrend = newTrend + 1ENDIFIF convoverbase AND anyofthemrising THENnewTrend = newTrend + 1ENDIFIF leadLine1 >= leadLine2 THENnewTrend = newTrend + 1ENDIFtrend = newTrend - 1ELSIF conversionLine < baseLine - tole THENtrend = 0ENDIFELSIF mtrend = -1 THENIF mtrend[1] = 1 THENtrend = 0ENDIFIF trend > -4 AND close < CloudMin THENnewTrend = -1IF Lagging < Oscline THENnewTrend = newTrend - 1ENDIFIF baseoverconv AND anyofthemfalling THENnewTrend = newTrend - 1ENDIFIF leadLine1 <= leadLine2 THENnewTrend = newTrend - 1ENDIFtrend = newTrend + 1ELSIF conversionLine > baseLine + tole THENtrend = 0ENDIFENDIFIF trend = 3 AND trend[1] <> 3 THENentrylevel = closeELSIF trend = -3 AND trend[1] <> -3 THENentrylevel = closeENDIF// --- DIBUJO DE LAS ÁREAS DEL OSCILADOR CON COLORBETWEEN ---// CAPA 4: CloudIF mtrend = 1 THENrcap4 = 0gcap4 = 70bcap4 = 0ELSErcap4 = 70gcap4 = 0bcap4 = 0ENDIFCOLORBETWEEN(0, cloud, rcap4, gcap4, bcap4, 255)// CAPA 3: ConvBaseIF conversionLine >= baseLine THENrcap3 = 0gcap3 = 130bcap3 = 0ELSErcap3 = 130gcap3 = 0bcap3 = 0ENDIFCOLORBETWEEN(0, ConvBase, rcap3, gcap3, bcap3, 255)// CAPA 2: Laggingacap2 = 0 // alpha a 0 por defecto (transparente)IF close > CloudMax THENrcap2 = 0gcap2 = 190bcap2 = 0acap2 = 255ELSIF close < CloudMin THENrcap2 = 190gcap2 = 0bcap2 = 0acap2 = 255ENDIFIF acap2 > 0 THEN // Solo dibuja si hay color que aplicarCOLORBETWEEN(0, Lagging, rcap2, gcap2, bcap2, acap2)ENDIF// CAPA 1: OsclineIF inthecloud THENrcap1 = 209gcap1 = 212bcap1 = 220ELSIF close > CloudMax THENrcap1 = 0gcap1 = 250bcap1 = 0ELSE // close < CloudMinrcap1 = 250gcap1 = 0bcap1 = 0ENDIFCOLORBETWEEN(0, Oscline, rcap1, gcap1, bcap1, 255)// --- CÁLCULO DE SEÑALES ---closetrade = 0IF (trend <> trend[1]) AND (ABS(trend[1]) = 3) THENIF trend[1] > 0 THENclosetrade = 1ELSEclosetrade = -1ENDIFENDIFuptrendSignal = 0downtrendSignal = 0IF trend = 3 AND trend[1] <> 3 THENuptrendSignal = 1ENDIFIF trend = -3 AND trend[1] <> -3 THENdowntrendSignal = -1ENDIFbouncbackup = 0bouncbackdn = 0IF bounceoff = 1 THENIF trend = 3 AND close > CloudMax AND inthecloud[1] THENbouncbackup = 1ENDIFIF trend = -3 AND close < CloudMin AND inthecloud[1] THENbouncbackdn = -1ENDIFENDIFpartclose = 0profitable = (trend = 3 AND close > entrylevel) OR (trend = -3 AND close < entrylevel)IF profitable THENemaline = ExponentialAverage[emalen](cloud)basecrosscons = baseLine CROSSES UNDER conversionLineemacrosscloud = emaline CROSSES OVER cloudconvcrossbase = conversionLine CROSSES OVER baseLinecloudcrossema = cloud CROSSES OVER emalineIF (trend = 3 AND basecrosscons) OR (trend = 3 AND emacrosscloud AND ematkpartprft=1) THENpartclose = 1ENDIFIF (trend = -3 AND convcrossbase) OR (trend = -3 AND cloudcrossema AND ematkpartprft=1) THENpartclose = -1ENDIFENDIF// --- COLOR DE FONDO ---alphaBG = 100 - bgtranspuptmult = 159 + POW(trend, 3)dntmult = 159 + POW(ABS(trend), 3)rup = 0gup = 0bup = 0rdn = 0gdn = 0bdn = 0IF bgcolupI = 1 THENgup = uptmultELSIF bgcolupI = 2 THENrup = uptmultELSEbup = uptmultENDIFIF bgcoldnI = 1 THENgdn = dntmultELSIF bgcoldnI = 2 THENrdn = dntmultELSEbdn = dntmultENDIFIF trend > 0 THENBACKGROUNDCOLOR(rup, gup, bup, alphaBG)ELSif trend < 0 thenBACKGROUNDCOLOR(rdn, gdn, bdn, alphaBG)elseBACKGROUNDCOLOR("grey", alphaBG)ENDIF// --- SALIDA DE DATOS ---emalineFinal = UNDEFINEDIF useema = 1 THENemalineFinal = ExponentialAverage[emalen](cloud)ENDIFRETURN emalineFinal AS "EMA", cloud coloured(rcap4,gcap4,bcap4), ConvBase coloured(rcap3,gcap3,bcap3), lagging coloured(rcap2,gcap2,bcap2), oscline coloured(rcap1,gcap1,bcap1)style(histogram)//, uptrendSignal AS "BuySignal", downtrendSignal AS "SellSignal", bouncbackup+bouncbackdn AS "AddSignal", closetrade AS "CloseSignal", partclose AS "PartialCloseSignal"1 user thanked author for this post.
08/28/2025 at 2:31 PM #25016109/02/2025 at 12:01 PM #250269Bonjour,
J’ai utilisé lindicateur traduit en PRT et le résultat est identique à l’original, cependant les symboles d’achat et de vente (totales ou partielles) ne sont pas visibles. Ce serait parfait si vous pouviez les faire réapparaitre.
Comme vous pouvez le voir sur le fichier joint, sur l’indicateur original il y a des triangles jaunes et blancs ainsi que des X (petits et grands) jaunes et blancs également mais vous pouvez choisir d’autres symboles et d’autres couleurs.
En vous remerciant par avance.
Gilou34.
-
AuthorPosts
Find exclusive trading pro-tools on