Если 1 и 3 проблемно и долго, то сделайте хотя бы 2.
double CalcLotsAuto()
{
int li_0;
if(IsTesting() || IsOptimization())
if(gi_280) return (0.1);
RefreshRates();
double ld_4=GlobalVariableGet("multi")-GlobalVariableGet("disable");
double ld_12 = GlobalVariableGet("sredstva");
double ld_20 = MarketInfo(Symbol(), MODE_MARGINREQUIRED) / 1000.0;
double l_free_magrin_28=AccountFreeMargin();
double ld_36=AccountBalance();
double l_minlot_44 = MarketInfo(Symbol(), MODE_MINLOT);
double l_maxlot_52 = MarketInfo(Symbol(), MODE_MAXLOT);
double l_lotstep_60 = MarketInfo(Symbol(), MODE_LOTSTEP);
double ld_unused_68 = AccountStopoutLevel();
int li_unused_76=1000.0*l_minlot_44;
if(ld_12==0.0)
{
ld_12=ld_36;
GlobalVariableSet("sredstva",ld_36);
}
if(GlobalVariableGet("multi")>1.0) Risk=GlobalVariableGet("Risc");
if(Risk < 0.0) Risk = 0;
if(Risk>100.0) Risk = 100;
if(l_lotstep_60==0.01) li_0=2;
else li_0=1;
if(ld_4<1.0) ld_4=1;
double ld_80=ld_36 *(Risk/100.0)/ld_4;
double ld_ret_88=NormalizeDouble(ld_80/1000.0,li_0);
if(ld_ret_88 > l_maxlot_52) ld_ret_88 = l_maxlot_52;
if(ld_ret_88 < l_minlot_44) ld_ret_88 = l_minlot_44;
return (ld_ret_88);
if(t!=Time[0] && CandleProfit>0)
{
if((Profit(1)+Profit(0))>Take || (Profit(1)+Profit(0))<-Stop)
{
Print("Закрылись с профитом : ",(string)(Profit(1)+Profit(0))+"$");
CloseAll();
if(AfterClose>0) {trade=false;}
}
t=Time[0];
}
// профит
if(CandleProfit<1)
{
if((Profit(1)+Profit(0))>Take || (Profit(1)+Profit(0))<-Stop)
{
Print("Закрылись с профитом : ",(string)(Profit(1)+Profit(0))+"$");
CloseAll();
if(AfterClose>0) {trade=false;}
}
}
}
Как сделать так, что бы советник открывал лишь один ордер, а не пачку?
CountPos = 50;
как и просил!!!
Pesha