Ирина Минина:
Зачеркнутый оператор точно неверно написан. ОжидалосьУважаемые форумчане!
Возникла идея добавить в функцию расчета объема позиций условие,если последний ордер закрылся с убытком ,то следующий выставляется с увеличенным коэффициентом.
И чтобы все остальные возвраты из функции тоже работали.Написала вроде,но то один возврат не работает,то другой.
Подскажите,что делаю не так?
double GetLot(int type)
{
if(CountOrdersType(type)==0 || LastOrderTypeLots(type)>Max_Lot)
{
if(!Auto_Lot) return(Start_Lot); //возврат начального лота,если флаг разрешения выключен
return(AccountBalance()*(Lot_Percents/100)*AccountLeverage()/MarketInfo(Symbol(),MODE_LOTSIZE)); }//возврат расчетного лота,если флаг разрешения включен
{ if(!History) return(Start_Lot); //возврат начального лота,если флаг разрешения выключен
datetime time=0;double lastlot=0;int lastop=0;double prof=0;
for(int i=OrdersHistoryTotal()-1;i>=0;i--)
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)&&OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic&&OrderType()<=1)
{
if(time<OrderCloseTime()){time=OrderCloseTime();lastlot=OrderLots();lastop=OrderType();prof=OrderProfit();}
}
if(prof < 0 && OrderMagicNumber() == Magic)lot=OrderLots();
return(lot * History_Multiplier); } //возврат расчетного лота с коэффициентом умножения,если есть последний ордер закрылся с убытком.
return(LastOrderTypeLots(type)*Lot_Multiplier); //возврат расчетного лота с коэффициентом умножения,если есть открытый ордер и открывается следующий.
}
{
if(CountOrdersType(type)==0 || LastOrderTypeLots(type)>Max_Lot)
{
if(!Auto_Lot) return(Start_Lot); //возврат начального лота,если флаг разрешения выключен
return(AccountBalance()*(Lot_Percents/100)*AccountLeverage()/MarketInfo(Symbol(),MODE_LOTSIZE)); }//возврат расчетного лота,если флаг разрешения включен
{ if(!History) return(Start_Lot); //возврат начального лота,если флаг разрешения выключен
datetime time=0;double lastlot=0;int lastop=0;double prof=0;
for(int i=OrdersHistoryTotal()-1;i>=0;i--)
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)&&OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic&&OrderType()<=1)
{
if(time<OrderCloseTime()){time=OrderCloseTime();lastlot=OrderLots();lastop=OrderType();prof=OrderProfit();}
}
if(prof < 0 && OrderMagicNumber() == Magic)lot=OrderLots();
return(lot * History_Multiplier); } //возврат расчетного лота с коэффициентом умножения,если есть последний ордер закрылся с убытком.
return(LastOrderTypeLots(type)*Lot_Multiplier); //возврат расчетного лота с коэффициентом умножения,если есть открытый ордер и открывается следующий.
}
if ( prof < -0.001 ) return( lastlot * History_Multiplier ); }

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Уважаемые форумчане!
Возникла идея добавить в функцию расчета объема позиций условие,если последний ордер закрылся с убытком ,то следующий выставляется с увеличенным коэффициентом.
И чтобы все остальные возвраты из функции тоже работали.Написала вроде,но то один возврат не работает,то другой.
Подскажите,что делаю не так?
{
if(CountOrdersType(type)==0 || LastOrderTypeLots(type)>Max_Lot)
{
if(!Auto_Lot) return(Start_Lot); //возврат начального лота,если флаг разрешения выключен
return(AccountBalance()*(Lot_Percents/100)*AccountLeverage()/MarketInfo(Symbol(),MODE_LOTSIZE)); }//возврат расчетного лота,если флаг разрешения включен
{ if(!History) return(Start_Lot); //возврат начального лота,если флаг разрешения выключен
datetime time=0;double lastlot=0;int lastop=0;double prof=0;
for(int i=OrdersHistoryTotal()-1;i>=0;i--)
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)&&OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic&&OrderType()<=1)
{
if(time<OrderCloseTime()){time=OrderCloseTime();lastlot=OrderLots();lastop=OrderType();prof=OrderProfit();}
}
if(prof < 0 && OrderMagicNumber() == Magic)lot=OrderLots();
return(lot * History_Multiplier); } //возврат расчетного лота с коэффициентом умножения,если есть последний ордер закрылся с убытком.
return(LastOrderTypeLots(type)*Lot_Multiplier); //возврат расчетного лота с коэффициентом умножения,если есть открытый ордер и открывается следующий.
}