Здравствуйте, не подскажете как сделать так чтобы сделка закрылась по пересечению двух 2 машек а не по тейк-профиту?
extern string _1_ = "Настройки МА.";
extern int period1 = 4; //период МА быстрой
extern int ma_shift1 = 0;//сдвиг МА быстрой
extern int period2 = 12; //период МА медленной
extern int ma_shift2 = 0;//сдвиг МА медленной
extern string _4_ = "Начальный лот ордера .";
extern double lott =0.1;//лот ордера
extern string _13_ = "Общие параметры советника.";
extern int slippage=10; //уровень допустимого реквота
extern int Mag=4340; //магическое число .
int tiketS=0, OP,OP1, tiketB=0,i;
double MA_Fast, MA_Slow;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
if (Digits == 3 || Digits == 5){slippage *= 10;}//определение количества знаков.
CheckOP();OP1=OP;//предварительная установка параметров.
for( i=0; i<=OrdersTotal(); i++){//ищем тикеты открытых ордеров.
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) continue;
if(OrderType()==OP_BUY && OrderSymbol()== Symbol() && OrderMagicNumber() == Mag)tiketB = OrderTicket();
if(OrderType()==OP_SELL && OrderSymbol()== Symbol() && OrderMagicNumber() == Mag)tiketS = OrderTicket();
}
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
void start()
{
// если быстрая скользящая больше медленной скользящей
if (CheckOP()==0&&tiketB==0)//ордера бай не должно быть, условие по МА появилось для бай.
{ // открываем ордер на покупку и удаляем ордер на продажу.
tiketB = OrderSend(Symbol(),OP_BUY ,lott,NormalizeDouble(Ask,Digits),slippage,0,0,"",Mag,0);
if(tiketS > 0 && OrderClose(tiketS,lott,NormalizeDouble(Ask,Digits),slippage))tiketS = 0;
} // если быстрая скользящая меньше медленной скользящей
if (CheckOP()==1&&tiketS==0)//ордера сел не должно быть, условие по МА появилось для сел.
{ // открываем ордер на продажу и удаляем ордер на покупку.
tiketS = OrderSend(Symbol(),OP_SELL,lott,NormalizeDouble(Bid,Digits),slippage,0,0,"",Mag,0);
if(tiketB > 0 && OrderClose(tiketB,lott,NormalizeDouble(Bid,Digits),slippage))tiketB = 0;
}
OP1=OP;//запоминаем появившиеся условие.
return;
}
//+------------------------------------------------------------------+
int CheckOP(){