ПОМОГИТЕ КТО МОЖЕТ !!! - страница 4

 

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

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

 
Techno:
он имеет в виду что у него в одном цикле перемешаны все операции над всеми ордерами, причем от одной итерации существенно зависит результат другой, и он не может понять, почему все это не работает.

значит сначала надо отделить котлеты от мух... Я до такого хаоса не додумался :-)
 
sllawa3:

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

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


перебирай селектором открытые ордера по OrderType() и поставь счетчик:

int count=0;

if(OrderType()<2) count++;

if(count==0)

{ тут селектор - как наткнулся на OrderType()>1 - удаляй его: OrderDelete(.....); при удачном удалении (см. Документация) выставляй активный: OrderSend(...); } Элементарно, Ватсон!

я немного неправильно тебя понял: if(OrdersTotal()==0) {выставляем 2 отложника} а после этого проверка селектором типа ордера: как только нашел один<2, ищешь второй >2 и удаляешь его

 

вот тебе цикл для проверки состояния ордеров, вот после него и делай проверки и закрытия и модификации, после каждого действия оператор return чтобы цикл обновил состояние ордеров

for(int i=0;i<OrdersTotal();i++)
        {
          if(OrderSelect(i,SELECT_BY_POS)&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MAGA)
          switch(OrderType())
          {
          case 0:DB=1;break;
          case 1:DS=1;break;
          case 4:ZB=1;break;
          case 5:ZS=1;break;
          }
        }
 
ладно.. понял что мало чем поможете.. пока не увижу всё равно бесполезно советы давать.. буду искать подобный ( не работает и с этим циклом проверки.. всё осталось тем же ... и даже с несколькими циклами на каждую операцию...)
 
ЛЮБОЙ ЦИКЛ ЕСЛИ НЕ ЗАПУСТИТСЯ ПОКАЖЕТ ПОСЛЕДНЕЕ ЗНАЧЕНИЕ ПЕРЕМЕННОЙ.. А ОН НЕ ЗАПУСТИТСЯ ПРИ ОТСУТСТВИИ ОРДЕРА
 
sllawa3:
ладно.. понял что мало чем поможете.. пока не увижу всё равно бесполезно советы давать.. буду искать подобный ( не работает и с этим циклом проверки.. всё осталось тем же ... и даже с несколькими циклами на каждую операцию...)

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

затем на каждой тике (или ином интервале времени, с которым стартует советник) определяешь количество ордеров в рынке и отложенных и по их сочетаниям выполняешь нужные действия..

рынок == 0 и отложки == 0 выставляемОтложки

рынок == 0 и отложки == 2 ничего не делаем

рынок == 1 и отложки == 1 удаляем отложку

рынок == 1 и отложки == 0 тралим

это что так сложно сделать что ли ? детсад какой-то..


зы. пора бы уже забыть про о процедурном программировании - используй функции..

а то переменная сохраняет какое-то там последнее значение,честное слово смешно это..

 

В ИСТОРИИ НЕТ ПРОБЛЕМ НО КАК УЗНАТЬ ЧТО ОТКРЫТЫХ ТО НЕТ ? ЕСЛИ В СЕЛЕКТОРЕ СОХРАНЯЕТСЯ ЗНАЧЕНИЕ ПОСЛЕДНЕЕ ПОКА НЕ ПЕРЕЗАПУСТИТСЯ...

МАСЛО МАСЛЯНОЕ ПОЛУЧАЕТСЯ

 
sllawa3:
В ИСТОРИИ НЕТ ПРОБЛЕМ НО КАК УЗНАТЬ ЧТО ОТКРЫТЫХ ТО НЕТ ? ЕСЛИ В СЕЛЕКТОРЕ СОХРАНЯЕТСЯ ЗНАЧЕНИЕ ПОСЛЕДНЕЕ ПОКА НЕ ПЕРЕЗАПУСТИТСЯ...
тебе уже 3 человека по 5 раз сказали как это сделать, не понимаешь, ищи готовые, или заказывай чтобы кто-нить написал
 
ДА ПРОБЛЕМА НЕ ТОЛЬКО В ЭТОМ СОВЕТНИКЕ А В ЛЮБОМ.. ЧТО ПОКА СЕЛЕКТОР НЕ ПЕРЕЗАПУСТИТСЯ ( ПОКА НЕ ПОЯВИТСЯ ОРДЕР ) В НЁМ БУДЕТ ТОРЧАТЬ ПОСЛЕДНЕЕ ЗНАЧЕНИЕ
Причина обращения: