Código para gráficos en tablas
Código para gráficos en tablas

 

Publi

Página 1 de 352 12 ??ltimo??ltimo
Resultados 1 al 10 de 16

Tema: Código para gráficos en tablas

  1. #1
    Tengo un indicador interno (sin código) que coloca un gráfico en mis gráficos y, en base a este gráfico, deseo iniciar una compra o venta. ¿Alguien sabe si puede codificar una acción en un EA basándose en este gráfico que aparece en la tabla, es decir, una flecha, una marca de verificación, un número, etc.? Si es así, ¿cuál es el código?

  2.                         
    Publicidad
  3. #2
    'Elo! He encontrado la solución para mi problema. Aquí está, cómo está codificado ahora: - #include (x_file_name) ha modificado el código de 7 bits: Código insertado/----- FUNCI??N DE LA ETIQUETA - NECESARIO PARA LA FUNCI??N DE ETIQUETA DEL BOT??N -----/Crear un texto label cadena label (nombre de cadena, int x, int y, esquina de int, texto de cadena, tamaño de fuente, fuente de cadena, color clr = gris) {if (! IsOptimization ()) {if (name ==) {name = label_ Tiempo # 91; 0 # 93 ;; } if (ObjectFind (nombre) == -1) {ObjectCreate (nombre, OBJ_LABEL, 0, 0, 0); } ObjectSet (nombre, OBJPROP_COLOR, clr); ObjectSet (nombre, OBJPROP_CORNER, esquina); ObjectSet (nombre, OBJPROP_XDISTANCE, x); ObjectSet (nombre, OBJPROP_YDISTANCE, y); ObjectSet (nombre, OBJPROP_FONTSIZE, tamaño); ObjectSetText (nombre, texto, tamaño, fuente); } retorno (nombre); }/----- FUNCI??N DE EMULACI??N DEL BOT??N DE TABLA -----/Muestra un botón y verifica si se ha activado. Emule un botón con una etiqueta que debe ser movida por el usuario. Devuelva verdadero si la etiqueta/se ha movido y retroceda. Créelo si no existe ya. bool labelButton (nombre de cadena, int x, int y, esquina de int, texto de cadena, tamaño de int, fuente de cadena, color clr = gris) {if (IsOptimization ()) {return (false); } if (ObjectFind (nombre)! = -1) {if (ObjectGet (nombre, OBJPROP_XDISTANCE)! = x || ObjectGet (nombre, OBJPROP_YDISTANCE)! = y) {ObjectDelete (name); retorno (verdadero); }} etiqueta (nombre, x, y, esquina, texto, tamaño, fuente, clr); falso retorno); } - así es como lo uso en el código de EA (actualmente, no hace nada, estoy recodificando completamente mi EA): Código insertado/----- FUNCI??N DE INICIO ----- int start () {CheckButtons ( ); }/----- FUNCIONES PERSONALIZADAS ----- Botones de verificación nulos () {int size = 12; int SpaceBtwButt = 2 * (tamaño3); int x = 10; int y = (tamaño SpaceBtwButt); string font = Verdana;/labButtYDist # 91; 10 # 93; # 91; 9 # 93 ;;/debe ser como = {n y); ... labelButton (tradeButton, x, 1 * y, 1, TRADE, tamaño, fuente, rojo); Comercio = falso; labelButton (buyOnlyButton, x, 2 * y, 1, BUY ONLY, tamaño, fuente, C'81, 81, 81 '); labelButton (sellOnlyButton, x, 3 * y, 1, SELL ONLY, tamaño, fuente, C'101, 101, 101 '); labelButton (closeBuy, x, 4 * y, 1, CLOSE BUY, tamaño, fuente, DodgerBlue); labelButton (closeSell, x, 5 * y, 1, CLOSE SELL, tamaño, fuente, rojo); } Ahora vamos a la siguiente búsqueda de soluciones para batir el cerebro. Saludos cordiales simon

  4. #3

    Cita Iniciado por ;
    //poner después del inicio/esta primera parte del código, creará un objeto de texto llamado rastro/si el objeto se mueve, alternará el rastro, activardesactivar/¿existe el objeto? si no, créelo si (ObjectFind (trail) == -1) {ObjectCreate (trail, OBJ_LABEL, 0, 0, 0); ObjectSet (rastro, OBJPROP_COLOR, rojo); ObjectSet (rastro, OBJPROP_XDISTANCE, 80); ObjectSet (rastro, OBJPROP_YDISTANCE, 50); ObjectSetText (trail, trail, 10, Times New Roman, Gray); }
    Gracias, ForexFlash (arco), por este poco de código. Lo he estado usando con impaciente implementación. Me encanta la opción de 'botón' en la tabla. Ahora, ya que uso una tonelada de botones, estoy tratando de codificar el acceso directo, que sería llamado por 'include #' desde common_functions.mqh, como el de 7bit. Lo tiene allí, pero me gustaría poder seleccionar el tamaño de fuente y la fuente en sí. Todos mis ajustes de este código por parte de los aficionados no produjeron ningún resultado deseado. Aquí está el código de h 7bit (arco): Código insertado** * Muestra un botón y verifica si se ha activado. * Emular un botón con una etiqueta que debe ser movida por el usuario. * Devuelve true si la etiqueta se ha movido y retrocede. * Crealo si no existe ya. *bool labelButton (nombre de cadena, int x, int y, esquina de int, texto de cadena, color clr = gris) {if (IsOptimization ()) {return (false); } if (ObjectFind (nombre)! = -1) {if (ObjectGet (nombre, OBJPROP_XDISTANCE)! = x || ObjectGet (nombre, OBJPROP_YDISTANCE)! = y) {ObjectDelete (name); retorno (verdadero); }} etiqueta (nombre, x, y, esquina, # 91; texto # 93 ;, clr); falso retorno); } Así es como lo usa en su EA: Código insertado void checkButtons () {if (! Running) {deleteStopButtons (); if (labelButton (start_long, 15, 15, 1, start long, Lime)) {go (LONG); } if (labelButton (start_short, 15, 30, 1, start short, Lime)) {go (SHORT); } if (labelButton (start_bidir, 15, 45, 1, start bidirectional, Lime)) {go (BIDIR); }} Intenté insertar 'int size = 10, string font = Verdana' antes de 'color clr = Gray)', sin éxito como novato. Ahora, veo que la fuente solo se puede definir dentro de ObjectSetText (). Intenté todo lo que cruzó mi cerebro no hecho, mucho codificado. Entonces, ¿cómo puedo lograr eso? Gracias por la preciosa (, mi preciosa LOL) ayuda. Simon s amor nia

  5. #4
    Gracias meister Soy un poco neófito de la programación, como probablemente puedas decir, y nunca he encontrado esto en ninguno de mis otros EA. Voy a darle una oportunidad a este código.

  6. #5
    Este error no tiene nada que ver con comprar y vender señales y nada que ver con el flujo lógico. Es simplemente que el límite de pérdida especificado está demasiado cerca de AskBid en OrderSend o OrderModify. Esto realmente no es diferente de hacer un pedido manualmente y colocar su parada demasiado cerca del precio de mercado. La mayoría de los comerciantes están familiarizados con esta situación. Aquí hay un código simplificado similar al que uso para evitar este error. # 12288; double stopLevel = MarketInfo (Symbol (), MODE_STOPLEVEL) * Point; if (SL gt; Bid - stopLevel) SL = Bid ??????- stopLevel - Point;/Orden de compra si (SL lt; Ask stopLevel) SL = Ask stopLevel Point;/orden de venta

  7. #6
    Gracias meister Ahora recibo un error de diario cada hora: OrderSend error 130 Al examinar el menú de ayuda de Meta, parece que el error 130 hace referencia a paradas no válidas. No estoy seguro de si esto es relevante para mi error particular o no. ¿Dónde encontraría una explicación de este error? Obviamente, tengo algo en mi código que no está relacionado con el código Objeto que has proporcionado, pero no estoy seguro de dónde o por qué. ¿Podría ser que he perdido tu código en un lugar inadecuado en el EA? Lo tengo justo antes de que comience mi variable. Vea abajo./ ----------------------------------------------- ------------------- /| función de inicialización experta |/ ----------------------------------------------- ------------------- int init () {BarCount = Bars; if (EachTickMode) Actual = 0; else Current = 1; retorno (0); }/ ---------------------------------------------- -------------------- /| función de desinicialización experta |/ ----------------------------------------------- ------------------- int deinit () {return (0); }/ ---------------------------------------------- -------------------- /| función de inicio experto |/ ----------------------------------------------- ------------------- int start () {int Order = SIGNAL_NONE; int total, boleto; doble StopLossLevel, TakeProfitLevel; if (EachTickMode Bars! = BarCount) TickCheck = False; Total = OrdersTotal (); Orden = SIGNAL_NONE; if (ObjectsTotal (OBJ_ARROW) gt; 0) {if (ObjectGet (ObjectName (ObjectsTotal (OBJ_ARROW) -1), OBJPROP_COLOR) == verde) {long = true;} else if (ObjectGet (ObjectName (ObjectsTotal (OBJ_ARROW) -1 ), OBJPROP_COLOR) == Rojo) {corto = verdadero;}}/ -------------------------------- ---------------------------------- /| Inicio variable |/ ----------------------------------------------- -------------------

  8. #7
    La comprobación de la ausencia de objetos de flecha debería evitar este problema. Asumí que las flechas estarían presentes antes de ejecutar el EA, pero puede que no siempre sea así. if (ObjectsTotal (OBJ_ARROW) gt; 0) {if (ObjectGet (ObjectName (ObjectsTotal (OBJ_ARROW) -1), OBJPROP_COLOR) == verde) {long = true;} else if (ObjectGet (ObjectName (ObjectsTotal (OBJ_ARROW) -1 ), OBJPROP_COLOR) == Rojo) {corto = verdadero;}}

  9. #8
    Meister - He intentado incorporar su código en mi EA. Cuando ejecuto un backtest, recibo los siguientes dos comentarios en el Diario de resultados. - número de objeto inválido -1 para la función ObjectName - el nombre del objeto pasado a la función ObjectGet no puede ser una cadena sin inicializar o vacía Este es mi código: if (ObjectGet (ObjectName (ObjectsTotal (OBJ_ARROW) -1), OBJPROP_COLOR) == verde) {= verde = true;} else if (ObjectGet (ObjectName (ObjectsTotal (OBJ_ARROW) -1), OBJPROP_COLOR) == Red) {short = true;} Este es mi código de compra y venta: if (long == true) Order = SIGNAL_BUY; if (short == false) Order = SIGNAL_SELL; ¿Alguna sugerencia?

  10. #9
    Gracias de nuevo, Meister. Voy a darle una oportunidad.

  11. #10
    Creo que tengo una mejor idea de lo que está buscando ahora, el precio realmente no es importante. Tal vez el tiempo (objTime) sea necesario, si no simplemente eliminarlo. También encontré una manera de simplificar el código. Ahora me doy cuenta de que la última flecha siempre será el índice más alto. Creo que puedes incluir el código en cualquier lugar, no creo que haya ningún problema. bool long = false, short = false; if (ObjectGet (ObjectName (ObjectsTotal (OBJ_ARROW) -1), OBJPROP_COLOR) == Verde) {datetime objTime = ObjectGet (ObjectName (ObjectsTotal (OBJ_ARROW) -1), OBJPROP_TIME1); long = true; } else if (ObjectGet (ObjectName (ObjectsTotal (OBJ_ARROW) -1), OBJPROP_COLOR) == Red) {objTime = ObjectGet (ObjectName (ObjectsTotal (OBJ_ARROW) -1), OBJPROP_TIME1); corto = verdadero; }

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •  
Uso de cookies
Utilizamos cookies propias y de terceros para elaborar información estadística y mostrarle publicidad personalizada a través del análisis de su navegación. Si continúa navegando acepta su uso. Más información y política de cookies.
     

Aviso legal: Ni forosforex.com ni ninguna persona involucrada en forosforex.com aceptarán ninguna responsabilidad por cualquier pérdida o daño en el trading como resultado de la confianza en la información contenida en este sitio web, incluidos datos, cotizaciones, gráficos y señales de compra/venta. Por favor, infórmese plenamente de los riesgos y costes asociados a las operaciones en los mercados financieros, una de las formas de inversión que más riesgos entrañan.
forosforex.com le quiere recordar que los datos contenidos en este sitio web no son necesariamente en tiempo real ni exactos. forosforex.com no asume responsabilidad alguna por las pérdidas en que usted podría incurrir como resultado de la utilización de estos datos. Este acuerdo se rige por su versión en inglés, que prevalecerá siempre que haya alguna discrepancia entre la versión en inglés y la versión en español. Los CFD son un producto difícil de entender, varios organismos reguladores consideran que no es adecuado para inversores minoristas debido a su complejidad y riesgo.
Advertencia de riesgo: Los CFDs son un producto difícil de entender, y puede no ser adecuado para inversores minoristas debido a su complejidad y riesgo. Existe la posibilidad de sufrir una pérdida igual o superior a la inversión. Por lo tanto, no debe invertir o arriesgar dinero que no pueda permitirse perder. Debe asegurarse de que comprende todos los riesgos. Antes de abrir una cuenta en un broker por favor sea consciente e infórmese de los riesgos asociados con el trading. El contenido de este sitio web no debe interpretarse como asesoramiento personal. ForosForex recomienda que busque el consejo de un asesor financiero independiente.