первая будет возвращать количество отложек, отфильтрованных по символу, типу и магику, вторая - искать самый ранний отложенный ордер и удалять его.
На каждом тике считываете количество отложек (вызываете первую функцию и её результат проверяете) и, если их стало больше заданного количества - вызываете вторую функцию, которая найдёт первую отложку и удалит её.
Пробуйте написать функции, ежли трудности будут - поможем.
первая будет возвращать количество отложек, отфильтрованных по символу, типу и магику, вторая - искать самый ранний отложенный ордер и удалять его.
На каждом тике считываете количество отложек (вызываете первую функцию и её результат проверяете) и, если их стало больше заданного количества - вызываете вторую функцию, которая найдёт первую отложку и удалит её.
Пробуйте написать функции, ежли трудности будут - поможем.
единственное решение это тот код, который я представлял ранее (с массивами). вот с ним у меня трудности, да вот только ваши рекомендации не решили проблемы...
Aleksandr Glebov: единственное решение это тот код, который я представлял ранее (с массивами). вот с ним у меня трудности, да вот только ваши рекомендации не решили проблемы...
Тот код и решение не могут быть единственными. А по моим рекомендациям я вижу вы ничего и не делали. Мне нужно за вас всё сделать, верно?
Artyom Trishkin: Тот код и решение не могут быть единственными. А по моим рекомендациям я вижу вы ничего и не делали. Мне нужно за вас всё сделать, верно?
я не знаю как искать самый ранний отложенный ордер (вторую функцию) :(
Aleksandr Glebov: я не знаю как искать самый ранний отложенный ордер (вторую функцию) :(
Попробуйте:
//+------------------------------------------------------------------+int TicketFirstOrder(string sy, int op, int mn) {
datetime time=TimeCurrent(); // проверяемое время открытияint j=EMPTY; // индекс найденного ордераfor(int i=OrdersTotal()-1; i>=0; i--) { // цикл по рыночным ордерамif(OrderSelect(i,SELECT_BY_POS)) {
if(OrderMagicNumber()!=mn) continue; // если магик не тот - далееif(OrderSymbol()!=sy) continue; // если символ не тот - далееif(OrderType()!=op) continue; // если тип не тот - далее//--- если мы тут, значит нашли подходящий ордер, проверим его времяif(OrderOpenTime()<time) { // если время ордера меньше, чем в i...
time=OrderOpenTime(); // ... запомним новое время,...
j=i; // ... запомним индекс ордера в списке
}
}
}
//--- после цикла, если возможно выбрать ордер по индексу j...if(OrderSelect(j,SELECT_BY_POS)) return(OrderTicket()); // ... вернём тикет найденного ордераreturn(j); // если мы тут, значит не нашли ни одного подходящего ордера - возвращаем -1 (EMPTY)
}
//+------------------------------------------------------------------+
Покажи код, как это реализовать
И проглоти? :)
Вам нужно две функции:
первая будет возвращать количество отложек, отфильтрованных по символу, типу и магику,
вторая - искать самый ранний отложенный ордер и удалять его.
На каждом тике считываете количество отложек (вызываете первую функцию и её результат проверяете) и, если их стало больше заданного количества - вызываете вторую функцию, которая найдёт первую отложку и удалит её.
Пробуйте написать функции, ежли трудности будут - поможем.
И проглоти? :)
Вам нужно две функции:
первая будет возвращать количество отложек, отфильтрованных по символу, типу и магику,
вторая - искать самый ранний отложенный ордер и удалять его.
На каждом тике считываете количество отложек (вызываете первую функцию и её результат проверяете) и, если их стало больше заданного количества - вызываете вторую функцию, которая найдёт первую отложку и удалит её.
Пробуйте написать функции, ежли трудности будут - поможем.
единственное решение это тот код, который я представлял ранее (с массивами). вот с ним у меня трудности, да вот только ваши рекомендации не решили проблемы...
Тот код и решение не могут быть единственными. А по моим рекомендациям я вижу вы ничего и не делали. Мне нужно за вас всё сделать, верно?
я не знаю как искать самый ранний отложенный ордер (вторую функцию) :(
я не знаю как искать самый ранний отложенный ордер (вторую функцию) :(
Попробуйте:
не проверял, писал "на коленке"
Я ведь давал уже код. В него нужно лишь вписать критерий, по которому Вы считаете более ранний ордер: по цене или времени.
Попробуйте:
не проверял, писал "на коленке"