Cut the skin off the fish and cut 8-10 pieces from each fish. There will be around 15-20 fish pieces.
Pierce the eyes of the coconut with a sharp knife and drain the coconut water into a bowl. Split the coconuts by covering in a kitchen towel and smashing with a rolling pin or a hammer. With a sharp knife, pry the coconut meat from its husk, then peel off any remaining brown bits of skin that adhere to the coconut meat. Place 1/2 of the coconut flesh and coconut water in a blender, adding 4 cups of hot water. Blend until the coconut and water forms a smooth slurry. Pour the coconut slurry on a sieve, and collect the coconut milk on a bowl. Squeeze the coconut flesh on to the sieve so that the coconut milk comes out as much as possible. Set aside the coconut milk on a bowl.
Grind the rest of the coconut meat on a "sheel pata" (a flat stone with a cylindrical stone or rolling pin, that is rubbed back and forth to grind or smash ingredients), so that a fine paste forms. Set aside on a bowl when ready.
Heat oil on a pan, and add onion slices and fry until light golden. Add onion paste, salt, garlic, ginger and cumin pastes, turmeric and red chilli powders and stir for 5 minutes.
Add the coconut paste, stir and mix well with the spices. Now add the fish pieces and cook for 5 minutes. Pour the coconut milk, stir lightly and lower the heat. Put the lid on for 10-15 minutes until the water dries up and forms a light gravy with the oil simmering on top.