to adjust the transparency try something like this fake fresnel term i devised:
put this in your vertex shader output struct:
float4 fresnel: COLOR0;

put this in the vertex shader:
float3 PositionWorld = mul(Pos, matWorld);
float dist=distance(PositionWorld, vecViewPos);

if (dist<=300)
{
Out.fresnel.xyzw=dist*0.005;
}

if (dist>300)
{
Out.fresnel.xyzw=1.0;
}

put this in the pixel shader input
float4 fresnel:COLOR0

then in the pixel shader at the end:

float4 final=reflection;

float3 watercolor=(0.58,0.65,0.63); //adjust this change water coloring

final.rgb*=watercolor;

final.w=(1*fresnel)*0.8;

this adjusts transparency based on view distance-but your water terrain needs a lot of faces. You said yours did so it should work. There are better ways to do this, like a real fresnel term, but this works for my purposes.

also, in the technique part of the fx file put these lines before you compile the shaders:
zwriteenable=false;
zenable=true;
alphablendenable=true;