Help with system trading a pair

Hi all, I'm having trouble getting my "long/short pairs" trading system to work and am reaching out for some help. I've looked at it for some time now and wonder if I'm missing something fundamental. The code is attached, in a nutshell, it is meant to create and plot a MACD and signal for each of the two stocks, and then plot arrows for the trades. Sell/Cover trades are should be generated when a defined profit% is made.

It's still work in progress, but the main problem I've having is that I am getting trade arrows to plot for the stock, MA, but I can't get them to display for the second stock, V. My intended logic is for them to always occur together. I wonder whether there is something fundamentally wrong with my approach that I have not twigged!

SetBarsRequired(sbrAll,0); 

//----------------------------------------------------------------------------------------------------

_SECTION_BEGIN("MACD for two stocks");

// Pairs-specific variables....
Stock1Ticker="MA";
Stock2Ticker="V";

Stock1C 		= Foreign(Stock1Ticker,"C",1);
Stock2C 		= Foreign(Stock2Ticker,"C",1);

BaselineBeginBar= -100;	// how far back to start the origin
BaselineMA_Period=  25; // ma period used for baseline

ma1				=	MA(Stock1C,BaselineMA_Period);
ma2				=	MA(Stock2C,BaselineMA_Period);
ma1Baseline		=	Ref(ma1,BaselineBeginBar);
ma2Baseline		=	Ref(ma2,BaselineBeginBar);
originFactor	=	Lastvalue(ma1Baseline/ma2Baseline);

r1 = Param( "Fast avg", 12, 2, 200, 1 );
r2 = Param( "Slow avg", 26, 2, 200, 1 );
r3 = Param( "Signal avg", 9, 2, 200, 1 );

S1_macdLine 	= EMA(Stock1C,r1)-EMA(Stock1C,r2);
S1_signalLine 	= EMA(S1_macdLine,r3);

S2_macdLine 	= EMA(Stock2C,r1)-EMA(Stock2C,r2);
S2_signalLine 	= EMA(S2_macdLine,r3);


// MACD plot - TOP
offset=2;
Plot( S2_ml = S2_macdline+offset, StrFormat(_SECTION_NAME()+"(%g,%g)", r1, r2),colorlightGrey,styleLine);
Plot( S2_sl = S2_SignalLine+offset, "Signal" + _PARAM_VALUES(),colorGrey50,styleLine);
//Plot( S2_sl = S2_SignalLine+offset, "Signal" + _PARAM_VALUES(), ParamColor("Signal color", colorBlueGrey ), ParamStyle("Signal style") );
//Plot( S2_ml-S2_sl+offset, "MACD Histogram", ParamColor("Histogram color", colorDefault ), styleNoTitle | ParamStyle("Histogram style", styleHistogram | styleNoLabel, maskHistogram ) );

// MACD plot - BOTTOM
Plot( S1_ml = S1_macdline, StrFormat(_SECTION_NAME()+"(%g,%g)", r1, r2),colorlightGrey,styleLine);
Plot( S1_sl = S1_SignalLine, "Signal" + _PARAM_VALUES(),colorGrey50,styleLine);
//Plot( S1_ml-S1_sl, "MACD Histogram", ParamColor("Histogram color", colorDefault ), styleNoTitle | ParamStyle("Histogram style", styleHistogram | styleNoLabel, maskHistogram ) );

_SECTION_END();

//----------------------------------------------------------------------------------------------------

_SECTION_BEGIN("Create signals and trades");

StockATR		=	ATR(10);
minBuyGap		=	Param("minBuyGap",0.2,0,2,0.2);
BuySetup		=	0;
Sell 			=	0;
Buy 			=	0;
Cover			=	0;
Short			=	0;
minProfit		=	0.01;
BarsInTrade		=	0;
PriceAtBuy		=	-1;

BuySetup	=	(Name()==Stock1Ticker
				AND S1_MACDLine - S1_SignalLine >= minBuyGap 				// This stock's MACD line is above it's signal line
				AND S2_SignalLine - S2_MACDLine >0)								// The other stock has its signal above the MACD line
				OR
				(Name()==Stock2Ticker 
				AND S2_MACDLine - S2_SignalLine >= minBuyGap 				// This stock's MACD line is above it's signal line
				AND S1_SignalLine - S1_MACDLine >0);							// The other stock has its signal above the MACD line

ShortSetup	=	(Name()==Stock2Ticker 
				AND S1_MACDLine - S1_SignalLine >= minBuyGap 				// The other stock's MACD line is above it's signal line
				AND S2_SignalLine - S2_MACDLine >0)								// This stock has its signal above the MACD line
				OR
				(Name()==Stock1Ticker 
				AND S2_MACDLine - S2_SignalLine >= minBuyGap 				// The other stock's MACD line is above it's signal line
				AND S1_SignalLine - S1_MACDLine >0);						// This stock has its signal above the MACD line

// set open positions
for (j = 1; j < BarCount; j++)														  
{ 
	// bring forward PriceAtBuy for convenience; and increment BarsInTrade...
	if (BarsInTrade[j-1]>0) 
		{
		PriceAtBuy[j]=PriceAtBuy[j-1];
		BarsInTrade[j]=BarsInTrade[j-1]+1;
		}

	// Set BUY signal and tomorrow's BuyAtPrice
	if (BuySetUp[j] AND (BarsInTrade[j-1]==0))
		{
		Buy[j]		=	1;
		BarsInTrade[j]=	1;
		PriceAtBuy[j]	=	Open[j+1]; // tomorrow's open
		BuyPrice[j]	=	Open[j+1];
		}
	else
	if (ShortSetUp[j] AND (BarsInTrade[j-1]==0))
		{
		Short[j]	=	1;
		BarsInTrade[j]	=	11;
		PriceAtShort[j]=	Open[j+1]; // tomorrow's open
		ShortPrice[j]=	Open[j+1];
		}
	else
	if ((Name()==Stock1Ticker OR Name()==Stock2Ticker) AND (BarsInTrade[j-1]>0 AND (C[j] / PriceAtBuy[j]) -1 > minProfit))
		{
		BarsInTrade[j]	=	0;
		
		Sell[j]		=	1;
		SellPrice[j]=	O[j+1];
		
		Cover[j]	=	1;
		CoverPrice[j]=	O[j+1];

		}	
} // for loop

//Position sizing inputs  
AccBalance = Param("Account Balance",25000,1,1000000,1);  
PcntRisk = Param("Explorer: % Equity",13.5,1,100,0.01);  
Shares = round((AccBalance*PcntRisk/100)/Ref(O,1));  

_SECTION_END();

//----------------------------------------------------------------------------------------------------

_SECTION_BEGIN("Plot trade arrows ");

PlotShapes(shapeUpArrow*Buy,colorBrightGreen);
PlotShapes(shapeDownArrow*Sell,colorRed);
PlotShapes(shapeHollowUpArrow*Cover,colorBrightGreen,0,Graph0,-20);
PlotShapes(shapeHollowDownArrow*Short,colorRed,0,Graph0,-20);

_SECTION_END();

//----------------------------------------------------------------------------------------------------

_SECTION_BEGIN("Interpretation Windows Output");

printf("\n\n"+"Current Stock: "+name()+"\n");
printf("S1 MACD Line: "+NumToStr(S1_MACDLine,1.2)+"\n");
printf("S1 Signal Line: "+NumToStr(S1_SignalLine,1.2)+"\n");
printf("S2 MACD Line: "+NumToStr(S2_MACDLine,1.2)+"\n");
printf("S2 Signal Line: "+NumToStr(S2_SignalLine,1.2)+"\n");
printf("S1 (MA) : "+WriteIf(S1_MACDLine>S1_signalline,"Buy","")+"\n");
printf("S2 (Visa): "+WriteIf(S2_MACDLine>S2_signalline,"Buy","")+"\n");
printf("Buy"+WriteIf(Buy,"Yes","")+"\n");
printf("Sell"+WriteIf(Sell,"Yes","")+"\n");
printf("Cover"+WriteIf(Cover,"Yes","")+"\n");
printf("Short"+WriteIf(Short,"Yes","")+"\n");
printf("\n\n");
printf("BuySetup:  "+	writeIf(buysetup,"Yes","No") + "\n");
printf("ShortSetup:"+writeIf(shortsetup,"Yes","No") + "\n");

_SECTION_END();
//----------------------------------------------------------------------------------------------------