3 wan distance

Dear Guys,
i have CCR1036
i have 3 wan from different isp and i am planning to install the forth
i have set the configuration in mangle and NAT check the below code

Mangle


/ip firewall mangle
add action=mark-connection chain=input in-interface=ether2-TerraNet \
    new-connection-mark=WAN-TerraNet
add action=mark-connection chain=input in-interface=ether3-Cyberia \
    new-connection-mark=WAN-Cyberia
add action=mark-connection chain=input in-interface=ether4-Sodetel \
    new-connection-mark=WAN-Sodetel
add action=mark-routing chain=output connection-mark=WAN-TerraNet \
    new-routing-mark=To_TerraNet
add action=mark-routing chain=output connection-mark=WAN-Sodetel \
    new-routing-mark=To_Sodetel
add action=mark-routing chain=output connection-mark=WAN-Cyberia \
    new-routing-mark=To_Cyberia
add action=mark-connection chain=prerouting comment=TerraNet \
    dst-address-type=!local in-interface=ether1-LAN new-connection-mark=\
    WAN-TerraNet per-connection-classifier=both-addresses-and-ports:3/0
add action=mark-connection chain=prerouting comment=Cyberia dst-address-type=\
    !local in-interface=ether1-LAN new-connection-mark=WAN-Cyberia \
    per-connection-classifier=both-addresses-and-ports:3/1
add action=mark-connection chain=prerouting comment=Sodetel dst-address-type=\
    !local in-interface=ether1-LAN new-connection-mark=WAN-Sodetel \
    per-connection-classifier=both-addresses-and-ports:3/2
add action=mark-routing chain=prerouting comment=TerraNet connection-mark=\
    WAN-TerraNet in-interface=ether1-LAN new-routing-mark=To_TerraNet
add action=mark-routing chain=prerouting comment=Cyberia connection-mark=\
    WAN-Cyberia in-interface=ether1-LAN new-routing-mark=To_Cyberia
add action=mark-routing chain=prerouting comment=Sodetel connection-mark=\
    WAN-Sodetel in-interface=ether1-LAN new-routing-mark=To_Sodetel



NAT


/ip firewall nat
add action=masquerade chain=srcnat out-interface=ether2-TerraNet
add action=masquerade chain=srcnat out-interface=ether3-Cyberia
add action=masquerade chain=srcnat out-interface=ether4-Sodetel



ip route


/ip route
add check-gateway=ping distance=1 gateway=212.98.xxx.xx routing-mark=\
    To_TerraNet
add check-gateway=ping distance=1 gateway=212.40.xxx.xx routing-mark=\
    To_Sodetel
add check-gateway=ping distance=1 gateway=212.28.xxx.xx routing-mark=\
    To_Cyberia
add check-gateway=ping comment=provider3 distance=3 gateway=212.40.xxx.xx
add check-gateway=ping comment=provider2 distance=2 gateway=212.28.xxx.xx
add check-gateway=ping comment=provider1 distance=1 gateway=212.98.xxx.xx

Now i have set of questions
what i need is link bonding , load balance and fail over between the 3 wan and soon the forth
1- is my configuration is good ?
2- i am trying to do script for alerting me by sending email when a wan is down, and alert me when its up again.
but when i ping through the wan with distance 3 such as : /ping interface=ether4-Sodetel google.com count=5
i got failed ping while the other provider 1 and provider 2 can ping normally
and if i set the distance for provider 3 to distance=2 i got same result.
the only way i can ping through provider 3 is to set distance=20 for provider1 but in this scenario provider1 can’t ping as well.
A- can i ping through the 3 wans ?
B- can i check wans and send emails without using the ping process ?
C- when i run schedule to change distance and ping then return distance every 1 min the schedules for all wans run together and i got useless process please check code for schedule below :

/system scheduler
add disabled=yes interval=1m name="Cyberia 1" on-event=":if ([/ping interface=\
    ether3-Cyberia google.com count=5] = 0) do={[/ip route print file=cyberia_\
    down.txt]\r\
    \n    /tool e-mail send \\\r\
    \n      to=it@xxx.com \\\r\
    \n      subject=\"Mikrotik Cyberia is DOWN\"\r\
    \n    }" policy=\
    ftp,reboot,read,write,policy,test,password,sniff,sensitive start-date=\
    oct/11/2015 start-time=15:20:10
add disabled=yes interval=1m name="Cyberia 2" on-event=":if ([/ping interface=\
    ether3-Cyberia google.com count=15] > 10) do={[/file remove cyberia_down.t\
    xt]\r\
    \n\t/ip route print file=cyberia_up.txt\r\
    \n    }" policy=\
    ftp,reboot,read,write,policy,test,password,sniff,sensitive start-date=\
    oct/12/2015 start-time=15:22:20
add disabled=yes interval=1m name="Cyberia 3" on-event=":if ([:len [/file find\
    \_name=cyberia_up.txt]] > 0) do={[/file remove cyberia_up.txt]\r\
    \n    /tool e-mail send \\\r\
    \n      to=it@xxx.com \\\r\
    \n      subject=\"Mikrotik Cyberia is UP\"\r\
    \n    }" policy=\
    ftp,reboot,read,write,policy,test,password,sniff,sensitive start-date=\
    oct/12/2015 start-time=15:24:40
add disabled=yes interval=1m name="Sodetel 1" on-event="/ip route set [find co\
    mment=\"provider3\"] distance=1\t\r\
    \n\t:if ([/ping interface=ether4-Sodetel google.com count=5] = 0) do={[/ip\
    \_route print file=sodetel_down.txt]\r\
    \n    /tool e-mail send \\\r\
    \n      to=it@xxx.com \\\r\
    \n      subject=\"Mikrotik Sodetel is DOWN\"\r\
    \n    }\r\
    \n/ip route set [find comment=\"provider3\"] distance=3" policy=\
    ftp,reboot,read,write,policy,test,password,sniff,sensitive start-date=\
    oct/12/2015 start-time=15:26:00
add disabled=yes interval=1m name="Sodetel 2" on-event="/ip route set [find co\
    mment=\"provider3\"] distance=1\r\
    \n:if ([/ping interface=ether4-Sodetel google.com count=15] > 10) do={[/fi\
    le remove sodetel_down.txt]\r\
    \n\t/ip route print file=sodetel_up.txt\r\
    \n    }\r\
    \n/ip route set [find comment=\"provider3\"] distance=3" policy=\
    ftp,reboot,read,write,policy,test,password,sniff,sensitive start-date=\
    oct/12/2015 start-time=15:28:20
add disabled=yes interval=1m name="Sodetel 3" on-event=":if ([:len [/file find\
    \_name=sodetel_up.txt]] > 0) do={[/file remove sodetel_up.txt]\r\
    \n    /tool e-mail send \\\r\
    \n      to=it@xxx.com \\\r\
    \n      subject=\"Mikrotik Sodetel is UP\"\r\
    \n    }" policy=\
    ftp,reboot,read,write,policy,test,password,sniff,sensitive start-date=\
    oct/12/2015 start-time=15:30:40
add disabled=yes interval=1m name="TerraNet 1" on-event=":if ([/ping interface\
    =ether2-TerraNet google.com count=5] = 0) do={[/ip route print file=TerraN\
    et_down.txt]\r\
    \n    /tool e-mail send \\\r\
    \n      to=it@xxx.com \\\r\
    \n      subject=\"Mikrotik TerraNet is DOWN\"\r\
    \n    }" policy=\
    ftp,reboot,read,write,policy,test,password,sniff,sensitive start-date=\
    oct/12/2015 start-time=15:30:10
add disabled=yes interval=1m name="Terranet 2" on-event=":if ([/ping interface\
    =ether2-TerraNet google.com count=15] > 10) do={[/file remove TerraNet_dow\
    n.txt]\r\
    \n\t/ip route print file=TerraNet_up.txt\r\
    \n    }" policy=\
    ftp,reboot,read,write,policy,test,password,sniff,sensitive start-date=\
    oct/12/2015 start-time=12:32:20
add disabled=yes interval=1m name="Terranet 3" on-event=":if ([:len [/file fin\
    d name=TerraNet_up.txt]] > 0) do={[/file remove TerraNet_up.txt]\r\
    \n    /tool e-mail send \\\r\
    \n      to=it@xxx.com \\\r\
    \n      subject=\"Mikrotik TerraNet is UP\"\r\
    \n    }" policy=\
    ftp,reboot,read,write,policy,test,password,sniff,sensitive start-date=\
    oct/12/2015 start-time=12:32:40

3- i know i have long schedule script but that what i figured out if you gave better solution please advice
i am using google apps for sending emails can i resolve address smtp.gmail.com everytime and put it in the script ?

please let me know if you need any clarification and thank you everyone in advance
regards,
rabie

any help from anyone ?
thank you in advance