TLDR; Intentar actualizar la configuración de tradingview para una estrategia de forma automática y simple element.value no funciona.
Hola a todos,
Creé una estrategia que funciona con éxito a través de Pinescript, sin embargo, hay bastantes opciones en la ventana de configuración (por ejemplo, período RSI, etc.), con una gran variedad de combinaciones. Me gustaría automatizar la configuración para que se ejecute a través de la prueba retrospectiva para cada configuración y registrar los detalles de cada cambio (por ejemplo, registrar RSI Período 4,5,6,7) (editar: no me preocupa la parte de grabación, eso vendrá fácil una vez que los datos están en una variable en javascript).
Soy comerciante desde hace mucho tiempo y relativamente competente con Javascript y Jquery, así que pensé en intentar crear una extensión de Chrome para hacer esto. He creado el manifiesto/content.js, y he logrado que lea la ventana de Configuración cuando se abre, y manipulo los valores, sin embargo, aquí radica mi problema. Puedo hacer que cambie los valores, sin embargo, la estrategia no parece actualizarse/no parece enviar los cambios. He intentado cambiar .value, luego .focus() y .blur() pero parece que no funciona.
Entiendo que puede haber algunos campos de código/ocultos de back-end donde se mantiene el valor real, pero TIENE que haber una manera de poder engañar a la forma en que una persona lo está haciendo (es decir, .click()).
Aquí está mi código que tengo hasta ahora que solo cambia el valor de un elemento a 1 cuando se presiona CTRL+ALT+SHIFT+D (pero el formulario no hace nada después de esto):
document.addEventListener('keydown', function (event) { if (event.ctrlKey && event.altKey && event.shiftKey && event.key == 'D' ) { loadForm(); } }); function loadForm(){ var alertElement = document.getElementsByClassName('input-3bEGcMc9 with-end-slot-S5RrC8PC'); console.log(alertElement); alertElement[6].focus(); alertElement[6].value = '1'; alertElement[6].blur(); var event = new Event('input', { bubbles: true, cancelable: true, }); alertElement[6].dispatchEvent(event); $("input").blur(); }
Para las personas que buscan hacer algo similar a esto, Tradingview no permite variaciones DOM simples por código, ya que sus elementos buscan si el evento es de confianza o no antes de continuar (todas las acciones realizadas a través del código en un navegador aparecen como !is Trusted debido a valores estándar del navegador).
Para evitar esto y completar lo que quería, creé las acciones que quería hacer usando titiritero que recrea las acciones reales del usuario.
Consulte mi github para ver un ejemplo de trabajo: https://github.com/Snazzikiel/TradingViewPuppeteer/blob/main/strategyanalyzer.js
Tenga en cuenta que este fue un primer ejemplo de hacky de lo que quería hacer. Estoy publicando esto para ayudar a otros en el futuro que buscan hacer algo similar.