I really would recommend a date table, you could construct one from scratch and then add the periods required and it opens up many other options. That also gives you the flexibility you get when your date ranges are non contiguous.
You could use something like this:
VAR PeriodStart = EDATE(SELECTEDVALUE('Date Table'[Start Date]), -12)
VAR PeriodEnd = EDATE(SELECTEDVALUE('Date Table'[End Date]), -12)
FILTER(VALUES('Fact Table'[Transaction Date]),
'Fact Table'[Transaction Date] >= PeriodStart &&
'Fact Table'[Transaction Date] <= PeriodEnd
I have not tested this code because I am at work and just throwing something together while data loaded, it could have some overlooked context issues so please test. For averages you're better off making two measures like this and then dividing e.g. AvgPrice = DIVIDE([Total Price], [Total Units])