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

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

переделал следующим образом

int MAX()
{
if (Hour()==10)
        {
      
        for(i=0; i<=9; i++)
        double MAX1 = High [iHighest(Symbol(), PERIOD_H1,MODE_CLOSE,i,0)];
        }
        return(MAX1);
        
}

 ошибки уже не выдает, но и цену не определяет, вернее определяет но не правильно, в чем проблема?

 
Sergstuddek:

переделал следующим образом

 ошибки уже не выдает, но и цену не определяет, вернее определяет но не правильно, в чем проблема?

Он у вас будет искать индекс бара с максимальной ценой в последних 9 барах,  при условии что вы запустите программу в 10 часов. Hour() -- это время запуска программы (серверное).

P.S. Точнее не индекс, а максимальную цену (High) этого бара.

Файлы:
 

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

#define MAGIC 1234
#define IDENT "mo_bidir"

extern int lots = 1;
extern int stop_loss = 76; //
extern int take_profit = 750; //
extern int steps = 5;// Шаг отложенных ордеров

int start(){

if (OrdersTotal() == 0){
OrderSend(Symbol(), OP_BUY, lots ,Ask, 3, Ask - stop_loss * Point, Bid + take_profit * Point, IDENT, MAGIC, 0, Blue);
OrderSend(Symbol(), OP_SELL, lots ,Bid, 3, Bid + take_profit * Point, Ask - take_profit * Point, IDENT, MAGIC, 0, Red);
OrderSend(Symbol(), OP_BUYSTOP, 0.05*lots,Ask+steps*Point, 3, Ask + stop_loss * Point, Bid + take_profit * Point, IDENT, MAGIC, 0, Blue);
OrderSend(Symbol(), OP_SELLSTOP, 0.05*lots,Bid-steps*Point, 3, Bid - take_profit * Point, Ask - take_profit * Point, IDENT, MAGIC, 0, Red);
}
return(0);
} 
 
samaelfess:

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



У вас вместо Bid + stop_loss стоит Bid + take_profit. А в отложенных для OP_BUYSTOP Ask + stop_loss, вместо  Ask - stop_loss и для OP_SELLSTOP -- Bid - take_profit вместо Bid + take_profit.

И все цены ненормализованы. 

P.S. Интересно, а с не другими сл и тп он работает? 

 
спасибо буду внимательнее.
 
rigonich:

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

а какую вы проверку поставили?!
 
Ekburg:

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

Попробуйте делать проверку перед модификацией таким образом:

      double Erunda=16.0*Point;// от 12 для пятизнаков, от 2 для четырех
//
      if(MathAbs(OrderStopLoss()-sl)<Erunda && MathAbs(OrderTakeProfit()-tp)<Erunda){нет_необходимости_модифицировать;}
      else { модифицировать;}

 
Sepulca:

Попробуйте делать проверку перед модификацией таким образом:

 


результат тот же.. а что это за функции, какой в них смысл? не разу раньше не встречал и не пользовал
 
Desead:

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

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

Вот пример удаления ордеров, в том числе и отложенных (удалял вот этим):

В приведённом Вами коде присутствуют (в фильтре отбора) не все отложенники. Ещё вариант ошибки: проверьте Магик, получаемый отложками при открытии (в своём коде).

 
Ekburg:

Спасибо. В кодбазе лазил, находил что то, пытался подставлять, менял так сяк, читал разбирал тысячи строк кода профи и не только, выдаёт ошибку 1 при модификации и всё тут, чёрт знает что делать. сталкивался много раз с различными трудностями в написании и последующей работе советника, но решать стараюсь их сам, иначе опыта не получаю нормального, читал справки, перечитал учебник, и решал проблемы, стал по другому немного мыслить чем когда начинал, но с этой проблемой самостоятельно справиться не получилось, поэтому и обратился к Вам, профессионалам! Трейлин писать бы не стал, если бы это не нужно было бы для работы советника:)
Позвольте Вам не поверить (что Вы всё перечитали или "так читали") - вопрос про ошибку № 1 освещён в учебнике и НЕОДНОКРАТНО обсуждался на форуме. Ответ найдёте здесь.
Причина обращения: