来自 Tradingview .csv 文件的简单 google 工作表交易摘要

问题描述 投票:0回答:1

我有这种格式的原始数据:

我想添加一列(如果无法找到单个公式来完成工作,则添加多个列),将按工具和时间顺序排列的每个未平仓交易与相关的平仓交易进行匹配。

例如,第 21 行在 MESH24 上开仓,1 手,价格为 4762(H 列)。 下一个动作是第 20 行,在 4760 处回补空头,从而获得 2 点利润。 在这种情况下,这些行是后续的,但它们的分布方式可能不同,例如第 5 行打开了一个短路,该短路在第 2 行中闭合。


抱歉:我匆忙发帖,我不知道我必须详细说明。 这两周以来,我一直在尝试找到一个具有简单逻辑的公式:由于行按时间顺序排列,因此您总是首先遇到开仓交易。例如,如果您遇到符号 X 的买入,则公式必须稍后找到同一符号的卖出。

遵循 FIFO 标准,您为同一工具找到的第一个相反订单将关闭您的初始未平仓头寸,无论相同或不同工具上的任何其他未平仓头寸。

经过多次尝试,我能得到的最好结果是:“=IF(AND(B2="Buy", B3="Sell", A2=A3), D2-D3, IF(AND(B2="Sell", B3="Buy", A2=A3), D3-D2, ""))" 作为这些数据的辅助列:

如果定义交易的开仓行和平仓行相邻,则一切正常,但如果它们不是相邻的,则公式不起作用,因为仅在后续行上检查平仓订单。

csv google-sheets-formula tradingview-api trading summary
1个回答
0
投票

这是您可以测试的一种方法:

=map(A2:A,B2:B,D2:D,lambda(Σ,Λ,Ξ,if(isodd(countif(A2:Σ,Σ))+(Σ=""),,if(Λ="Buy",-1,1)*((Ξ-xlookup(Σ,A2:offset(Σ,-1,),D2:offset(Ξ,-1,),,,-1))*switch(mid(Σ,6,3),"MES",4,"MNQ",4,"MGC",10,"M6E",10000,1)))))

© www.soinside.com 2019 - 2024. All rights reserved.