Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 430

 

Trader7777:

evillive:

Вот порядок поменяй, тогда и будет от старого к новому. А так пока от нового к старому, да ещё и через один иногда может получиться.


если сделать for (int i = OrdersTotal()-1; i>0; i--) то будет закрывать от нового к старому!

Trader7777:

я вот не понимаю, если лень подсказать ошибки, зачем навязывать мне функцию, которая по моей ТС мне не нужна?

Если для вас ордер с номером OrdersTotal()-1 это самый новый, а с номером 0 - самый старый, то сказать ничего больше не имею. Когда у человека глаза закрыты, они открываются только по его доброй воле, никто не заставит.

for (int i =0; i<OrdersTotal();i++) //i++ кто будет писать, Пушкин? Зачем сочинять химеру FOR + WHILE???

Кстати, а что за функцию я вам там нечаянно "навязывал"?

 
Ну что химера не принципиально, в целом должно работать, у меня вопрос только к count, он инкрементируется при баях и селлах, но при этом на него завязана проверка количества.
 
splxgf:

Почему k и n сравниваются с общим количеством закрытых ордеров?

splxgf:
Ну что химера не принципиально, в целом должно работать, у меня вопрос только к count, он инкрементируется при баях и селлах, но при этом на него завязана проверка количества.

В функцию передается параметр otype, и для данного конкретного вызова count будет считаться только для ордеров типа otype.

 
Mr.Profit:

В функцию передается параметр otype, и для данного конкретного вызова count будет считаться только для ордеров типа otype.


Функцию можно ужать в пару раз. Но это ладно, чем не нравится ее работа? это тестерный вариант? (под реал нужна отдельная функция закрытия ордеров с RefreshRates и прочим).

double n = NormalizeDouble (CTbuy/2,1);

if (count<n) 

К примеру открытых ордеров CTbuy будет четыре, делим на два, будет два. Условие сравнения закроет только один.

P.S. хотя нет, гоню... но вопрос что не нравится остается открытым.

 
splxgf:

но вопрос что не нравится остается открытым.


Даже мой вариант на предыдущей странице?
 

Народ, зачем так мучатся??? над проблемой удаления части сетки:

Загоните в массив значения тикетов в первом переборе без удаления, а потом просто пройдитесь по массиву и удалите все по тикетам - и ни чего ни куда не прыгнет и нужный порядок будет.

 
Mr.Profit:

Даже мой вариант на предыдущей странице?

void CloseHalfOrders(int otype) {
  if (otype!=OP_BUY || otype!=OP_SELL) return;
  int count = CountTrades(otype)/2; 
  for (int i =0; i<OrdersTotal();i++) 
    if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
       if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType() == otype){
         if (otype == OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,0,Lime); 
            else OrderClose(OrderTicket(),OrderLots(),Ask,0,Lime);
         count--; i--;
         if (count<1) return;
         Sleep(1000);
       }
}
Оптимизировать можно вечно.
 
splxgf:

Оптимизировать можно вечно.

if (otype!=OP_BUY ||&& otype!=OP_SELL) return;
;-)
 

Добрый день. Я новичок. Что-то странное случилось с моим счетом. Помогите, пожалуйста, советом.

В Демо не сработал стоп-лосс. Убыток по установленному SL должен быть около 50, а фактически откусилось 158. Как так получилось?

 
moloko:

Добрый день. Я новичок. Что-то странное случилось с моим счетом. Помогите, пожалуйста, советом.

В Демо не сработал стоп-лосс. Убыток по установленному SL должен быть около 50, а фактически откусилось 158. Как так получилось?

Хорошо что демо, а так это вопрос скорее к ДЦ, тут больше по кодингу форум всё же.
Причина обращения: