статический массив ? - страница 5

 
ААААААААААААА! Теперь он говорит мне LOL

Так, вот что у меня получилось, что-то немного лучше с некоторыми результатами, я не совсем понимаю результаты, но я думаю, что смогу разобраться в этом и понять, почему я НИКОГДА не мог получить результат.

Спасибо

//+------------------------------------------------------------------+
//|                                                  Agent86_5min.mq4 |
//|                                                    Unfinished POS |
//|                                    
//+------------------------------------------------------------------+
#property copyright "Unfinished POS by Agent86"


//---- input parameters
extern double    TakeProfit=20.0;
extern double    Lots=0.1;
extern double    StopLoss=15.0;
extern int MagicNumber=123486;

double v1[5];
double v2[];
double v3[];
double val1;
double val2;
double val3;


//++++ These are adjusted for 5 digit brokers.

int     pips2points;    // slippage  3 pips    3=points    30=points
double  pips2dbl;       // Stoploss 15 pips    0.0015      0.00150
int     Digits.pips;    // DoubleToStr(dbl/pips2dbl, Digits.pips)

    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   if (Digits == 5 || Digits == 3)
   {    // Adjust for five (5) digit brokers.
      pips2dbl    = Point*10; pips2points = 10;   Digits.pips = 1;
   } 
   else 
    {    
      pips2dbl    = Point;    pips2points =  1;   Digits.pips = 0; 
    }
    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
     
   
    
//---- 

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return(0);
  }
   
    
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
  
  
   double   faster = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1), //MODE_MAIN
            slower = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1); //MODE_SIGNAL
            
  
          
   
    for(int i=Bars; i >= 0; i--)
     {
      val1=iFractals(NULL, 0, MODE_UPPER,i);
   
      // Print (val1, (" val1")); //will print some 0's
      if (val1 > 0)
         {        
          v1[i]=High[i];
 
         }
      else          
         {
         v1[i]=v1[i+1];
         }
        

      val2=iFractals(NULL, 0, MODE_LOWER,i);
     
      if (val2 > 0) 
         {
         v2[i]=Low[i];
         }
      else          v2[i]=v2[i+1];
       
     }   
     
     for(i=Bars; i >= 0; i--)
     {
     val1=iFractals(NULL, 0, MODE_UPPER,i);
     if(val1>0)
      {
      double v1[6];
      v1[5]=High[i];
      Print ("v1[", 5, "]= ", v1[5]);
      }
     }
     
        
                       
        
           

//---- 

 
                    
        

                
   return(0);
  }    

//+------------------------------------------------------------------+
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3312
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3315
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3301
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3301
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3302
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3296
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3293
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3292
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3293
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3292
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3284
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3299
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3306
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3325
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3361
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3343
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3399
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3419
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3422
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3422
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3398
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3374
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3375
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3378
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3387
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3389
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3389
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3383
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3373
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3372
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3368
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3356
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3366
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3369
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3386
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3361
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3301
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3296
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3297
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3297
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3297
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3301
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3303
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3314
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3307
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3307
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3302
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3301
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3294
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3297
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3292
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3292
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3292
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3293
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.329
 
Теперь я могу вернуться к выяснению того, как ссылаться на предыдущие фракталы

.

Спасибо

 
Всегда есть объяснение... нужно только найти его. :-)
 
RaptorUK:

Да, индикаторные буферы обрабатываются иначе, чем обычные массивы.

v[i] не является объявлением массива, это просто один из элементов ... но double v[]; - это массив с нулевыми элементами ... поэтому v[anything] всегда = 0

Это сбивает меня с толку.
Итак, вы можете поместить значения в массив, но поскольку он не объявлен, нет способа получить доступ к этим элементам, не зная, какой элемент был/есть, верно?

Так откуда буфер знает, как нарисовать линию v1[i], если в массиве ноль элементов. ?

Это потому, что на самом деле это просто статический bool, а не массив. То есть High[i] = True, поэтому рисуем High[i]?
Но рисует его без значения в элементе, просто True и нормально нарисовать High[i] в этот момент?

Пожалуйста, объясните, если я даже близко не понимаю.

И спасибо за обучение
 

Индикаторные буферы - это специальные массивы ... не путайте массивы и буферы, они похожи и в то же время различны.

В оригинальном коде v1[] и v2[] - это буферы, в вашем последнем коде - это массивы, когда вы объявляете массив, вы должны указать его размер, например, v1[50] имеет 50 элементов от v1[0] до v1[49]. Буфер автоматически изменяет размер, когда требуется больше элементов, и значения автоматически смещаются в буфере. Рассмотрим текущий формирующийся бар, бар 0, когда этот бар завершается, значение индикатора, связанное с этим баром, должно переместиться на индекс 1 ... это делается автоматически с помощью буферов ... если вы хотите сделать что-то подобное с массивами, вы можете, но вам придется кодировать это самостоятельно.

 
Хорошо, я понял, я просто не знал, что буферы на самом деле не одно и то же, это именно то, что мне нужно было понять, и я, вероятно, понял бы это некоторое время назад.

Спасибо
 
for(i=Bars; i >= 0; i--)
      {
      val3=iFractals(NULL, 0, MODE_UPPER,i);
      if(val3>0)
         {      
         v3[1]=High[i];
         double v3[9];
// if I put v3[1]=High[i]; here in stead of above it will not draw the line, probably because of this buffer topic again
         Print ("v1[", 1, "]= ", v3[1]);
         }
      }

Как бы то ни было, я думаю, что теперь я могу добиться некоторого прогресса.


Я вижу, что могу поместить эту строку чуть выше объявления массива, и она показывает индикатор, но выводит только 0, а если поместить ее ниже, то выводит значение

 
Могу я спросить о iFractals и когда val1>0
.

Я предполагаю, что это означает ==True и затем продолжается

Итак, в тот момент, когда это истинно, как я могу узнать это значение, поскольку простая печать будет печатать продолжающиеся изменения в значении, пока оно истинно

А также объявление массива и затем объявление элемента в массиве, например, v1[3]=High[i] результаты печати также продолжают изменяться, поскольку val1>0.

Итак, я пытаюсь понять это и как я могу заморозить время в тот момент, когда оно будет val1>0 или как я узнаю, каково фактическое значение фрактала без использования значения [i] в буфере, поскольку я не могу получить значение из буфера, так как мы обсуждали ранее, что [i] не объявляет массив и сам является необъявленным. Ну, частично необъявленным.

Итак, я полагаю, что объявление массива и присвоение значения High[i] приведет к результатам печати, которые я хочу получить, однако, оно не фиксировано, как это происходит с индикатором, так как индикатор имеет фиксированное значение и как мне воспроизвести это, чтобы использовать это значение или переименовать его в какую-то другую переменную, чтобы быть полезным.

Пожалуйста, посоветуйте.

Спасибо






 
Возможно, вам следует начать с объяснения того, что вы пытаетесь сделать ... ... не упоминая никакого кода вообще ... просто простым английским языком. Это, вероятно, сделает вещи более понятными для нас обоих... ;-)
 
RaptorUK:
Возможно, вам следует начать с объяснения того, что вы пытаетесь сделать ... ... не упоминая никакого кода вообще ... просто простым английским языком. Это, вероятно, сделает вещи более понятными для нас обоих... ;-)
LOL ok

Я думаю, я просто хочу научиться ссылаться на ифракталы, которые сам сигнал показывает на графике.
Не все вообще, а выбрать 1, или предыдущий, максимум и/или минимум и выбрать их для использования.
Для использования в своего рода схеме именования ABCD.

Поскольку iFractals, кажется, почти делает то, что я собирался создать самостоятельно для этого использования, я хотел иметь возможность дать этим фракталам имя переменной.

Чтобы я мог разработать код для обращения к этим фиксированным iFractals, как показано в индикаторе и как показано для v1[i]=High[i], который продолжает отображаться, пока не сформируется новый. Индикатор показывает значение, которое остается фиксированным

Итак, я собирался попытаться создать код, который создаст переменную, скажем, для текущего значения v1[i]=High[i], и это может быть A, но мне нужно фиксированное значение, как в индикаторе, а не скользящее значение, как в моем операторе Print.

Затем я мог бы выбрать из предыдущего High[i], чтобы отметить его как A или B, это может быть C, если (A>High[i] в то время) и так далее. Чтобы попытаться придумать хорошую схему ABCD для использования в другой части совершенно другой стратегии. Но я заметил, что многие люди используют этот тип схемы ABCD с fibs и многими другими частями и индикаторами, но я просто хотел научиться создавать базовую схему ABCD и, возможно, даже позже заставить ее рисовать линии тренда на основе этих ABCD и т. д.

И многое другое, но пока только ABCD.

Спасибо