ProRealCode - Trading & Coding with ProRealTime™
A ver yo tengo un indicador que me funciona muy bien hasta cierto punto es este codigo
if time = 081500 then
pad = open
s1 = pad / 1.00236
S2 = PAD / 1.00382
S3 = PAD / 1.005
S4 = PAD / 1.00618
s5 = pad / 1.00762
s6 = pad /1.01
s7 = pad / 1.0123
s8 = pad / 1.01382
s9 = pad /1.015
r1 = pad * 1.00236
r20 = PAD * 1.00382
r3 = PAD * 1.005
r4 = PAD * 1.00618
r5 = PAD * 1.00762
r6 = PAD * 1.01
r7 = pad * 1.01236
r8 = pad * 1.01382
r9 = pad * 1.015
endif
return pad as "apertura", s1 as "primer soporte23",S2 AS "segundo soporte38", s3 as "tercer soporte50", s4 as "cuarto soporte61", s5 as "quinto soporte76", s6 as "sexto soporte1", s7 as "soporte 7 123", s8 as "soporte 8 138", s9 as "soporte9 150", r1 as "primera resistencia23", r20 as "segunda resistencia38", r3 as "tercera resistencia50", r4 as "cuarta resistencia61", r5 as "quinta resistencia76", r6 as "sexta resistencia100", r7 as "resistencia7 123", r8 as "resistencia8 138", r9 as "resistencia9 150"
Como podeis ver es un codigo muy sencillo y me da esta informacion que es exactamente la que yo busco primera captura subida
Cual es el problema pues que como es un indicador que va en la parte de arriba del precio y como tiene las instrucciones de ejecucion en el campo del return pues que cada vez que intento cambiar de grafico de frametime o sencillamente de unidades entra en loop y me deja el grafico sin posibilidad de ver nada completamente a zoom cero o sea en el Dow tengo desde 0 hasta 30000 y el precio ni con lupa
Llevo semanas intentando encontrar la solucion y he llegado hasta aqui este es el codigo que mas o menos funciona
defparam drawonlastbaronly = false
if valorhora =1 then
if opentime= 080000 then
Pa=open
endif
endif
if valorhora =2 then
if opentime = 024000 then
Pa=open
endif
endif
P = pa
S1 = P / 1.00236
S2 = P / 1.00382
S3 = P / 1.005
s4 = P / 1.00618
s5 = P / 1.00762
s6 = P / 1.01
s7 = P / 1.01236
s8 = P / 1.01382
s9 = P / 1.015
r1 = P * 1.00236
rr2 = P * 1.00382
r3 = P * 1.005
r4 = P * 1.00618
r5 = P * 1.00762
r6 = P * 1.01
r7 = P * 1.01236
r8 = P * 1.01382
r9 = P * 1.015
//vertical offset to draw text correctly over horizontal lines
Voffset = 1*pipsize
DRAWTEXT("PA",barindex-2,p+Voffset,SansSerif,Bold,16)coloured(153,153,0)
DRAWTEXT("s1",barindex-2,s1+Voffset,SansSerif,Bold,12)coloured(153,0,0)
DRAWTEXT("s2",barindex-2,s2+Voffset,SansSerif,Bold,12)coloured(153,0,0)
DRAWTEXT("S3",barindex-2,s3+Voffset,SansSerif,Bold,16)coloured(153,0,0)
DRAWTEXT("s4",barindex-2,S4+Voffset,SansSerif,Bold,12)coloured(153,0,0)
DRAWTEXT("s5",barindex-2,S5+Voffset,SansSerif,Bold,12)coloured(153,0,0)
DRAWTEXT("S6",barindex-2,S6+Voffset,SansSerif,Bold,16)coloured(153,0,0)
DRAWTEXT("s7",barindex-2,S7+Voffset,SansSerif,Bold,12)coloured(153,0,0)
DRAWTEXT("s8",barindex-2,S8+Voffset,SansSerif,Bold,12)coloured(153,0,0)
DRAWTEXT("S9",barindex-2,S9+Voffset,SansSerif,Bold,16)coloured(153,0,0)
DRAWTEXT("r1",barindex-2,r1+Voffset,SansSerif,Bold,12)coloured(0,153,0)
DRAWTEXT("r2",barindex-2,rr2+Voffset,SansSerif,Bold,12)coloured(0,153,0)
DRAWTEXT("R3",barindex-2,r3+Voffset,SansSerif,Bold,16)coloured(0,153,0)
DRAWTEXT("r4",barindex-2,r4+Voffset,SansSerif,Bold,12)coloured(0,153,0)
DRAWTEXT("r5",barindex-2,r5+Voffset,SansSerif,Bold,12)coloured(0,153,0)
DRAWTEXT("R6",barindex-2,r6+Voffset,SansSerif,Bold,16)coloured(0,153,0)
DRAWTEXT("r7",barindex-2,r7+Voffset,SansSerif,Bold,12)coloured(0,153,0)
DRAWTEXT("r8",barindex-2,r8+Voffset,SansSerif,Bold,12)coloured(0,153,0)
DRAWTEXT("R9",barindex-2,r9+Voffset,SansSerif,Bold,16)coloured(0,153,0)
drawsegment(barindex,p,barindex+24,p) coloured(0,0,0)
drawsegment(barindex,s1,barindex+24,s1) coloured(153,0,0)
drawsegment(barindex,s2,barindex+24,s2) coloured(153,0,0)
drawsegment(barindex,s3,barindex+24,s3) coloured(153,0,0)
drawsegment(barindex,S4,barindex+24,S4) coloured(153,0,0)
drawsegment(barindex,S5,barindex+24,S5) coloured(153,0,0)
drawsegment(barindex,S6,barindex+24,S6) coloured(153,0,0)
drawsegment(barindex,S7,barindex+24,S7) coloured(153,0,0)
drawsegment(barindex,S8,barindex+24,S8) coloured(153,0,0)
drawsegment(barindex,S9,barindex+24,S9) coloured(153,0,0)
drawsegment(barindex,r1,barindex+24,r1) coloured(0,153,0)
drawsegment(barindex,rr2,barindex+24,rr2) coloured(0,153,0)
drawsegment(barindex,R3,barindex+24,R3) coloured(0,153,0)
drawsegment(barindex,r4,barindex+24,r4) coloured(0,153,0)
drawsegment(barindex,r5,barindex+24,r5) coloured(0,153,0)
drawsegment(barindex,R6,barindex+24,R6) coloured(0,153,0)
drawsegment(barindex,R7,barindex+24,R7) coloured(0,153,0)
drawsegment(barindex,R8,barindex+24,R8) coloured(0,153,0)
drawsegment(barindex,R9,barindex+24,R9) coloured(0,153,0)
RETURN
La segunda captura de pantalla como veis me pone el texto de en cada vela y de cada una de las cotas sin embargo si pongo la instruccion
defparam drawonlastbaronly = false si la pongo en true luego si que me sale el texto solo una vez y en su sitio a 2 o 3 o 4 velas de la vela en curso sin embargo el problema es que luego no me dibuja los segmentos
Al final la unica solucion que he encontrado es poner un alpha en el coulored del drawtext sin embargo al no disponer de la posibilidad de aplicar style a las lineas para darles la configuracion deseada dottedline o mas grosor entre el emborronado del alpha y las lineas tan tan finas no es un indicador agradable de utilizar
Si alguien puede darme alguna idea mas para evolucionar o intentar mejorar el indicador se lo agradeceria enormemente el objetivo final a alcanzar seria el de la primera captura de pantalla cualquier cosa que se le acercara seria ya un exito
muchisimas gracias anticipadas a todos pero es que he llegado a tener la sensacion de que no me quedaba mas desarrollo
El primer codigo le veo el problema de que si la primera barra a la izquierda del grafico no coincide exactamente a las 081500 entonces PA va a ser cero y las primeras lineas las va a dibujar a CERO . Yo haría una validación antes de usar PA para que nunca sea cero
IF PA = 0 then PA = OPEN ENDIF P = PA
El segundo codigo no lo entiendo bien, tambien tendrías que validar el valor de PA para que no sea cero, pero creo que tiene un error en la hora, para tomar el valor a las 24:00 sería OPENTIME = 000000 , opentime = 024000 toma el valor a las 2:40 AM.
Hola Pableitor muchas gracias si todo esto de poner y quitar interruptores ya lo habia probado por este motivo decia que ya se me habian acabado las ideas la verdad es que sin ser urgente ya que me funciona bien y obtengo la informacion que quiero si que llevo durante semanas un monton de horas prmero a intentar arreglar uno y despues a intentar hacer el otro pensando que seria la mejor solucion y claro tambien es el desconocimiento de este lenguaje de programacion todo y que es muy facil e intuitivo estoy haciendo un master en los dos ultimos dos meses jajajajaja el primer codigo debo de poner la hora 081500 para que me tome la apertura de la vela de las 8h en punto (esto en m15) en cualquier temporalidad si pongo las 8 me toma siempre la apertura de una vela anterior (cosa que tampoco acabo de entender) pero bueno si es de una manera lo conseguimos de otra y en cuanto al segundo hipotetico programado para que funcione mejor como indicador en la parte del grafico los problemas finales son dos no hay style para el dibujo de lineas y si estas fueran mas visibles podria pasar del drawtext sin embargo al ser tan finas el tener la nomenclatura con el drawtext ayuda mucho aunque la linea sea tan fina solo que solo deberia salir una vez y ya sale ya solo que luego no me dibuja los segmentos como en la captura
No se si he entendido bien lo que buscas pero he retocado algo para dibujar las lineas con el texto al final de la linea (a mi si me da el precio de apertura de las 8am con opentime 080000) :
defparam drawonlastbaronly = true
if valorhora =1 then
if opentime= 080000 then
Pa=open
x = barindex
endif
endif
if valorhora =2 then
if opentime = 000000 then
Pa=open
x= barindex
endif
endif
if pa=0 then
pa = open
endif
P = pa
S1 = P / 1.00236
S2 = P / 1.00382
S3 = P / 1.005
s4 = P / 1.00618
s5 = P / 1.00762
s6 = P / 1.01
s7 = P / 1.01236
s8 = P / 1.01382
s9 = P / 1.015
r1 = P * 1.00236
rr2 = P * 1.00382
r3 = P * 1.005
r4 = P * 1.00618
r5 = P * 1.00762
r6 = P * 1.01
r7 = P * 1.01236
r8 = P * 1.01382
r9 = P * 1.015
//vertical offset to draw text correctly over horizontal lines
Voffset = 1*pipsize
DRAWTEXT("PA",barindex-2,p+Voffset,SansSerif,Bold,16)coloured(153,153,0)
DRAWTEXT("s1",barindex-2,s1+Voffset,SansSerif,Bold,12)coloured(153,0,0)
DRAWTEXT("s2",barindex-2,s2+Voffset,SansSerif,Bold,12)coloured(153,0,0)
DRAWTEXT("S3",barindex-2,s3+Voffset,SansSerif,Bold,16)coloured(153,0,0)
DRAWTEXT("s4",barindex-2,S4+Voffset,SansSerif,Bold,12)coloured(153,0,0)
DRAWTEXT("s5",barindex-2,S5+Voffset,SansSerif,Bold,12)coloured(153,0,0)
DRAWTEXT("S6",barindex-2,S6+Voffset,SansSerif,Bold,16)coloured(153,0,0)
DRAWTEXT("s7",barindex-2,S7+Voffset,SansSerif,Bold,12)coloured(153,0,0)
DRAWTEXT("s8",barindex-2,S8+Voffset,SansSerif,Bold,12)coloured(153,0,0)
DRAWTEXT("S9",barindex-2,S9+Voffset,SansSerif,Bold,16)coloured(153,0,0)
DRAWTEXT("r1",barindex-2,r1+Voffset,SansSerif,Bold,12)coloured(0,153,0)
DRAWTEXT("r2",barindex-2,rr2+Voffset,SansSerif,Bold,12)coloured(0,153,0)
DRAWTEXT("R3",barindex-2,r3+Voffset,SansSerif,Bold,16)coloured(0,153,0)
DRAWTEXT("r4",barindex-2,r4+Voffset,SansSerif,Bold,12)coloured(0,153,0)
DRAWTEXT("r5",barindex-2,r5+Voffset,SansSerif,Bold,12)coloured(0,153,0)
DRAWTEXT("R6",barindex-2,r6+Voffset,SansSerif,Bold,16)coloured(0,153,0)
DRAWTEXT("r7",barindex-2,r7+Voffset,SansSerif,Bold,12)coloured(0,153,0)
DRAWTEXT("r8",barindex-2,r8+Voffset,SansSerif,Bold,12)coloured(0,153,0)
DRAWTEXT("R9",barindex-2,r9+Voffset,SansSerif,Bold,16)coloured(0,153,0)
drawsegment(barindex,p,x,p) coloured(0,0,0)
drawsegment(barindex,s1,x,s1) coloured(153,0,0)
drawsegment(barindex,s2,x,s2) coloured(153,0,0)
drawsegment(barindex,s3,x,s3) coloured(153,0,0)
drawsegment(barindex,S4,x,S4) coloured(153,0,0)
drawsegment(barindex,S5,x,S5) coloured(153,0,0)
drawsegment(barindex,S6,x,S6) coloured(153,0,0)
drawsegment(barindex,S7,x,S7) coloured(153,0,0)
drawsegment(barindex,S8,x,S8) coloured(153,0,0)
drawsegment(barindex,S9,x,S9) coloured(153,0,0)
drawsegment(barindex,r1,x,r1) coloured(0,153,0)
drawsegment(barindex,rr2,x,rr2) coloured(0,153,0)
drawsegment(barindex,R3,x,R3) coloured(0,153,0)
drawsegment(barindex,r4,x,r4) coloured(0,153,0)
drawsegment(barindex,r5,x,r5) coloured(0,153,0)
drawsegment(barindex,R6,x,R6) coloured(0,153,0)
drawsegment(barindex,R7,x,R7) coloured(0,153,0)
drawsegment(barindex,R8,x,R8) coloured(0,153,0)
drawsegment(barindex,R9,x,R9) coloured(0,153,0)
RETURN
pruebalo y me comentas….
saludos
Ahora si que si Pableitor muchisimas muchisimas gracias mira que eramos dos o tres que nos peleabamos con el tema desde hace tiempo y yo hace unas semanas que me puse porque no pensaba que fuera tan dificil pensaba que era mas facil como asi ha sido gracias a ti Si señor ahora esta clarisimo y estoy seguro que es lo maximo que da la plataforma de momento lo dicho muchisimas gracias
Por cierto ya que estamos aqui en un domingo lluvioso jajajajaja de backgroundcolor sabes bien como funciona La pregunta concreta es si sabes si en la misma vela recibe la orden por tres condicionales diferentes de dibujar una zona de color si sabes si va a dibujar las tres o solo dos o solo una es que es el tema de este finde jajajaja el viernes a ultima hora ya me entere que era imposible sacar la zona de color de dentro de los triangulos en el drawrentangle con el operador alpha solo se pueden transparentar las lineas del rectangulo pero no se puede hacer nada con la zona coloreada interior (me lo contesto Nicolas) por tanto veo que la parte grafica de la plataforma tiene aun sus pequeñas cosas a pulir y desarrollar y ahora estoy con dos indicadores bastante completos que pretendo que dibujen a base de colores lo que esta ocurriendo en el mercado y me encuentro que el codigo funciona perfectamente sin embargo hay zonas en las que no me dibuja la señal a lo mejor en el 10% de las zonas y pienso que podria ser por una limitacion como la que comentaba es mas si lo hago con 3 indicadores diferentes (a piezas jajajaja) y pongo a operar los tres luego va perfecto
Lo dicho muchisimas gracias por resolver el tema de los segmentos
de nada , de verdad ha sido facil jajaja… el lenguaje PRC me recuerda el BASIC que estudiaba en mis buenos tiempos, sencillo pero con algunas limitaciones. Lo del background con las 3 condiciones no te entiendo muy bien la duda , si puedes subir el codigo o parte lo vemos. Seguro entre todos se puede solucionar….el color de fondo del drawrectangle no se puede quitar , ni siquiera cambiar de color, solo azul, es una faena, pero se me ocurre que puedes dibujar los rectangulos a base de 4 drawsegment y asi evitas el fondo , no se.
Vale tengo tres indicadores que son estos codigos y funcionan muy bien la idea es tres condicionantes diferentes para determinar si el mercado es alcista o es bajista y lo que ocurre es que como unos metodos son mas solidos y otros son mas rapidos en detectar el posible cambio de tendencia lo que se consigue es que antes de cambiar el precio de tendencia por correccion o cambio de direccion empieza a dar señales con barras diferentes lo vereis mejor en la captura
El problema es que si pongo los codigos de los tres indicadores juntos en un unico codigo entonces solo me reconoce o los colores de un sistema o de otro y no sale la informacion de los tres sistemas no se si me explico a ver cuelgo codigos
If MetodoMM=1 then
MM=exponentialaverage[8]
elsif MetodoMM =2 then
MM=wilderaverage[8]
endif
if close > mm then
r=055
g=255
transparency=30
BACKGROUNDCOLOR(r,g,0,min(transparency,255))
endif
if close < mm then
r=255
g=055
transparency=30
BACKGROUNDCOLOR(r,g,0,min(transparency,255))
endif
return
Codigo o sistema 2
a5b3= LinearRegressionSlope[valorLRS]
r=200
g=055
transparency=30
if a5b3 < 0 then
BACKGROUNDCOLOR(r,g,0,min(transparency,255))
endif
r=050
g=200
transparency=30
if a5b3 > 0 then
BACKGROUNDCOLOR(r,g,0,min(transparency,255))
endif
return
y sistema 3
sto76= stochastic[76,3]
r=050
g=250
transparency=30
if sto76 > sto76[1] then
BACKGROUNDCOLOR(r,g,0,min(transparency,255))
endif
r=250
g=050
transparency=30
if sto76 < sto76[1] then
BACKGROUNDCOLOR(r,g,0,min(transparency,255))
endif
return
sto76= stochastic[76,3]
r=050
g=250
transparency=30
if sto76 > sto76[1] then
BACKGROUNDCOLOR(r,g,0,min(transparency,255))
endif
r=250
g=050
transparency=30
if sto76 < sto76[1] then
BACKGROUNDCOLOR(r,g,0,min(transparency,255))
endif
return
El resultado de poner los tres indicadores al mismo tiempo en un grafico es el que se ve en la captura sin embargo por mas que lo intento hacer poniendo los tres sistemas en eun mismo indicador y que me de el mismo resultado no hay manera como mucho he conseguido los colores superpuestos de dos sistemas pero de los tres en ninguna ocasion a ver si vosotros que dominais muchisimo mas la programacion me hechais una mano +
Gracias anticipadas
mm …a ver creo que ahora te entiendo , he hecho una prueba con tus codigos y a mi si me suma los 3 background de cada indicador. He hecho un pequeño cambio en cada indicador para que el color sea rojo o verde puro (255,0,0) y (0,255,0) , en el adjunto están los 3 indicadores abajo independientemente y juntos en la ventana del precio, el background del precio va cambiando el tono del rojo segun va cambiando cada indicador y salen 3 rojos mas o menos intensos…. La idea es buena ! Lo que no me salen son las velas de colores jajajaa..
saludos
[attachment file=72242]
mm …a ver creo que ahora te entiendo , he hecho una prueba con tus codigos y a mi si me suma los 3 background de cada indicador. He hecho un pequeño cambio en cada indicador para que el color sea rojo o verde puro (255,0,0) y (0,255,0) , en el adjunto están los 3 indicadores abajo independientemente y juntos en la ventana del precio, el background del precio va cambiando el tono del rojo segun va cambiando cada indicador y salen 3 rojos mas o menos intensos…. La idea es buena ! Lo que no me salen son las velas de colores jajajaa..
saludos
¿cómo has conseguido ponerlos juntos?
Hola Pableitor si pero actuando como indicador arriba en el grafico has conseguido poner todo el codigo en un solo indicador?? o es como lo tengo yo de momento que tengo que abrir los tres indicadores para que me de la informacion buena ya que si copio los codiigos y pongo todo en un solo indicador por ejemplo ciclos colores con los tres sistemas dentro despues es cuando no me funciona ya que siempre hay un sistema que no se dibuja (y los codigos son los mismos) no lo acabo de entender en el tema de graficos creo que la plataforma va un pelin justita estoy trabajando xon otro que pasa igual tengo una orden que dice cuando x crosses over 0 then backgroundcolor(x,x,x) y me hace una linea en el grafico de precios y va muy bien sobre todo en frametimes pequeños ya que he conseguido un sistema que me da la informacion del cambio de tendencia con muy alta probabilidad juntando muchos sistemas y entonces cuando se da la condicion me dibuja o la linea verde o la roja pues la dibuja perfecta casi siempre y a veces no jajajajajajajajajajaja y mas divertido todavia a veces no dibuja la verde y a veces no dibuja la roja es para volverse loco jajajaja porque aunque el programa sea extenso la condicion es muy clara hoy lo he cambiado y ahora la instruccion es if x > 0 and x[1] < x[2] then dibuja y parece que ha mejorado algo pero hay algunas que no las dibuja de verdad al fianl pienso que es la plataforma porque si no acabare loco mas de lp que ya estoy jajajajajaj a ver si entra nicolas y nos lee y dice que es un problema tecnico que si hay dos o mas ordenes de dibujar en la misma zona pues que no lo hace igual que el indicador este de colores
pableitor acabo de colgar en la biblioteca el indicador que cambia las velas de colores para que lo puedas copiar si te interesa la verdad es que da informacion bastante buena para leer el mercado
[attachment file=72304]
Me explique mal, en el grafico del precio van los 3 indicadores pero separados, y el programa suma los 3 background sino no funciona , como bien dices.
upsss, me equivoque de adjunto, a ver si ahora sale
[attachment file=72307]
creo que no se pueden combinar varios background en un solo archivo , creo que la unica forma es con tres indicadores separados y que PRT combine los colores internamente, estas llevando el PRT al limite jajaja ….a lo mejor haciendo sumas y promedios de los valores RGB de los background pero no lo veo facil. !
domenec, prueba este codigo, los 3 indicadores en un fichero y al final sale un background que es la suma de los 3 indicadores:
MetodoMM = 1
valorLRS = 10
If MetodoMM=1 then
MM=exponentialaverage[8]
elsif MetodoMM =2 then
MM=wilderaverage[8]
endif
if close > mm then
r0=0
g0=255
b0=0
a0=30
//BACKGROUNDCOLOR(r0,g0,b0,a0)
endif
if close < mm then
r0=255
g0=0
b0=0
a0=30
//BACKGROUNDCOLOR(r0,g0,b0,a0)
endif
sto76= stochastic[76,3]
if sto76 > sto76[1] then
r1=0
g1=255
b1=0
a1=30
//BACKGROUNDCOLOR(r1,g1,b1,a1)
endif
if sto76 < sto76[1] then
r1=255
g1=0
b1=0
a1=30
//BACKGROUNDCOLOR(r0,g0,b0,a0)
endif
a5b3= LinearRegressionSlope[valorLRS]
if a5b3 < 0 then
r3=255
g3=0
b3=0
a3=30
//BACKGROUNDCOLOR(r3,g3,b3,a3)
endif
if a5b3 > 0 then
r3=0
g3=255
b3=0
a3=30
endif
BACKGROUNDCOLOR((r0+r1+r3)/3,(g0+g1+g3)/3,(b0+b1+b3)/3,(a0+a1+a3))
RETURN
Despues de semanas tiro la toalla
This topic contains 33 replies,
has 5 voices, and was last updated by jannus
5 years, 5 months ago.
| Forum: | ProBuilder: Indicadores y Herramientas |
| Language: | Spanish |
| Started: | 06/03/2018 |
| Status: | Active |
| Attachments: | 7 files |
The information collected on this form is stored in a computer file by ProRealCode to create and access your ProRealCode profile. This data is kept in a secure database for the duration of the member's membership. They will be kept as long as you use our services and will be automatically deleted after 3 years of inactivity. Your personal data is used to create your private profile on ProRealCode. This data is maintained by SAS ProRealCode, 407 rue Freycinet, 59151 Arleux, France. If you subscribe to our newsletters, your email address is provided to our service provider "MailChimp" located in the United States, with whom we have signed a confidentiality agreement. This company is also compliant with the EU/Swiss Privacy Shield, and the GDPR. For any request for correction or deletion concerning your data, you can directly contact the ProRealCode team by email at privacy@prorealcode.com If you would like to lodge a complaint regarding the use of your personal data, you can contact your data protection supervisory authority.