SWAP CLOSE и как этим бороться

 
знаю что все Ваше внимание сосредоточенно на чемпионат, но все же зачем он нужен и как сэтим можно бороться?
 
Некоторые банки принудительно закрывают позиции в конце дня и открывают их заново с учётом свопа. Банковская специфика такая.
 

и как с этим правильно бороться?:)

к тому же, в тестере swap close - 00:00, в жизни - 23:59 ....

 

вобщем-то корявенько, но что-то в этом роде прорисовывается.. ...


//-----------------------------------------------------------
void CheckForClose()
{
string ot;
string ct;
string NOWot;
double OrOpPr=0;
double NOWOrOpPr;

{
for(int z=0; z<HistoryTotal(); z++)
{
if(OrderSelect(z,SELECT_BY_POS,MODE_HISTORY))
{
ot=TimeToStr(OrderOpenTime(), TIME_MINUTES);
ct=TimeToStr(OrderCloseTime(), TIME_MINUTES);
if(ot != "00:00" && ct=="23:59") //в это время точно не открываюсь. ..
{
OrOpPr=OrderOpenPrice();
}
}
}
}

for(int i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderMagicNumber()!=MagicNumber || OrderSymbol()!=Symbol()) continue;

if(NOWot=="00:00")
NOWOrOpPr=OrOpPr;
else NOWOrOpPr=OrderOpenPrice();

if(OrderType()==OP_BUY)
if(TrailingStop>0)
{
if(Bid-NOWOrOpPr>Points*TrailingStop)
{
if(OrderStopLoss()<Bid-Points*TrailingStop)
{
OrderModify(OrderTicket(), OrderOpenPrice(), Bid-Points*TrailingStop, OrderTakeProfit(), 0,Red);
return(0);
}
}
}
if(OrderType()==OP_SELL)

if(TrailingStop>0)
{
if((NOWOrOpPr-Ask)>(Points*TrailingStop))
{
if(OrderStopLoss()==0. 0 ||
OrderStopLoss()>(Ask+Points*TrailingStop))
{
OrderModify(OrderTicket(), OrderOpenPrice(), Ask+Points*TrailingStop, OrderTakeProfit(), 0,Red);
return(0);
}
}
}
}
}

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

Причина обращения: