最初のステップとして、クロスの数とクロスが発生したタイミングを計算するには、次のようにします。アイデアを得るために疑似コードとして扱ってください..
# MA: list containing the values of the moving average for each time period
# High: list containing the highs of each bar
# Low: list containing the lows of each bar
MA = [...]
High = [...]
Low = [...]
count = 0 # the number of crosses
index_cross = [] # the indices where crosses occur
for i in range(len(MA)):
if Low[i] < MA[i] and High[i] > MA[i]:
index_cross.append(i)
count += 1
これで、クロスの数とそれらがいつ発生したかがわかります。これは、バーが MA を横切ることを前提としています。(つまり、前のバーの安値が MA を上回り、現在のバーの高値が MA を下回っているギャップはありません)。次に、index_cross インデックスを使用して、クロスが発生した場所からの価格の最大偏差を見つけることができます。終値を使用するか、上昇トレンドの高値と下降トレンドの安値を使用するかを検討する必要があります。
補足として、関心のあるポイントでグラフに注釈を付けるには、pandas (データ分析用のライブラリ) を調べることができます。また、市場が変動している場合、そのような注釈は非常に乱雑になる傾向があります。これが何らかの方向性を与えることを願っています..