Слегка изменил процесс закрытия
Посмотреть вложение 557113
MakarFX отлично всё отрабатывает.
Спасибо большое за труд.
Не хватает последнего штриха в этом советнике.
А именно функции стоп работы советника при закрытии серии ордеров по ТР.
Запустить советник возможно будет только если передёрнуть тамфрейм или вызвать свойства советника и закрыть.
Мне в одном советнике делали такую функцию.
Вот код, не знаю всё ли скопировал к этому относящееся.
Можно ли этот код вставить в советник.
Если необходимо посмотреть код полностью могу в личу советник прислать.
==============================
extern bool Stop_Start=true;
datetime TimeStartEA;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
firstBuy=false;
firstSell=false;
StopEA=false;
TimeStartEA=TimeCurrent();
// if(!Start_one_or_many)TimeStartEA=0;
TimeStart=HourStart*60+MinuteStart;
TimeStop=HourStop*60+MinuteStop;
//----
// ObjectMakeLabel("myLogo",5,5,2);
Set_TP_SL=true;
return(0);
//--
if(Stop_Start)
{
if(isProfLastPos(Symbol(),TimeStartEA,-1,magic))return(0);//StopEA=true;
}
//--
if(isProfLastPos(Symbol(),Time[0],OP_BUY,magic)){firstBuy=false;}
if(isProfLastPos(Symbol(),Time[0],OP_SELL,magic))firstSell=false;
if(use_percent_of_deposit) cfg_lot=GetLot();
datetime _tim=TimeLocal();
string _stim=TimeToString(_tim,TIME_MINUTES);
StringReplace(_stim,":",".");
double _dtim=StringToDouble(_stim);
TimeSey4as=int(MathFloor(_dtim)*60+(_dtim-MathFloor(_dtim))*100);
if(((TimeSey4as>TimeStart || TimeSey4as<TimeStop) && TimeStart>TimeStop) || ((TimeSey4as>TimeStart && TimeSey4as<TimeStop) && TimeStart<TimeStop) || TimeStart==TimeStop)
{
OpenOrder=true;
}
else
{
OpenOrder=false;
}
int spread=MarketInfo(Symbol(),MODE_SPREAD);
if(spread>MaxSpread)OpenOrder=false;
if(isLossLastPos(Symbol(),-1,kom,magic) && NumberOfPositions(Symbol(),kom,-1)==0)
OpenOrder=true;
//+------------------------------------------------------------------+
bool isProfLastPos(string sy="",datetime t=0,int op=-1,int mn=-1)
{
int i,j1=-1,k=OrdersHistoryTotal();
if(sy=="0") sy=Symbol();
for(i=0; i<k; i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
{
if(OrderSymbol()==sy || sy=="")
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
{
if(op<0 || OrderType()==op)
{
if(mn<0 || OrderMagicNumber()==mn)
{
if(t<OrderCloseTime())
{
t=OrderCloseTime();
j1=i;
}
}
}
}
}
}
}
if(OrderSelect(j1,SELECT_BY_POS,MODE_HISTORY))
{
if(OrderProfit()>0) return(True);
}
return(False);
}
//--