this was taken from another forum but thought it would help everyone here !!
If you have any please post below
Goal
We want to create a master macro, which can be spammed very quickly. Based on our spam speed, we want it to call our damage dealing spells in the order we specify, and to have them recast at the best possible time. We want all this to be accomplished from spamming a single button.
Basics
We will build two types of macros for "Click". The first is the master macro, which calls the others. The second are the "Castsequence" macros, which execute the spells we desire.
We can place our Castsequence Macro's on several bars. Within the default interface these are:
Default Bar....... /Click ActionButton#
Bottom Left......./Click MultiBarBottomLeftButton#
Bottom Right...../Click MultiBarBottomRightButton#
Left Bar............./Click MultiBarLeftButton#
Right Bar.........../Click MultiBarRightButton#
The pound (#) symbol will be exchanged for the button number, which in the default UI ranges from 1 to 12.
If you use a bar addon, like Bartender, Dominos or Macaroon, you will need to know the name of the button which you are clicking. Within Dominos, when you are configuring your bar (positioning, size etc) if you mouse over it will give the name of the button, which you would then use in the place of /Click MultiBarBottomLeftButton4 or whatever.
Research
We need to know our own spam speed. Open Word or Notepad. Watch a clock or your watch. Spam any letter or any number for 10 seconds. Spam at the speed you will spam during play. Count how many of the key you spammed, and divide that by 10. That is how many of the key you pressed per second. Ideally, you spam at least 2 presses per second, and as many as you can comfortably maintain. Most spam between 2 and 5 presses per second.
We also need to know information on our spells. Specifically recast delays and dot durations. We can get this information by googling: "Wow +Wiki +Class +Abilities". Substitute your class into the search.
For my destruction warlock, I came up with:
Curse of the Elements, 5 minute duration
Immolate, 15 second duration
Conflagrate, 10 second cooldown (glyphed)
Chaos Bolt, 10 second cooldown (glyphed)
Timing
Based on our spam speed, we will need to insert a number of commas into our castsequences to attain the correct timing. I personally spam at 2 clicks per second. So I need to insert 2 commas for every second of desired delay.
Immolate has a 15 second duration, so I want 30 commas in its sequence before I recast (in this case, it is a dot and I want it to run its course).
Conflagrate has a 10 second cooldown, so I want 20 commas before it attempts to recast, because it cannot be used until the cooldown expires.
I have a fall through button, which will execute if everything else is on cooldown. For my warlock this is Incinerate. It needs to be a spell which is not a dot, but can be cast as often as you desire, as soon as the GCD has expired.
Here is an web page, to help determine your spam speed: http://wow.codespin.com/
Procedure
Our master macro is typically placed on the first button of the default action bar. My warlock's master macro is:
#show Chaos Bolt
<Insert Assist Method, or Omit line if using FTL>
/Click MultiBarRightButton1
/Click MultiBarRightButton2
/Click MultiBarRightButton3
/Click MultiBarRightButton4
/Click MultiBarRightButton5
Macro on Button 1
#showtooltip Curse of the Elements
/cast [mod, nochanneling] Drain Soul
/castsequence [nochanneling] reset=target Curse of the Elements,Null
Macro on Button 2
#showtooltip Immolate
/cast [mod, nochanneling] Drain Soul
/castsequence [nochanneling] reset=target Immolate,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
/use 13
/use 14
/cast [pet:imp] Firebolt
Macro on Button 3
#showtooltip Conflagrate
/cast [mod, nochanneling] Drain Soul
/castsequence [nochanneling] reset=combat Conflagrate,,,,,,,,,,,,,,,,,,,
Macro on Button 4
#showtooltip Chaos Bolt
/cast [mod, nochanneling] Drain Soul
/castsequence [nochanneling] reset=combat Chaos Bolt,,,,,,,,,,,,,,,,,,,
Macro on Button 5
#showtooltip Incinerate
/cast [mod, nochanneling] Drain Soul
/cast [nochanneling] Incinerate
Tweaking
Take your Click macro and visit a target dummy.
Drag all of the spells out of the spell book, and put them into a line, where they won't be clicked upon.
Run the click macro, and observe each spell in turn. Check to see that it is casting, and in the case of a dot that it recasts almost as soon as the dot expires. Add commas if it recasts too soon, and remove commas if there is a wait until the recast. Do the same for each other spell in your sequence.
If your haste significantly changes, it wouldn't hurt to re-tweak your Clicking.