Chrome 扩展 + Tradingview 策略变更 - Javascript

ChromeExtension + Tradingview Strategy Alteration - Javascript

TLDR; 尝试自动更新策略的交易视图设置并且简单 element.value 不起作用。

大家好,

我已经创建了一个通过 Pinescript 成功运行的策略,但是在设置 window 中有很多选项(例如 RSI 周期等),具有多种组合。我想通过对每个设置的回溯测试将它的设置自动化到 运行 并记录每个更改的详细信息(例如记录 RSI 周期 4、5、6、7)(编辑:不担心记录部分,一旦数据在 javascript).

中的变量中,这将变得容易

我是一名长期交易员,并且相对精通 Javascript 和 Jquery,所以我想我会尝试创建一个 Chrome 扩展来执行此操作。我创建了 manifest/content.js,并设法让它在打开时读取设置 window,并操纵这些值,但这是我的问题。我能够让它更改值,但是策略似乎没有 update/it 似乎没有提交更改。我尝试更改 .value,然后更改 .focus() 和 .blur(),但这似乎不起作用。

我知道可能有一些后端 code/hidden 字段保留了真实值,但必须有一种方法可以欺骗一个人正在做的表单(即 .click() ).

这是我目前的代码,它只是在按下 CTRL+ALT+SHIFT+D 时将元素的值更改为 1(但此后表单不执行任何操作):

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();

}

对于希望做类似事情的人来说,Tradingview 不允许通过代码进行简单的 DOM 变体,因为他们的元素会在继续之前查找事件是否可信(所有操作都是通过代码完成的)由于标准浏览器安全性,在浏览器中显示为 !isTrusted)。

为了解决这个问题并完成我想要的,我使用 puppeteer 创建了我想做的动作,它可以重现实际的用户动作。

请参阅我的 github 以获取工作示例:https://github.com/Snazzikiel/TradingViewPuppeteer/blob/main/strategyanalyzer.js

请注意,这是我想要这样做的一个 hacky-first 示例。我发布这篇文章是为了帮助将来希望做类似事情的其他人。