You need to find ways to identify the currently running program. Once the ID is made, you can align your trades/holdings until the corresponding exit condition.
I showed you the Money Flow flip. Implementing reminders.

Signal 1, hits: 2.

if (MFI[i]<0 && iFractals(symbol,0,MODE_UPPER,i) && High[i]==iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,200,i))){
ObjectCreate("Cinnabonn"+IntegerToString(i), OBJ_TEXT, 2, Time[i], 0.01);
ObjectSetText("Cinnabonn"+IntegerToString(i), "MFI FLIP!!!", 42, "Impact", clrRed);
I could not say how far the market would go at the time (had a vague clue, Gray divergence ->88 to 135 pips), but in retrospect, it should have been obvious: until the next fresh money flow reversal zone.
I did have bad feelings when I saw the 2nd false start down and there was no rally. Now I can tell that these were there to achieve a full consolidation to be able to reach further.
Candle charts fail to show what a struggle it can be to get to a certain distance.
Now that we have utilized the money flow reversal zone, another control function can guide you in for holding longs to just shy of the 3rd hourly Fractal back. Only one reversal zone was printed and 1.0835 and 1.0829 were the projected buy levels.

As you can see, the money flow reversal zone did not print till Wednesday (the money flow flip happened last Thursday), so the program was to sell until the new Money Flow Reversal Zone prints & gets tested for 5 days.
This kind of reflection is writing the code for the future, not some egocentric whining.
The control function should always have a provisory exit condition.

Take back 2 fractals means scoring 2 (the second and the third on the left count as one as they are equal) and the 4th (Fractal 3) is going to remain untouched. 1.0889 cap or so. There is still a hesitation around the S3 level, so there may be a right shoulder first.
///////Volatility Divergence On The Downside
if (iFractals(symbol,0,MODE_LOWER,i) && iLow(symbol,0,iLowest(symbol,0,MODE_LOW,160,i))==iLow(symbol,0,i)
&& ExtATRBuffer2[ArrayMinimum(ExtATRBuffer2,160,i+1)]<10
// && ExtATRBuffer2[ArrayMaximum(ExtATRBuffer2,14,i+10)]<41
&& ExtATRBuffer2[ArrayMinimum(ExtATRBuffer2,160,i+1)]<ExtATRBuffer2[i]
&& ExtATRBuffer2[i]<41
// && Close[i-1]>iMA(symbol,0,8,0,MODE_EMA,PRICE_OPEN,i-1)
&& ExtATRBuffer[ArrayMaximum(ExtATRBuffer,70,i+10)]<ExtATRBuffer[i]
)
{
ObjectCreate("Frog"+IntegerToString(i),OBJ_TREND,indicator_window, Time[i], ExtATRBuffer2[i], Time[ArrayMinimum(ExtATRBuffer2,160,i+1)], ExtATRBuffer2[ArrayMinimum(ExtATRBuffer2,160,i+1)]);
ObjectSet("Frog"+IntegerToString(i),OBJPROP_COLOR,clrPowderBlue);
if (ExtATRBuffer2[ArrayMaximum(ExtATRBuffer2,14,i+10)]>41) { ObjectCreate("Frogg"+IntegerToString(i),OBJ_TEXT, 0, Time[i+8],Low[i]-40*Point);
ObjectSetText("Frogg"+IntegerToString(i),"TAKE BCK 2 FRACT.(5H)", 26, "Impact", clrCadetBlue);
if (ExtATRBuffer[i]<105) ObjectSetText("Frogg"+IntegerToString(i),"TAKE BCK 3 FRACT.(5H)", 26, "Impact", clrCadetBlue);
if (ExtATRBuffer[i]>166) ObjectSetText("Frogg"+IntegerToString(i),"TAKE BCK 1 FRACT.(5H)", 26, "Impact", clrCadetBlue);
if (i>5 && (Low[i-5]<Low[i] || Low[i-4]<Low[i] || Low[i-3]<Low[i] || Low[i-2]<Low[i] || Low[i-1]<Low[i])) ObjectDelete("Frogg"+IntegerToString(i));
}
if (ExtATRBuffer2[ArrayMaximum(ExtATRBuffer2,14,i+10)]<41) {
ObjectSet("Frog"+IntegerToString(i),OBJPROP_COLOR,clrYellow);
if (ExtATRBuffer[i]>41 && Close[i-1]>iMA(symbol,0,8,0,MODE_EMA,PRICE_OPEN,i-1)) {
ObjectCreate("Frogg"+IntegerToString(i),OBJ_TEXT, 0, Time[i+8],Low[i]-40*Point);
ObjectSetText("Frogg"+IntegerToString(i),"FLIP OVER", 26, "Impact", clrYellow);}
if (ExtATRBuffer2[i]>41) ObjectSet("Frog"+IntegerToString(i),OBJPROP_COLOR,clrPink);
if (Close[i-1]<iMA(symbol,0,8,0,MODE_EMA,PRICE_OPEN,i-1)){
ObjectSet("Frog"+IntegerToString(i),OBJPROP_COLOR,clrGray); }}
ObjectSet("Frog"+IntegerToString(i),OBJPROP_WIDTH,6);
ObjectSet("Frog"+IntegerToString(i),OBJPROP_RAY_RIGHT,false);
ObjectSet("Frog"+IntegerToString(i),OBJPROP_BACK,true);
}
