[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 748

 
Roger:
Попробуй перегрузить терминал.

:) Спасибо! Перезагрузка терминала не помогла, но перезагрузка собственных мозгов - ещё как! Я в советнике использую различные блоки - торговый, блок определения критериев, блок переменных, блок доп. функций и т.д., подключаемых инклудом ... Так я изменял блок торговых критериев "Критерии", а надо было "Критерии01". Вот и весь фокус... :)

ЗЫ. А я уж в барабашек поверил... :) А нужно было просто поспать...

 
itum:
ОЧЕНЬ ВАС ПРОШУ ПОМОГИТЕ !!! В следующем коде я проверяю был ли ордер прибыльный или нет ! Если нет то я подсчитываю количество !!
Если первая сделка была убыточна то запускается цикл по подсчитыванию и добавляется вечно.

Но тут такой прикол !!! Что Если сделка прибыльна то все последующие убыточные ордера подсчитывает нормально ....

double orderProf; // Счетчик количества убыточных сделок

double CalculateLots(){
double Res=0.01;
bool bProfit=true;
int PrevTime=-1;
double tmpLots;
for (int i=0;i<OrdersHistoryTotal();i++){
if (!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continue;
if (OrderSymbol()!=Symbol()) continue;
if (OrderCloseTime()<PrevTime) continue;
PrevTime=OrderCloseTime();
if (OrderProfit()>0){bProfit=true; orderProf=0;} if (OrderProfit()<0) {bProfit=false; orderProf++;}
tmpLots=OrderLots();
}


return(Res);
}
Давали ж ссыль на Игоря Кима... Там для ваших нужд оч-чень много нужностей...
 
artmedia70:
Давали ж ссыль на Игоря Кима... Там для ваших нужд оч-чень много нужностей...

ДАК ! Там одно и тоже что у меня ....

ПРОБЛЕМА в том что первый раз оно не нормально подсчитывает, а дальше нормально.... )))

помогите ...

 

Заморочка такого плана.

Индикатор в самом конце кода создает объект, который служит флагом для другого индикатора.

Надо, после создания объекта, "усыпить" индикатор, скажем, на 5 сек, после чего удалить объект и усыпить уже сек. на 60, после чего он перейдет к последнему ретурну и с новым тиком начнет сначала. 

Пытаюсь делать так 

      int pauseT=0, // 
          pause01=0, // время первой паузы
          pause02=0; // время второй паузы
         if (ObjectFind("signalG")==1) // проверка наличия
         pause01=TimeLocal()+5; // 
         {while (TimeLocal()<pause01) // цикл сравнения
         {pauseT=TimeLocal()+1;} // чем бы его занять?????
         ObjectDelete("signalG");}
         if (ObjectFind("signalG")==-1) // повтор всего для 2-ой паузы
         pause02=TimeLocal()+15;
         while (TimeLocal()<pause02)
         {pauseT=TimeLocal()+1;}

Зависает, пока, видимо, не закончится while.

Подскажите что нить умное. 

 
Abzasc:

Заморочка такого плана.

Индикатор в самом конце кода создает объект, который служит флагом для другого индикатора.

Надо, после создания объекта, "усыпить" индикатор, скажем, на 5 сек, после чего удалить объект и усыпить уже сек. на 60, после чего он перейдет к последнему ретурну и с новым тиком начнет сначала.

Пытаюсь делать так

Зависает, пока, видимо, не закончится while.

Подскажите что нить умное.

Кувалда... :):) Простите, не удержался... :)
 
artmedia70:
 Кувалда... :):) 
В качестве таймера? Он впадет в летаргический сон :)
 
Abzasc:
В качестве таймера? Он впадет в летаргический сон :)
Ну... когда нужно будет - пощекотать его - проснётся... :)
Ладно - это всё оффтоп. Если б поподробней суть... А то - один разбудить, второй уложить, третий пригвоздить...
А покормить? ... :)
 
artmedia70:
 поподробней суть
Сделать паузу в индикаторе. Типа sleep"a.
 
Abzasc:
Сделать паузу в индикаторе. Типа sleep"a.

А чем Sleep не нравится?

и ещё - при проверке наличия объекта

         if (ObjectFind("signalG")==1) // проверка наличия
вы сравниваете с номером подокна индюкатора. А если их будет два?
Лучше сравнивать с переменной, которой присваивается номер подокна нужного индюкатора.

Я так ищу:

 int WinID=WindowFind("A/D");               // Номер окна AD

А потом уже проверяю наличие подокна:

// --------------- Начертим восходящую трендовую линию (DN - экстремумы) ---------------------            
             
               if (WinID>0)   // Если окно индикатора есть на чарте (оно может иметь любой номер, кроме 0)
                  {
                     if (ObjectFind("Trend_GLine_DN")<0)     // Если объект ещё не построен
                     ObjectCreate("Trend_GLine_DN",OBJ_TREND,WinID,LowestTDN,LowestPeakDN,HighestTDN,HighestPeakDN);
                     ObjectSet("Trend_GLine_DN",OBJPROP_COLOR,Lime);
                     ObjectSet("Trend_GLine_DN",OBJPROP_TIME1,LowestTDN);
                     ObjectSet("Trend_GLine_DN",OBJPROP_PRICE1,LowestPeakDN);
                     ObjectSet("Trend_GLine_DN",OBJPROP_TIME2,HighestTDN);
                     ObjectSet("Trend_GLine_DN",OBJPROP_PRICE2,HighestPeakDN);
                  }
 
artmedia70:

А чем Sleep не нравится?

Не работает в индикаторах. Причину сделать именно так - не понимаю. Видимо, постоянно работающий индикатор должен гипнотизировать :)
artmedia70:

А если их будет два?

Не будет. Как раз от лишних окон и избавляюсь.

Проверка потом, правда, понадобится, но, надеюсь, уже для советника :) спасибо, запишем.

Причина обращения: