Здравствуйте, одним из вариантов может быть использывание флагов, т.е:
int BuyTrue, SellTrue;// определяем переменные которые будут служить нам вышеуказанными флагами
....
//--- Условие для Buy
if (BuyTrue==0 && ... и плюс другие Ваши условия) // Условие открытия позы
{
....
OrderSend(....); //функция для открытия ордера
BuyTrue=1; // При BuyTrue=1 условие для открытия позы не будет полностью удовлетворяться
// следовательно при повторном сигнале на бай сделка открываться не будет
SellTrue=0; // При SellTrue=0 условие для открытия позы будет полностью удовлетворяться
// следовательно следующеей сделкой будет только Sell
....
}
//--- Условие для Sell
if (SellTrue==0 && ... и плюс другие Ваши условия) // Условие открытия позы
{
....
OrderSend(....); //функция для открытия ордера
SellTrue=1; // При SellTrue=1 условие для открытия позы не будет полностью удовлетворяться
// следовательно при повторном сигнале на Sell сделка открываться не будет
BuyTrue=0; // При BuyTrue=0 условие для открытия позы будет полностью удовлетворяться
// следовательно следующеей сделкой будет только Buy
....
}
...
Где-то так, вроде...