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 示例。我发布这篇文章是为了帮助将来希望做类似事情的其他人。
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 示例。我发布这篇文章是为了帮助将来希望做类似事情的其他人。