люди пожалуйста подскажите как правильно увеличивать объем ордера

 

в тесторе стротегий . советник нормально увеличевает объем лота до тех пор пока не достигнит объема 0,06 . начинаю я с0,01 и каждый последюший лот увеличиваю на 0,01

и как только он достигает 0,06 то все последюшие ордера открывает на 0,06 . у меня в настройках нет ограничения


вот первый способ


for(int ii=0;ii<OrdersTotal();ii++)

if(OrderSelect(ii,SELECT_BY_POS,MODE_TRADES)==true && OrderSymbol()==Symbol() )

{

if(t<OrderOpenTime()) 

{

t=OrderOpenTime();

lotsss=OrderLots();

} //Последний объём лота любой позиции

}


lotsss=lotsss+0,01;///прибавляем увеличения пример 0,01


int boyy = (int)(lotsss/lotstep); // округлили до целого числа шагов изменения лота

lotsss = (double)boyy * lotstep;  // теперь имеем правильный объем, кратный шагу изменения лота


RefreshRates();

int boy=OrderSend(Symbol(), OP_BUY, lotsss, Ask, 3, 0,0);


вот второй способ

TOTAL=OrdersTotal();//

int df=TOTAL-1;

if(OrderSelect(df,SELECT_BY_POS,MODE_TRADES)==true)

{

double lotsss = OrderLots(); //берем лот последнего ордера

lotsss=lotsss+0,01;///прибавляем увеличения пример 0,01


int boyy = (int)(lotsss/lotstep); // округлили до целого числа шагов изменения лота

lotsss = (double)boyy * lotstep;  // теперь имеем правильный объем, кратный шагу изменения лота


RefreshRates();

int boy=OrderSend(Symbol(), OP_BUY, lotsss, Ask, 3, 0,0);


два способа и оба дойдя до 0,06 больше не увеличивают. пробовал в тесторе у 2-х брокеров

даже пробовал увеличивать 






 
nazim25:

в тесторе стротегий . советник нормально увеличевает объем лота до тех пор пока не достигнит объема 0,06 . начинаю я с0,01 и каждый последюший лот увеличиваю на 0,01

и как только он достигает 0,06 то все последюшие ордера открывает на 0,06 . у меня в настройках нет ограничения

lotsss=lotsss+0,01;///прибавляем увеличения пример 0,01

int boyy = (int)(lotsss/lotstep); // округлили до целого числа шагов изменения лота

lotsss = (double)boyy * lotstep;  // теперь имеем правильный объем, кратный шагу изменения лота

#property strict

void start()
{
   double lotsss=0;
   double lotstep=0.01;

   for(int n=1; n<10; n++)
   {
      lotsss=lotsss+0.01;  //прибавляем увеличения пример 0,01
      int boyy = (int)round(lotsss/lotstep); // округлили до целого числа шагов изменения лота
      Alert("boyy=",boyy);
      lotsss = (double)boyy * lotstep;     // теперь имеем правильный объем, кратный шагу изменения лота
      Alert("lotsss=", DoubleToString(lotsss,2));
   }
}

    Попробуйте изменить так:

int boyy = (int)round(lotsss/lotstep);