@mahmutbir
Bu tarz robotların nerede hata üreteceği belli olmaz ama gözüme çarpan aşağıdaki yer.

// Satış koşulu: Hedef kar fiyatına ulaşıldığında satış yap
if (karFiyatlari.Count > 0 && C[i] >= karFiyatlari[0])
{
Sistem.Yon[i] = "S";
karFiyatlari.RemoveAt(0); // Satış yapılan alımın hedef kar fiyatını listeden kaldır
}

Burada ilk değeri değil son değeri itibara alıp satış yapmalı ve listeden çıkarman gerek çünkü kodunun mantığına göre ilk satım son alıma ait olmalı.