[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 37

 
nuan:
Вопрос, как програмно закрывать все ордера, например через каждые 30 минут?

datetime prevtime;
int Magic=11111;
int slippage=5;

//=====================
 int start(){
 
    datetime TimeM30=iTime(NULL,30,0);
    if(TimeM30==prevtime) return(0); 
    prevtime = TimeM30;   
    CloseAllPos();
  return(0);
 }
//=====================
 void CloseAllPos(){
   double maxlot=0;
   for(int i=OrdersTotal()-1; i>=0; i--){
     if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES))continue;
     if(OrderSymbol()!=Symbol())continue;
     if(OrderMagicNumber()!=Magic)continue; 
      if(maxlot<OrderLots()){ 
         maxlot=OrderLots();
         if(OrderType()==OP_BUY)OrderClose(OrderTicket(),maxlot,NormalizeDouble(Bid, Digits),slippage,Yellow);
         if(OrderType()==OP_SELL)OrderClose(OrderTicket(),maxlot,NormalizeDouble(Ask, Digits),slippage,Yellow);
  } } }
 
Спасибо
 
Заменил цены закрытия на цены открытия - результат идентичный предыдущему, разве что теперь линия эквити строго над линией баланса. Немного уменьшилось кол-во сделок и прибыль, зато ситуация еще больше стабилизировалась. На исследуемом отрезке убыточных сделок нет.
 
Vinin:


Если я правильно понял, то с проверкой условия наличия ордеров в рынке? -

...
if (OrderType()<2) 
//здесь  корректировка размера позиций с учетом ввода/вывода


Интересная штука! А полный код можете выложить? Не совсем ясно, как ордера завязаны на вводимых/выводимых средствах. А можно определить, сколько средств было положено на счет изначально, так скажем начальный баланс без пересчета истории закрытых позиций? Не все брокеры предоставляют всю историю торговли, некоторые не старше 1-го месяца, потому пересчет доходности советника идет неправильно: дату начала торгов определяет верно, а баланс - тот, который был месяц назад. В итоге месячный профит растягивается на весь период торговли.

 
nuan:
Вопрос, как програмно закрывать все ордера, например через каждые 30 минут?

datetime prevtime;
int Magic=11111;
int slippage=5;

//=====================
 int start(){
 
    datetime TimeM30=iTime(NULL,30,0);
    if(TimeM30==prevtime) return(0); 
    prevtime = TimeM30;   
    CloseAllPos();
  return(0);
 }
//=====================
 void CloseAllPos(){
   double maxlot=0;
   for(int i=OrdersTotal()-1; i>=0; i--){
     if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES))continue;
     if(OrderSymbol()!=Symbol())continue;
     if(OrderMagicNumber()!=Magic)continue; 
      if(maxlot<OrderLots()){ 
         maxlot=OrderLots();
         if(OrderType()==OP_BUY)OrderClose(OrderTicket(),maxlot,NormalizeDouble(Bid, Digits),slippage,Yellow);
         if(OrderType()==OP_SELL)OrderClose(OrderTicket(),maxlot,NormalizeDouble(Ask, Digits),slippage,Yellow);
  } } }


чет он не работает , закрывает в секунду
 
forexnew:


Если я правильно понял, то с проверкой условия наличия ордеров в рынке? -


Интересная штука! А полный код можете выложить? Не совсем ясно, как ордера завязаны на вводимых/выводимых средствах. А можно определить, сколько средств было положено на счет изначально, так скажем начальный баланс без пересчета истории закрытых позиций? Не все брокеры предоставляют всю историю торговли, некоторые не старше 1-го месяца, потому пересчет доходности советника идет неправильно: дату начала торгов определяет верно, а баланс - тот, который был месяц назад. В итоге месячный профит растягивается на весь период торговли.


Наверное, все-таки это не так.
В терминале откройте закладку "История Счета", кликните правой кнопкой, выберите "Вся история".
История закачается вся с момента открытия счета.
 
forexnew:


Если я правильно понял, то с проверкой условия наличия ордеров в рынке? -


Интересная штука! А полный код можете выложить? Не совсем ясно, как ордера завязаны на вводимых/выводимых средствах. А можно определить, сколько средств было положено на счет изначально, так скажем начальный баланс без пересчета истории закрытых позиций? Не все брокеры предоставляют всю историю торговли, некоторые не старше 1-го месяца, потому пересчет доходности советника идет неправильно: дату начала торгов определяет верно, а баланс - тот, который был месяц назад. В итоге месячный профит растягивается на весь период торговли.

Здесь речь не об этом, но о том, чтобы программно отслеживать были ли доливки/выводы средств на счет/со счета к определеному времени. Нет еще никакого кода, есть базовая формула расчета корректировки объема позиций здесь. (Количество (по общему размеру средств) доливок/выводов - в ней завязано)
 
nuan:


Что значит "закрывает в секунду"?
Долго? Или что?

 

charter значит что закрывает ордер не через 30 минут а в ту же секунду.


В коде поставил как у тебя в примере


datetime TimeM30=iTime(NULL,30,0);
    if(TimeM30==prevtime) return(0); 
    prevtime = TimeM30;   
    CloseAllPosTime();
По другим причинам робот никак не закрывает, т.е. не по стопу не по профиту.


1 2011.07.29 00:00 buy 1 0.01 1.4328 1.3328 1.5328 0.00 1000.00
2 2011.07.29 00:01 close 1 0.01 1.4327 1.3328 1.5328 -0.10 999.90
3 2011.07.29 00:01 buy 2 0.01 1.4329 1.3329 1.5329 0.00 999.90
4 2011.07.29 00:01 close 2 0.01 1.4326 1.3329 1.5329 -0.30 999.60
5 2011.07.29 00:01 buy 3 0.01 1.4328 1.3328 1.5328 0.00 999.60
6 2011.07.29 00:03 close 3 0.01 1.4327 1.3328 1.5328 -0.10 999.50
7 2011.07.29 00:03 buy 4 0.01 1.4329 1.3329 1.5329 0.00 999.50
8 2011.07.29 00:03 close 4 0.01 1.4329 1.3329 1.5329 0.00 999.50


 
Roman.:
Здесь речь не об этом, но о том, чтобы программно отслеживать были ли доливки/выводы средств на счет/со счета к определеному времени. Нет еще никакого кода, есть базовая формула расчета корректировки объема позиций здесь. (Количество (по общему размеру средств) доливок/выводов - в ней завязано)

Я понял.

А если считать открытие счета на 0 долларов - началом, а 1-е пополнение баланса - доливкой. Можно определить программно все доливки (в том числе и первую), которые были сделаны на счет?

Причина обращения: