Anonymous
Удалить маркеры серии из серий в диаграммах TradingView с использованием легкой библиотеки диаграмм
Сообщение
Anonymous » 21 апр 2025, 13:31
Привет, я пытаюсь нарисовать диаграмму и маркеры в серии, используя библиотеку с легкой диаграммой в торговле. Ниже приведен мой код, как я добавляю маркер в серию. < /P>
Код: Выделить всё
(function anonymous(instance, properties, context
< /code>
) {< /p>
let seriesID = properties.seriesid;
let markerID = properties.markerid;
let duplicate = false;
if(instance.data.mainMarkers.filter(kkk => kkk.markerId === markerID).length>0){
duplicate =true;
}
instance.data.allPaneData.forEach( a=>{
if(a.name === seriesID){
if(a.markersArr.filter(aaa => aaa.markerId === markerID).length>0){
duplicate = true;
}
}
});
if(duplicate === false){
function formateTime(timestemp){
let date = new Date(timestemp);
return{
year: date.getFullYear(),
month: date.getMonth()+1,
day: date.getDate()
}
}
let markerObj = {
time: formateTime(properties.time),
position: properties.position,
color: properties.color,
shape: properties.shape,
text: properties.marker_text,
size: properties.size,
markerId : markerID,
//marker_obj : null,
}
function setObject(obj,series){
series.markerObject = obj;
}
if (seriesID !== null) {
instance.data.allPaneData.filter(item => item.name === seriesID).forEach(item2 => {
item2.markersArr.push(markerObj);
let seriesmarker = LightweightCharts.createSeriesMarkers(item2.series,item2.markersArr);
if(item2.markerObject == null){
setObject(seriesmarker,item2);
}
//item2.markerObject.setMarkers(item2.markersArr);
});
} else {
instance.data.mainMarkers.push(markerObj);
let mainMarker=LightweightCharts.createSeriesMarkers(instance.data.allSeriesData[0].series,instance.data.mainMarkers);
instance.data.markerObject = mainMarker
//instance.data.markerObject.setMarkers(instance.data.mainMarkers);
}
}
< /code>
и ниже мой код для удаления маркера из серии < /p>
(function anonymous(instance, properties, context
< /code>
) {< /p>
let seriesID = properties.seriesid;
let markerID = properties.markerid;
let newarr=[];
if (seriesID == null) {
instance.data.mainMarkers.forEach((val, index) => {
if (val.markerId === markerID) {
instance.data.mainMarkers.splice(index, 1);
}
});
instance.data.markerObject.setMarkers(instance.data.mainMarkers);
}else {
instance.data.allPaneData.forEach(chartObject => {
if (chartObject.name === seriesID) {
chartObject.markersArr.forEach((val, index) => {
if (val.markerId === markerID) {
chartObject.markersArr.splice(index, 1);
}
chartObject.markerObject.setMarkers(chartObject.markersArr);
})
}
});
}
})
Теперь проблема в том, что он только удаляет 1 маркер из массива, даже если я передаю пустой массив, он ничего не делает.
Подробнее здесь:
https://stackoverflow.com/questions/795 ... ght-charti
1745231496
Anonymous
Привет, я пытаюсь нарисовать диаграмму и маркеры в серии, используя библиотеку с легкой диаграммой в торговле. Ниже приведен мой код, как я добавляю маркер в серию. < /P> [code](function anonymous(instance, properties, context < /code> ) {< /p> let seriesID = properties.seriesid; let markerID = properties.markerid; let duplicate = false; if(instance.data.mainMarkers.filter(kkk => kkk.markerId === markerID).length>0){ duplicate =true; } instance.data.allPaneData.forEach( a=>{ if(a.name === seriesID){ if(a.markersArr.filter(aaa => aaa.markerId === markerID).length>0){ duplicate = true; } } }); if(duplicate === false){ function formateTime(timestemp){ let date = new Date(timestemp); return{ year: date.getFullYear(), month: date.getMonth()+1, day: date.getDate() } } let markerObj = { time: formateTime(properties.time), position: properties.position, color: properties.color, shape: properties.shape, text: properties.marker_text, size: properties.size, markerId : markerID, //marker_obj : null, } function setObject(obj,series){ series.markerObject = obj; } if (seriesID !== null) { instance.data.allPaneData.filter(item => item.name === seriesID).forEach(item2 => { item2.markersArr.push(markerObj); let seriesmarker = LightweightCharts.createSeriesMarkers(item2.series,item2.markersArr); if(item2.markerObject == null){ setObject(seriesmarker,item2); } //item2.markerObject.setMarkers(item2.markersArr); }); } else { instance.data.mainMarkers.push(markerObj); let mainMarker=LightweightCharts.createSeriesMarkers(instance.data.allSeriesData[0].series,instance.data.mainMarkers); instance.data.markerObject = mainMarker //instance.data.markerObject.setMarkers(instance.data.mainMarkers); } } < /code> и ниже мой код для удаления маркера из серии < /p> (function anonymous(instance, properties, context < /code> ) {< /p> let seriesID = properties.seriesid; let markerID = properties.markerid; let newarr=[]; if (seriesID == null) { instance.data.mainMarkers.forEach((val, index) => { if (val.markerId === markerID) { instance.data.mainMarkers.splice(index, 1); } }); instance.data.markerObject.setMarkers(instance.data.mainMarkers); }else { instance.data.allPaneData.forEach(chartObject => { if (chartObject.name === seriesID) { chartObject.markersArr.forEach((val, index) => { if (val.markerId === markerID) { chartObject.markersArr.splice(index, 1); } chartObject.markerObject.setMarkers(chartObject.markersArr); }) } }); } [/code] }) Теперь проблема в том, что он только удаляет 1 маркер из массива, даже если я передаю пустой массив, он ничего не делает. Подробнее здесь: [url]https://stackoverflow.com/questions/79584432/remove-series-markers-from-series-in-tradingview-charts-using-lightweight-charti[/url]