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

 
laveosa:
Всем доброго времени суток, подскажите как узнать как закрылся последний ордер, со стоппом или профитом. Тут как я понимаю надо использовать OrdersHistoryTotal но как именно подскажите пожалуйста или приведите пример буду весьма благодарен спс.

Пример есть как раз в описании функции  OrdersHistoryTotal 

 
kakin:

Спасибо. Я тоже искал и думал.

 Виктор, может Вы еще знаете где обучающие статьи по МКЛ от Роша найти?


Они на Альпари лежат. Рош выкладывал ссылки. Искать лень
 
Lyuk:

Простой вопрос , ответа не нашел.

Как в текстовый файл дописать новые данные (НЕ с новой строки !!!, а в ту же строчку!)

Например есть файл с массивом такого вида: 382;1;-1;1;1;-1;1;1;-1;1;-1;1;-1;1;...;1;crlf

нужно добавить вот так : 383;1;-1;1;1;-1;1;1;-1;1;-1;1;-1;1;...;1;-1;crlf

FileWrite() добавляет лишние crlf, кроме того не знаю как изменить первое число.

Чтобы много не возиться с расчленением файла, прочитать его в массив (строка или парсить), исправить, записать обратно.
 
Zhunko:
Чтобы много не возиться с расчленением файла, прочитать его в массив (строка или парсить), исправить, записать обратно.
Спасибо, видимо придется так и сделать (перезапись с очисткой ), но все же может подскажите как "расчленять" ?
 
Vinin:

Они на Альпари лежат. Рош выкладывал ссылки. Искать лень
ОК. Спасибо. Буду искать тщательнее. А то вчера не нашел.
 
Lyuk:
Спасибо, видимо придется так и сделать (перезапись с очисткой ), но все же может подскажите как "расчленять" ?

В общем случае эти файлы не предназначены для редактирования. Если файл маленький, то лучше его переписать заново. Большие файлы надо через маппинг обрабатывать, чтобы быстрее было.

Расчленять файл надо с помощью индексирования разделителей. Подготовка индексов долгая, но потом работает быстро.

 

Немного подвис над реализацией алгоритма выставления ордера. 

Суть в том, что есть тикет, я включаю перебор с условие на поиск тикета:

for(int ot=0; ot<=OrdersTotal(); ot++)
 {
  if(OrderSelect(ot,SELECT_BY_POS)==true)
   {
     if(OrderMagicNumber()==magic)
      {
       if(УСЛОВИЕ МОДИФИКАЦИИ)
        {
         МОДИФИКАЦИЯ
        }
      }
   }
 }

Если какой либо из ордеров соответствует мэджику, то мы его модифицируем. 

Есть другая задача: если ни один из ордеров не соответствует мэджику, то необходимо выставить новый отложенный ордер. if(OrderMagicNumber()!=magic) здесь, получается, не прокатит. 

Каким образом можно реализовать данное условие не прибегая к сторонним пользовательским функциям?  

 

Всем привет. Люди помогите разобраться, хочу узнать номера тикетов ордеров что были закрыты со стопам вот что придумал, пишет -1 и на этом все, подскажите пожалуйста что не так спс. 

for(int i=0;i<history;history=0)
     {
     if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true)
       {
       hi_stop=OrderStopLoss();
       
       if(Bid<hi_stop)ticket=OrderTicket();
       }
     }
  if(ticket_caunt!=ticket)
    {
    Print("___________________________________________________ticket-",ticket);
    ticket_caunt=ticket;
    }  
 
laveosa:

Всем привет. Люди помогите разобраться, хочу узнать номера тикетов ордеров что были закрыты со стопам вот что придумал, пишет -1 и на этом все, подскажите пожалуйста что не так спс. 

for(int i=0;i<history;history=0)
     {
     if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true)
       {
       hi_stop=OrderStopLoss();
       
       if(Bid<hi_stop)ticket=OrderTicket();
       }
     }
  if(ticket_caunt!=ticket)
    {
    Print("___________________________________________________ticket-",ticket);
    ticket_caunt=ticket;
    }  
Попробуйте обыграть  (отредактировать под свои нужды) ф-ии Ким И.В isCloseLastPosByStop - Возвращает флаг закрытия последней позиции по стопу

 и NumberOfPositions - Возвращает количество позиций, да и другие гляньте - мож подойдут к решению Вашего вопроса...

 
midorum:
iLow
спс
Причина обращения: