In a 1 1/2-quart glass or stainless steel bowl, combine the fish, lime juice and onion. Use enough juice to cover the fish and allow it to float freely; too little juice means unevenly “cooked” fish. Cover and refrigerate for about 4 hours until a cube of fish no longer looks raw when broken open. Drain in a colander.
In a large bowl, mix together the tomatoes, green chiles, cilantro, olives and optional olive oil. Stir in the fish and season with salt, usually about 1/2 teaspoon. Add the orange juice or sugar. Cover and refrigerate if not serving immediately. Just before serving, gently stir in the diced avocado.
The fish may be marinated a day in advance; after about 4 hours, when the fish is “cooked,” drain it so that it won’t become too tangy. For the freshest flavor, add the flavorings to the fish no more than a couple of hours before serving.
There are many ways to serve ceviche. Here are some of our family’sfavorites: Place the ceviche in a large bowl and let people spoon it onto individual plates to eat with tortilla chips or saltines; spoon the ceviche into small bowls and serve tostadas, chips or saltines alongside; or pile the ceviche onto chips or tostadas and pass around for guests to consume on these edible little plates. Garnish the ceviche with cilantro leaves before serving.