Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 271

 
tiiga:
неа, уже второй раз сталкиваюсь, прошлый раз просто забил на это


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

j=0;

for(j=0; j<=1; j++)

 
tiiga:
неа, уже второй раз сталкиваюсь, прошлый раз просто забил на это
Чудес не бывает. Покажите весь цикл.
 
если сделать от 0 до например 3 или больше то работает а до 1 почему-то нет
 
tiiga:
если сделать от 0 до например 3 или больше то работает а до 1 почему-то нет
Дубль два: покажите весь цикл.
 

это исправленный вариант который заработал

 if (true)
               { //Alert("добавляем стаки покупки",totalstack );
               for(int g=0; g<=genofond; g++)
                //  for(j=0; j<=1; j++)
                    {  
                     if (check[g]==1){
                     if (stacked[g][1]!=1)//
                      {  
                    //    if (j==1)
                   //     {
                           totalstack+=1;
                           if (totalstack<=maxstack)
                              {
                                 for(i=1; i<=maxstack; i++)
                                    {
                                       if (istackstart[i][1]==0)
                                          {
                                             break;
                                          }
                                    }
                              }
                            else
                              {
                                maxstack+=1;
                                i=maxstack;
                              }  
                           ArrayResize(istackstart, maxstack+1);
                           ArrayResize(pstackstart, maxstack+1);
                           
                           istackstart[i][1]=del[g];
                           istackstart[i][2]=g;
                           istackstart[i][3]=j;
                          
                           pstackstart[i][1]=Bid;
                           pstackstart[i][2]=1;   //buy
                           stacked[g][j]=1;
                           Print("добавляем стаки покупки ",totalstack,"  ",maxstack );
                           }
                     //   }
                  //      else
                    //       {
                    if (stacked[g][0]!=1)//
                      {  
                           totalstack+=1;
                            if (totalstack<=maxstack)
                              {
                                 for(i=1; i<=maxstack; i++)
                                    {
                                       if (istackstart[i][1]==0)
                                          {
                                             break;
                                          }
                                    }
                              }
                            else
                              {
                                maxstack+=1;
                                i=maxstack;
                              } 
                        ArrayResize(istackstart, maxstack+1);
                        ArrayResize(pstackstart, maxstack+1);
                       istackstart[i][1]=del[g];
                        istackstart[i][2]=g;
                       istackstart[i][3]=j;
                      
                        pstackstart[i][1]=Bid;
                        pstackstart[i][2]=-1; //sell
                        stacked[g][j]=1;
                        Print("добавляем стаки покупки ",totalstack,"  ",maxstack );
                          
                     }//скобка отпроверки стка
                    }//скобка от чека
                   }//скобка от двойного цикла 
                   //  Alert("добавили стаки покупки",totalstack );
               }
а вот это не рабочий вариант
   
    if (true)
               { //Alert("добавляем стаки покупки",totalstack );
               for(int g=0; g<=genofond; g++)
                  for(j=0; j<=1; j++)
                    {  
                     if (check[g]==1){
                     if (stacked[g][j]!=1)//
                      {  
                        if (j==1)
                        {
                           totalstack+=1;
                           if (totalstack<=maxstack)
                              {
                                 for(i=1; i<=maxstack; i++)
                                    {
                                       if (istackstart[i][1]==0)
                                          {
                                             break;
                                          }
                                    }
                              }
                            else
                              {
                                maxstack+=1;
                                i=maxstack;
                              }  
                           ArrayResize(istackstart, maxstack+1);
                           ArrayResize(pstackstart, maxstack+1);
                           
                           istackstart[i][1]=del[g];
                           istackstart[i][2]=g;
                           istackstart[i][3]=j;
                          
                           pstackstart[i][1]=Bid;
                           pstackstart[i][2]=1;   //buy
                           stacked[g][j]=1;
                           Print("добавляем стаки покупки ",totalstack,"  ",maxstack );
                        }
                        else
                           {
                           totalstack+=1;
                            if (totalstack<=maxstack)
                              {
                                 for(i=1; i<=maxstack; i++)
                                    {
                                       if (istackstart[i][1]==0)
                                          {
                                             break;
                                          }
                                    }
                              }
                            else
                              {
                                maxstack+=1;
                                i=maxstack;
                              } 
                        ArrayResize(istackstart, maxstack+1);
                        ArrayResize(pstackstart, maxstack+1);
                       istackstart[i][1]=del[g];
                        istackstart[i][2]=g;
                       istackstart[i][3]=j;
                      
                        pstackstart[i][1]=Bid;
                        pstackstart[i][2]=-1; //sell
                        stacked[g][j]=1;
                        Print("добавляем стаки покупки ",totalstack,"  ",maxstack );
                           }
                     }//скобка отпроверки стка
                    }//скобка от чека
                   }//скобка от двойного цикла 
                   //  Alert("добавили стаки покупки",totalstack );
               }
 

Добрый день, проблема вот в чем. Сделал так, чтобы советник торговал в определенный промежуток времени, но не выходит - игнорирует это. Вот код. Функция времени возвращает тру, и торговля не должна идти, а на деле идёт. В чем может быть ошибка? В советнике значения:

extern string dark_TimeBegin = "23:30";

extern string dark_TimeEnd = "01:00";
bool isTradeTimeString(string tb = "00:00", string te = "00:00") 
{
  datetime dtBegin, dtEnd;        // Время начала и окончания работы
  int      hc, he;                // Часы текущего времени и окончания работы

  dtBegin=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+tb);
  dtEnd  =StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+te);
  hc     =TimeHour(TimeCurrent());
  he     =TimeHour(dtEnd);
  if (dtBegin>=dtEnd) 
  {
    if (hc>=he) dtEnd+=24*60*60; else dtBegin-=24*60*60;
  }

  if (TimeCurrent()>=dtBegin && TimeCurrent()<=dtEnd) return(True);
  else return(False);
}
   if(isTradeTimeString(dark_TimeBegin, dark_TimeEnd) == true)
   {  if(((CountBuy() > 0) || (CountSell() > 0)) && (NormalizeDouble(MarketInfo(Symbol(), 13) ,0) <= trade_spread))
      {
      dark_Close_Sell();
      dark_Close_Buy();
      //Order_limit();
      }
   }
      if(isTradeTimeString(dark_TimeBegin, dark_TimeEnd) == false)
         {
            if((isTrade(time_start_last_new, time_end_last_new) == false) && ((CountBuy() > 0) || (CountSell() > 0)) && (NormalizeDouble(MarketInfo(Symbol(), 13) ,0) <= trade_spread))
            {
               Close_Sell();
               Close_Buy(); 
               //Order_limit();
            }
            if((isTrade(time_start_last_new, time_end_last_new) == true) && (NormalizeDouble(MarketInfo(Symbol(), 13) ,0) <= trade_spread))
            {
               Order_send();
               Close_Sell();
               Close_Buy();               
            }
         }

      Order_limit();
 
tiiga:

это исправленный вариант который заработал

Что мешает так вот написать?

for(int g=0; g<=genofond; g++)
   Print("Перед циклом j = "+j);
   for(j=0; j<=1; j++) {  
      Print("В цикле j = "+j);
      if (check[g]==1) {
 
Elleremo:

Я выбрал бесплатный и именно поэтому задал вопрос. Будьте добры, скажите новичку, в чем кроется ваша нелюбовь к синтетике,
или отошлите меня к теме,раскрывающей причину вашей нелюбви к ним . Спасибо )
Есть тонкость работы с синтетикой. Один и тот же "механизм" пострения на истории и непосредственно в реальном времени будет строить разные свечи: и чем выше TF, тем больше расхождение (на истории мы не знаем как двигалась цена внутри свечи). Из этого следует, что тестирование на "исторической синтетике" не применимо к торговле на "реальной синтетике".
 
VladislavVG:


"на" - это регионально, а Украина не входит в состав РФ.

«В 1993 году по требованию Правительства Украины нормативными следовало признать варианты в Украину (и соответственно из Украины). Тем самым, по мнению Правительства Украины, разрывалась не устраивающая его этимологическая связь конструкций на Украину и на окраину. Украина как бы получала лингвистическое подтверждение своего статуса суверенного государства, поскольку названия государств, а не регионов оформляются в русской традиции с помощью предлогов в (во) и из...» (Граудина Л. К., Ицкович В. А., Катлинская Л. П. Грамматическая правильность русской речи. М.: Наука, 2001. С. 69).

Пока по инерции некоторые продолжают старую традицию. ;)

Вот про это говорю, что по-русски - "на", по-украински может быть, как угодно. Владислав, это формальность - входит/не входит. Украина исконно русская территория. Населена русскими. Не надо межеваться, хотя бы на форуме. Как бы украинцы с национальным уклоном себя не называли, они остануться русскими. Совсем не надо ссориться из-за этого. Есть национальность - русские мы! Есть этносы (великоросы, малоросы, белоросы).

VOLDEMAR:


Не менялось, но оно не правильно мы же не говорим поехать НА КАНАДУ, НА ФИНЛЯНДИЮ, НА ИНДИЮ, мы говорим В КАНАДУ, В ЧЕХИЮ, так же это применительно и к Украине ...

Предлог НА у нас чаще встречается в посланиях типа иди НА ... ))))

Откуда пошло не знаю. Везде в русском языке "на Украину". Скорее всего это из-за этимологии слова "Украина" == у края.

 
Zhunko:

Вот про это говорю, что по-русски - "на", по-украински может быть, как угодно. Владислав, это формальность - входит/не входит. Украина исконно русская территория. Населена русскими. Не надо межеваться, хотя бы на форуме. Как бы украинцы с национальным уклоном себя не называли, они остануться русскими. Совсем не надо ссориться из-за этого. Есть национальность - русские мы! Есть этносы (великоросы, малоросы, белоросы).

Откуда пошло не знаю. Везде в русском языке "на Украину". Скорее всего это из-за этимологии слова "Украина" == у края.

Да о чём вообще весь сыр-бор. Все мы славяне. Одна Украина как государство не желает это признать. Они, блин, украинцы.

И вообще - таким темам место в курилке само то.

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