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

 
Порвал мозг

Space:

... за одну единицу евро начинают давать меньше долларов, выходит что евро дорожает? Чего тогда всюду говорят что падает?

... за один кг помидор начинают давать меньше рублей, выходит что помидоры дорожают? Чего тогда всюду говорят что дешевеют?
 
iMAG:
Для наглядности, попробуй после оператора присваивания посмотреть на GetLastError() - должно помочь с разрулом. По крайней мере, в приведённом примере всё замечательно работает. ;)


int init()
{
//----
// i = 0;
double s[10] = {,,,3,4,5,6,7,8,9};
int i = 0;

while(i < 10)
{
s[i] = i + 10;
i++;
Print("s[i]: ", DoubleToStr(s[i], 2), " i: ", i, "GetLastError(): ", GetLastError());

Sleep(5000);
}

//----

return(0);
}

Вот нглядный пример: не присваивается значение (i + 10). С такой инициализацией, только через масив ордеров - что за секреты?


 

Stepan2

Работает

int init()
  {
//----
double s[11];
// i = 0;
int i = 0;

while(i < 10)
{
s[i] = i*10;
i++;
Print("s[i]: ", DoubleToStr(s[i], 2), " i: ", i, "   GetLastError(): ", GetLastError());

Sleep(5000);
}

   return(0);
  }

 
GaryKa:
Порвал мозг ... за один кг помидор начинают давать меньше рублей, выходит что помидоры дорожают? Чего тогда всюду говорят что дешевеют?


Т.е. доллар будь он в числителе или знаминателе, всегда ДЕНЬГИ (даже в мажорах), остальное "ТОВАР".

Так получается?

А что с кроссами? Как понять, что на что делить, при образование кросса?

Т.е. почему одна валюта обязательно в числителе, а другая в знаменателе, а не подругому?

 
r772ra:

Stepan2

Работает


что ВЫ этим хотите сказать?

ЧТО терминал зависит от БРОКЕРА!

 
Space:


Т.е. доллар будь он в числителе или знаминателе, всегда ДЕНЬГИ (даже в мажорах), остальное "ТОВАР".

Так получается?

А что с кроссами? Как понять, что на что делить, при образование кросса?

Т.е. почему одна валюта обязательно в числителе, а другая в знаменателе, а не подругому?


ПРОЦЕСС обучения следующий:

ДЕЛЕНИЕ - последовательное, но в обратном направлении

СКАЧОК - Action Script

 
Stepan2:


что ВЫ этим хотите сказать?

ЧТО терминал зависит от БРОКЕРА!

За брокера не чего не скажу, вряд ли че с брокером

А за код, может я и не прав

вы объявили массив и заполнили его

double s[10] = {,,,3,4,5,6,7,8,9}; 

вам и показывает эти цифирьки,да если double,то 1.0, 2.0 и т.д

В моем случае

double s[11];

Да он должен чуть побольше чтоб ошибки не было (4002)

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

 

Уважаемые, подскажите.Поместил два MACD (Macd1 и Macd2) в одном окне и в одном масштабе.Нахожу max и min каждого MACD только среди значений графиков,видимых в окне индикатора.Вывожу их в Comment().Всё работает,но только сигнальные линии начинают строиться с первого бара,т.е. приходится ждать,пока они не заполнят всё окно.Как решить эту проблему?И можно ли как-то оптимизировать мой корявый код?

  
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_color1 Lime
#property indicator_color2 Red
#property indicator_color3 Aqua
#property indicator_color4 DarkOrange
#property  indicator_width1  2
#property  indicator_width3  2
//--- buffers
double Macd1Buffer[];
double Signal1Buffer[];
double Macd2Buffer[];
double Signal2Buffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,Macd1Buffer);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,Signal1Buffer);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,Macd2Buffer);
   SetIndexStyle(3,DRAW_LINE);
   SetIndexBuffer(3,Signal2Buffer);
   
   IndicatorDigits(Digits);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   Comment("");
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {   
      double max1=-0.01,min1=0.01,
             max2=-0.01,min2=0.01,
             max_M1=-0.01,min_M1=0.01,
             max_M2=-0.01,min_M2=0.01,
             max_S1=-0.01,min_S1=0.01,
             max_S2=-0.01,min_S2=0.01;
             
       
 
   int bars_counted=WindowBarsPerChart()-1,
       limit;  
       limit=bars_counted;       


      
//---- macd counted in the 1-st buffer
   for(int i=0; i<limit; i++)
   

   { 
     Macd1Buffer[i]=iMA(NULL,0,6,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,12,0,MODE_EMA,PRICE_CLOSE,i);
  
           max_M1=MathMax(Macd1Buffer[i],max_M1);
           min_M1=MathMin(Macd1Buffer[i],min_M1);
  
      Signal1Buffer[i]=iMAOnArray(Macd1Buffer,Bars,5,0,MODE_SMA,i);
 
           max_S1=MathMax(Signal1Buffer[i],max_S1);
           min_S1=MathMin(Signal1Buffer[i],min_S1);         
             
           max1=MathMax(max_M1,max_S1);
           min1=MathMin(min_M1,min_S1);
             
   }          
            
      
//---- done
   //---- macd counted in the 3-st buffer   
   for(i=0; i<limit; i++) 
      
   { 
     
      Macd2Buffer[i]=iMA(NULL,0,12,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,26,0,MODE_EMA,PRICE_CLOSE,i);
 
          
           max_M2=MathMax(Macd2Buffer[i],max_M2);
           min_M2=MathMin(Macd2Buffer[i],min_M2);
           
   
      Signal2Buffer[i]=iMAOnArray(Macd2Buffer,Bars,9,0,MODE_SMA,i);

           max_S2=MathMax(Signal2Buffer[i],max_S2);
           min_S2=MathMin(Signal2Buffer[i],min_S2);  
         
           max2=MathMax(max_M2,max_S2);
           min2=MathMin(min_M2,min_S2);    
   }      
      
//---- done 
   
 
      Comment( "\n"," Баров = ",WindowBarsPerChart()-1,
               "\n"," max_M1 = ",max_M1,
               "\n"," min_M1 = ",min_M1,
               "\n"," max_S1 = ",max_S1,
               "\n"," min_S1 = ",min_S1,
               "\n"," max_M2 = ",max_M2,
               "\n"," min_M2 = ",min_M2,
               "\n"," max_S2 = ",max_S2,
               "\n"," min_S2 = ",min_S2,
               "\n"," max1 = ",max1,
               "\n"," min1 = ",min1,    
               "\n"," max2 = ",max2,
               "\n"," min2 = ",min2);
         
             
         
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
MK07:

Уважаемые, подскажите.Поместил два MACD (Macd1 и Macd2) в одном окне и в одном масштабе.Нахожу max и min каждого MACD только среди значений графиков,видимых в окне индикатора.Вывожу их в Comment().Всё работает,но только сигнальные линии начинают строиться с первого бара,т.е. приходится ждать,пока они не заполнят всё окно.Как решить эту проблему?И можно ли как-то оптимизировать мой корявый код?

Пробуйте, каждый буфер в отдельном цикле.
 
r772ra:
Пробуйте, каждый буфер в отдельном цикле.
Ага.
   for(int i=0; i<limit; i++)
   { 
     Macd1Buffer[i]=iMA(NULL,0,6,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,12,0,MODE_EMA,PRICE_CLOSE,i);
     Macd2Buffer[i]=iMA(NULL,0,12,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,26,0,MODE_EMA,PRICE_CLOSE,i);   
   }          

   for(i=0; i<limit; i++) 
   { 
      Signal1Buffer[i]=iMAOnArray(Macd1Buffer,Bars,5,0,MODE_SMA,i);
      Signal2Buffer[i]=iMAOnArray(Macd2Buffer,Bars,9,0,MODE_SMA,i);
   }      
Причина обращения: