首页 > 解决方案 > ChromeExtension + Tradingview 策略变更 - Javascript

问题描述

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

大家好,

我创建了一个可以通过 Pinescript 成功运行的策略,但是设置窗口中有很多选项(例如 RSI 周期等),并且有多种组合。我想自动化设置它以运行每个设置的回测并记录每个更改的详细信息(例如记录 RSI 周期 4、5、6、7)(编辑:不担心记录部分,那会来一旦数据在javascript中的变量中就很容易了)。

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

我知道可能有一些后端代码/隐藏字段保留了实际值,但必须有一种方法能够欺骗一个人正在执行的表单(即 .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();

}

标签: javascriptjqueryalgorithmic-tradingtradingview-api

解决方案


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

为了解决这个问题并完成我想要的,我使用 puppeteer 创建了我想要执行的操作,它重新制定了实际的用户操作。

有关工作示例,请参见我的 github:https ://github.com/Snazzikiel/TradingViewPuppeteer/blob/main/strategyanalyzer.js

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


推荐阅读