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

 
rigonich:

Попробуйте ту функцию которую я оставил вам в прикрепленном файле на предыдущей страничке. я ее немного переделал, но проверить мне ее нечем,нет советника,куда бы я мог ее вставить. и стукните, что получилось. А то ведь опыта у меня тоже нет, MQL это единственный язык, который я немного знаю, изучал его по справке в МТ и разбирая чужие коды из кодобазы, теперь чувствую, что знаний и опыта не хватает, вот и полез за ними на форум. Смотрю,кто что спрашивает, пытаюсь решать возникающие у других проблемы, понемногу набираюсь опыта и зарабатываю себе моральное право получать ответы на свои вопросы. 

результат тот же.. ошибка 1
 
Люди добрые подскажите как работать с массивами, нужно выбрать максимальное и минимальное значения закрытия и открытия бара, во временном промежутке с 1.00 до 10.00, я пытался сделать так, но что то не то.
int MAX()
{
if (Hour()==10)
        {
      
        for(i=0; i<=9; i++)
        MAX1 = High [iClose(NULL,PERIOD_H1,i)];
        }
        return(MAX1);
        
}
но что то не то. Выдает '[' - array index is to be an integer C:\Program Files\InstaTrader\experts\Ïðîáîé19 EUR-JPY.mq4 (61, 21)
Что неправильно, как исправить
 
Ekburg:

Спасибо. В кодбазе лазил, находил что то, пытался подставлять, менял так сяк, читал разбирал тысячи строк кода профи и не только, выдаёт ошибку 1 при модификации и всё тут, чёрт знает что делать. сталкивался много раз с различными трудностями в написании и последующей работе советника, но решать стараюсь их сам, иначе опыта не получаю нормального, читал справки, перечитал учебник, и решал проблемы, стал по другому немного мыслить чем когда начинал, но с этой проблемой самостоятельно справиться не получилось, поэтому и обратился к Вам, профессионалам! Трейлин писать бы не стал, если бы это не нужно было бы для работы советника:)

Чтобы не было ошибки 1 надо проверять параметры передаваемые в функцию модификации перед вызовом функции. Если хотя бы один из них не равен параметрам модифицируемого ордера -- можно вызывать функцию  OrderModify(), в противном случае -- выход или будет ошибка 1. 
 
rigonich:

Чтобы не было ошибки 1 надо проверять параметры передаваемые в функцию модификации перед вызовом функции. Если хотя бы один из них не равен параметрам модифицируемого ордера -- можно вызывать функцию  OrderModify(), в противном случае -- выход или будет ошибка 1. 

в том то и дело что там всё норм! я для этого принты поставил что бы во время теста отследить какие  значения передаются в функцию модификации, там всё норм, стоп другой, ни чего лишнего не кидается, всё в рамках допустимого сервом, да и опреаторы в коде выше не дают передавать те же значения..
 

Нужно нормализовать график цен, любой валютной пары на выбор. Нужно для индикатора. Пробовал делить текущее значение на предыдущее-получаю некий осциллятор вокруг 1. Это не то, мне необходимо чтобы характер графика сохранился. Пришла в голову мысль что надо перевести график из абсолютной шкалы значений в относительную, то есть тогда я буду видеть процентное изменение котировки. Реализовал. Это уже лучше и практически то что надо. Но конечное желание у меня нормализовать котировки в диапазоне [0:1] . И вот как сделать это последний шаг ума не приложу.вот кстати то что надо но на буржуйском-мне бы тоже самое на русском: http://people.revoledu.com/kardi/tutorial/Similarity/Normalization.html

 

и второй вопрос про удаление ордеров ,уже устал с этим бороться, не удаляются нормально все ордера и всё тут. вот цикл которым удаляю:

   for (int i=OrdersTotal()-1;i>=0;i--)
      if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
         if (OrderType()==OP_BUYLIMIT || OrderType()==OP_SELLLIMIT)
            if (OrderMagicNumber()==Magik && OrderSymbol()==Symbol())
            while(!OrderDelete(OrderTicket(),CLR_NONE)){}

 Почти всегда что то из отложенников остаётся, уже даже добавил в цикл FOR цикл WHILE и все равно остаются неудалённые ордера. Отложенников которые нужно удалять много, порядка 20, может в этом сложность какая то ?

 
Sergstuddek:
Люди добрые подскажите как работать с массивами, нужно выбрать максимальное и минимальное значения закрытия и открытия бара, во временном промежутке с 1.00 до 10.00, я пытался сделать так, но что то не то.но что то не то. Выдает '[' - array index is to be an integer C:\Program Files\InstaTrader\experts\Ïðîáîé19 EUR-JPY.mq4 (61, 21)
Что неправильно, как исправить

Предупреждение означает -- индекс массива должен быть числом типа int. Вам нужно использовать функции  iClose() и iOpen(). Определить номер бара, время открытия которого равно 1 ч. и выбрать в цикле из 10 последующих баров те, которые вам нужны.


 
Ekburg:

в том то и дело что там всё норм! я для этого принты поставил что бы во время теста отследить какие  значения передаются в функцию модификации, там всё норм, стоп другой, ни чего лишнего не кидается, всё в рамках допустимого сервом, да и опреаторы в коде выше не дают передавать те же значения..

Ну не знаю. У меня после того как поставил проверку непосредственно перед OrderModify() после OrderSelect(), ошибку 1 выдавать перестал, а раньше тоже вылазила постоянно.
 
rigonich:

Предупреждение означает -- индекс массива должен быть числом типа int. Вам нужно использовать функции  iClose() и iOpen(). Определить номер бара, время открытия которого равно 1 ч. и выбрать в цикле из 10 последующих баров те, которые вам нужны.
Спасибо за ответ. Теоретически я понимаю что Вы хотели сказать, но честно говоря как это воплотить на практике не могу понять, может у Вас есть какой нибудь пример.
 
Desead:

Нужно нормализовать график цен, любой валютной пары на выбор. Нужно для индикатора. Пробовал делить текущее значение на предыдущее-получаю некий осциллятор вокруг 1. Это не то, мне необходимо чтобы характер графика сохранился. Пришла в голову мысль что надо перевести график из абсолютной шкалы значений в относительную, то есть тогда я буду видеть процентное изменение котировки. Реализовал. Это уже лучше и практически то что надо. Но конечное желание у меня нормализовать котировки в диапазоне [0:1] . И вот как сделать это последний шаг ума не приложу.вот кстати то что надо но на буржуйском-мне бы тоже самое на русском: http://people.revoledu.com/kardi/tutorial/Similarity/Normalization.html

 

и второй вопрос про удаление ордеров ,уже устал с этим бороться, не удаляются нормально все ордера и всё тут. вот цикл которым удаляю:

 Почти всегда что то из отложенников остаётся, уже даже добавил в цикл FOR цикл WHILE и все равно остаются неудалённые ордера. Отложенников которые нужно удалять много, порядка 20, может в этом сложность какая то ?


на первый вопрос - на стохастик гляньте
 
Desead:

Нужно нормализовать график цен, любой валютной пары на выбор. Нужно для индикатора. Пробовал делить текущее значение на предыдущее-получаю некий осциллятор вокруг 1. Это не то, мне необходимо чтобы характер графика сохранился. Пришла в голову мысль что надо перевести график из абсолютной шкалы значений в относительную, то есть тогда я буду видеть процентное изменение котировки. Реализовал. Это уже лучше и практически то что надо. Но конечное желание у меня нормализовать котировки в диапазоне [0:1] . И вот как сделать это последний шаг ума не приложу.вот кстати то что надо но на буржуйском-мне бы тоже самое на русском: http://people.revoledu.com/kardi/tutorial/Similarity/Normalization.html

 

и второй вопрос про удаление ордеров ,уже устал с этим бороться, не удаляются нормально все ордера и всё тут. вот цикл которым удаляю:

 Почти всегда что то из отложенников остаётся, уже даже добавил в цикл FOR цикл WHILE и все равно остаются неудалённые ордера. Отложенников которые нужно удалять много, порядка 20, может в этом сложность какая то ?


С удалением та же беда. сейчас переделал сов, чтобы выставлял и удалял ордера по ходу движения цены, так, чтобы всегда было не больше двух отложенников в каждую сторону, так вроде работает,а по другому не хочет. Если кто знает, может подскажете, почему?
Причина обращения: