No, because RestorePriceArrays is restoring PRICE arrays (as name says). The only case when you should call SetForeign with 2nd and 3rd parameter set to NON-default values is when you are using backtester-in-a-box legacy function Equity.
The fundamental mistake that you are doing is that you are using SetForeign as it would be used for backtest. Generally it is NOT the case. Backtest is run on current symbol*, not on foreign symbol.
If you want to backtest CBOE you should run your backtest on CBOE, not on other symbol. SetForeign does NOT change the symbol for backtest.
The only exception is legacy backtester-in-a-box Equity() function that does old, single-symbol backtest in place of the call. But other than that backtest is always done on current symbol (or group/portfolio of symbols selected in the “Apply To:” selection.