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

 
Roger:


Можешь попробовать так

Честно, сам не пробовал.


Ну, да, только StringLen(str), наверное сместит дескриптор на длинну строки, но от конца (т.е. с новой строки) строки...

 
BBSL:


Ну, да, только StringLen(str), наверное сместит дескриптор на длинну строки, но от конца (т.е. с новой строки) строки...


Извини, не въезжаю. :-(
 
Sergey_Rogozin:

Скрипт запустил. Спасибо.

Результат: выдает номера баров со стрелками, но при этом пишет, что значения буфера = 0.0000000

Вот так вота!.

.........................................

Оставлю до лучших времен. На сегодня хватит.

Всё-то, блин, у вас не слава Богу...


На остров!!! :)

 
Roger:

Извини, не въезжаю. :-(


Смотри, если мы делаем FileClose(p);

А потом, FileSeek(p, (любое положительное значение), SEEK_END);, то мы смещаем дескриптор на (любое положительное значение), но с новой строки, я дума, что так... Поэтому, может быть нужно взять FileSeek(p, -1, SEEK_END); и проверить его, может сработает...

 
FileClose() слишком рано поставил, убери его в конец. FileSeek если стоит SEEK_END, то считается от конца.
 
Roger:
FileClose() слишком рано поставил, убери его в конец. FileSeek если стоит SEEK_END, то считается от конца.


А вот так неполучиться...

Всмысле, я так не могу по логике программы сделать...

Дописать кусочек данных, нужно буть из другого конца программы, вызывающегося раз в n тиков

Да и некрасиво это поток открытым держать...((

Я думаю FileSeek(p, -1, SEEK_END); прокатит, через пару часов попробую))

 

Всем привет еще раз. Подскажите, я запускаю следующий код. Программа успевает выставить несколько ордеров (на тестере), прежде чем находит ордер и ставит флаг. Это особенность тестера? Я подразумевал, что код исполняется линейно. В чем тут фокус? Заранее спасибо, друзья!


for(int i=1 ; i <= OrdersTotal() ; i++)
   {
   if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES))
      {
      if(OrderOpenPrice()-(p1+more) == 0)
         {
         ordersethigh1=true;
         break;
         }
      }
   }
     
if((ordersethigh1==false) && (p2-price>pointsclose))
   {
   OrderSend(Symbol(),OP_SELLLIMIT,baselot,p1+more,3,NULL,NULL,"Comment",0001,0,White);
   }
 
Pyro:

Всем привет еще раз. Подскажите, я запускаю следующий код. Программа успевает выставить несколько ордеров (на тестере), прежде чем находит ордер и ставит флаг. Это особенность тестера? Я подразумевал, что код исполняется линейно. В чем тут фокус? Заранее спасибо, друзья!




Фокус в том, что условие не выполняется почти никогда. Поставьте <=Point*0.5 вместо ==0 и жизнь наладится. Да, и еще модуль разности в левой части.
OrderOpenPrice()-(p1+more) == 0
 

tara


Интересно получается, ведь цена установки ордера у меня нормализована до 4-х знаков, тоесть долей пункта там быть не может. Почему так? И да, стало работать как надо! THX

 
Pyro:

Всем привет еще раз. Подскажите, я запускаю следующий код. Программа успевает выставить несколько ордеров (на тестере), прежде чем находит ордер и ставит флаг. Это особенность тестера? Я подразумевал, что код исполняется линейно. В чем тут фокус? Заранее спасибо, друзья!

Тот код, который я вам набросал на 277 странице (предпоследний пост на странице) не подошёл к вашей задаче?

Там с проверками и нормализацией.

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