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

 
demlin:
Еще один вопрос. Выражение !OrderSelect(orderIndex, SELECT_BY_POS) что означает? Не могу понять знак ! впереди ((


Это отрицание

Если выражение OrderSelect(orderIndex, SELECT_BY_POS) =истина, !OrderSelect(orderIndex, SELECT_BY_POS)=ложь

 
sergeev:

! - это булевая операция НЕ

!false = true

!true = false

Тогда все выражение: ордер НЕ выбран ???
 
Maximov7:

double C1;
// в старте
C1 = Ask;

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


Так подойдет?

int start()
{
static double C1=Ask;
 
demlin:
Тогда все выражение: ордер НЕ выбран ???

Выражение: если ордер не выбран, то переходим к следующей итерации цикла... в поиске нужного ордера для его трала... к тралу мы подходим только тогда, когда именно "наш" ордер выбран по нужному инструменту... :-))) Разбирайтесь - там сложного ничего нет. :-)))
 
Roman.:

Выражение: если ордер не выбран, то переходим к следующей итерации цикла... в поиске нужного ордера для его трала... к тралу мы подходим только тогда, когда именно "наш" ордер выбран по нужному инструменту... :-))) Разбирайтесь - там сложного ничего нет. :-)))
Большое спасибо, чрезвычайно полезная информация
 
demlin:
Большое спасибо, чрезвычайно полезная информация

Занимайтесь... :-)))
 

Заметил, что открытые или закрытые ордера перебирают двумя способами. Приведу пример с закрытыми.

Первый:

for(pos = 0; pos < OrdersHistoryTotal(); pos++)
    {  OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY);
        ... работа с ордером ...  }
 

Второй:

for(pos = OrdersHistoryTotal()-1; pos >= 0; pos--)
    {  OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY);
        ... работа с ордером ...  }

В принципе всё понятно (я правда использую только первый вариант), но есть вопросы.

Зачем во втором случае от общего кол-ва ордеров вычитают 1 (OrdersHistoryTotal()-1)?

Я правильно понимаю, что и первый и второй варианты выполняют одно и то же, но отличаются только тем, что первый начинает перебор от первого к последнему, а второй от последнего к первому в списке?

 
tol64:

Заметил, что открытые или закрытые ордера перебирают двумя способами. Приведу пример с закрытыми.

Первый:

Второй:

В принципе всё понятно (я правда использую только первый вариант), но есть вопросы.

Зачем во втором случае от общего кол-ва ордеров вычитают 1 (OrdersHistoryTotal()-1)?

Я правильно понимаю, что и первый и второй варианты выполняют одно и то же, но отличаются только тем, что первый начинает перебор от первого к последнему, а второй от последнего к первому в списке?

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

И в первом варианте отнимать единицу надо, ибо счет ордеров начинается с нуля, а это значит, что последний будет как раз OrdersHistoryTotal()-1.
int OrdersHistoryTotal() - возвращает кол-во закр позиций и удаленных ордеров в истории счета в клиент терминале.
Допустим, OrdersHistoryTotal() вернула цифру 10 - " закрытых позиций и удаленных ордеров в истории текущего счета ", при этом имеем следующую картину по закрытым и удаленным ордерам - 0,1,2,3,4,5,6,7,8,9 - всего 10 ордеров в истории, но цикл перебора организовываем не до цифры 10, но до цифры 9, при старте с "0", т.е. получается при флаге способа выбора " SELECT_BY_POS - в параметре index передается порядковый номер позиции в списке, а именно при ( OrdersHistoryTotal()-1 ) в цикле совершим перебор всех 10-ти ордеров в истории терминала.

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

П.С. Надеюсь, объяснил понятно... :-)))

 
Roman.:


Спасибо. Очень понятно. Любому будет понятно, если так объяснять.)))

Ещё один вопрос. В поиске нашёл много подобных вариантов вопроса, но у меня немного вопрос будет по другому задан.))

Рассогласование графиков. Чтобы увидеть "достоверный ???" результат мне приходиться постоянно пересчитывать таймфреймы. То есть, если вижу, что в журнале ошибки на эту тему, иду в архив котировок и пересчитываю все таймфреймы. В тестере, например, провожу тест по контрольным точкам. Всё ок. Затем допустим по сформировавшимся барам. Всё ок. И вот если снова провести тест по контрольным точкам, то опять рассогласование графиков наблюдаю в журнале. Что это за ...? ))) Есть ли что-нибудь против этой напасти?

 
tol64:


Спасибо. Очень понятно. Любому будет понятно, если так объяснять.)))

Ещё один вопрос. В поиске нашёл много подобных вариантов вопроса, но у меня немного вопрос будет по другому задан.))

Рассогласование графиков. Чтобы увидеть "достоверный ???" результат мне приходиться постоянно пересчитывать таймфреймы. То есть, если вижу, что в журнале ошибки на эту тему, иду в архив котировок и пересчитываю все таймфреймы. В тестере, например, провожу тест по контрольным точкам. Всё ок. Затем допустим по сформировавшимся барам. Всё ок. И вот если снова провести тест по контрольным точкам, то опять рассогласование графиков наблюдаю в журнале. Что это за ...? ))) Есть ли что-нибудь против этой напасти?


Конечно, есть. В помощь разбора и устранения этих ошибок. :-)))
Причина обращения: