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

 
Ereke:
Я ВАС поздравляю !

Поздравлять Вас как раз надо. Хотя выстрел в воздух никому не мешает.
 
Vinin:

Поздравлять Вас как раз надо. Хотя выстрел в воздух никому не мешает.
Виктор, у тя скайп что ли барахлит, иль связь помирает? Что там про ЗЗ ?
 
2011.01.24 17:18:44 TestGenerator: unmatched data error (volume limit 971 at 2011.01.19 10:00 exceeded)
Не подскажете что это за ошибка?? В журнале при тесте валом идёт, но ордера открываются.
 
artmedia70:
Виктор, у тя скайп что ли барахлит, иль связь помирает? Что там про ЗЗ ?

Да говорю, может ЗЗ сделать специальный. А скайп не мой помирает. У меня ты зелененький
 
r.ig.h:
2011.01.24 17:18:44 TestGenerator: unmatched data error (volume limit 971 at 2011.01.19 10:00 exceeded)
Не подскажете что это за ошибка?? В журнале при тесте валом идёт, но ордера открываются.

Истории нету, или ошибки в истории
 
Помогите скрипт подкрутить,что бы значит открывал сделку немедленно,по текущей цене с рынка. А то чёт,я уже запарился Растояние от рына в 5 пипок не устраивает,а так что бы хотя бы с отклонением в своп.
Файлы:
 

Добрый вечер !

Что-то не могу понять смысл

shift - Индекс получаемого значения из индикаторного буфера (сдвиг относительно текущего бара на указанное количество периодов назад).

в индикаторе Fractals. Если я правильно думаю - индикатор показывает значение экстремума среди пяти баров с условием, что максимумы двух предыдущих и двух последующих баров (для случая фрактала вверх) меньше (хотя на графике "птичка" фрактала отображается и когда максимум крайнего левого бара из этих пяти = экстремуму ...... а не меньше его). Так зачем тогда shift ? Что тогда будет выдаваться, если его поставить не = 3, а = 2 или 5 ?

 

Составил вот такой код по входу в рынок после пробития первого фрактала после излома МА. Но при проверке на тестировании открывает сделки не везде, хотя по условию, вроде, должен. Никак не могу понять, что не так ? В реальном режиме (проверяя на М1 не могу найти ошибку).

 extern int Period_MA = 5,                 // Период расчётной МА
            PERIOD=1,                      // Период текущего графика (таймфрейм)
            MODE=3,                        // Метод усреднения из методов скользящего среднего
            PRICE_TYPE=0,                  // Используемая цена из ценовых констант
            Прибыль=10,
            Ограничение=55;

 double 
        upfractal,
        dwfractal,
        SL[10001]={0,,10000},
        TP[10001]={0,,10000};
        
 bool   Двверх=false,
        Дввниз=false,
        Сделкавверх=false,
        Сделкавниз=false;
        
  int   A,                             // Переменная массива вверх
        B,                             // Переменная массива вниз
        BarTime,                       // Время текущего бара
        ticketup,                      // Ордер вверх
        ticketdown,                    // Ордер вниз
        Tвверх,                        // Время сделки вверх
        Tвниз;                         // Время сделки вниз;
        
 color вверх = SpringGreen,           // Цвет сделки вверх
       вниз = Red;                    // Цвет сделки вниз       
        
int start()
  {
  
  string Symb=Symbol();         // Финанс. инструмент
  
  double  Lot=0.01;              // Лот
  
    if(BarTime!=Time[0])           // Условие для того, чтобы программа считала только на начале бара, а не на каждом тике
      {
        double MA_1 = iMA(Symbol(),PERIOD,Period_MA,0,MODE, PRICE_TYPE, 1);
        double MA_2 = iMA(Symbol(),PERIOD,Period_MA,0,MODE, PRICE_TYPE, 2);
        double MA_3 = iMA(Symbol(),PERIOD,Period_MA,0,MODE, PRICE_TYPE, 3);
        double MA_4 = iMA(Symbol(),PERIOD,Period_MA,0,MODE, PRICE_TYPE, 4);
        double MA_5 = iMA(Symbol(),PERIOD,Period_MA,0,MODE, PRICE_TYPE, 5);
        double MA_6 = iMA(Symbol(),PERIOD,Period_MA,0,MODE, PRICE_TYPE, 6);
        double MA_7 = iMA(Symbol(),PERIOD,Period_MA,0,MODE, PRICE_TYPE, 7); 
        double MA_8 = iMA(Symbol(),PERIOD,Period_MA,0,MODE, PRICE_TYPE, 8); 
               
//--------------------------------------------------------------------
        if(NormalizeDouble(MA_8,Digits)>NormalizeDouble(MA_2,Digits)
        && NormalizeDouble(MA_7,Digits)>=NormalizeDouble(MA_2,Digits)
        && NormalizeDouble(MA_6,Digits)>=NormalizeDouble(MA_2,Digits)
        && NormalizeDouble(MA_5,Digits)>=NormalizeDouble(MA_2,Digits) 
        && NormalizeDouble(MA_3,Digits)>=NormalizeDouble(MA_2,Digits)
        && NormalizeDouble(MA_4,Digits)>=NormalizeDouble(MA_2,Digits)
        && NormalizeDouble(MA_2,Digits)<NormalizeDouble(MA_1,Digits)) // Перелом вверх
          {
            Двверх=true;
            Alert("Двверх");
            Дввниз=false;
            Сделкавниз=false;
            dwfractal=0;
            upfractal=0;
          }
        if(Двверх==true)
          {    
            
                upfractal=iFractals(Symbol(), PERIOD, MODE_UPPER, 3);
                Alert("upfractal вначале = ",upfractal);
                
              
          }
        if(NormalizeDouble(MA_8,Digits)<NormalizeDouble(MA_2,Digits)
        && NormalizeDouble(MA_7,Digits)<=NormalizeDouble(MA_2,Digits)
        && NormalizeDouble(MA_6,Digits)<=NormalizeDouble(MA_2,Digits)
        && NormalizeDouble(MA_5,Digits)<=NormalizeDouble(MA_2,Digits)
        && NormalizeDouble(MA_3,Digits)<=NormalizeDouble(MA_2,Digits)
        && NormalizeDouble(MA_4,Digits)<=NormalizeDouble(MA_2,Digits)
        && NormalizeDouble(MA_2,Digits)>NormalizeDouble(MA_1,Digits)) // Перелом вниз
          {
            Дввниз=true;
            Двверх=false;
            Alert("Дввниз");
            Сделкавверх=false;
            upfractal=0;
            dwfractal=0;
          }
        if(Дввниз==true)
          {    
            
                dwfractal=iFractals(Symbol(),PERIOD, MODE_LOWER, 3);
                Alert("dwfractal вначале = ",dwfractal);
              
          }    
          BarTime=Time[0];
      }else                                                                  // На каждый тик
        { 
          Alert("upfractal на тиках = ",upfractal,", Bid = ", Bid);
          if (Двверх==true && upfractal !=0 && Bid > NormalizeDouble(upfractal+1*Point,Digits) && Tвверх!=Time[0] && Сделкавверх==false) // Открытие ордеров при пробитии последнего (свежайшего) фрактала }
            {
               Alert("upfractal = ",upfractal, ", Ask = ",Ask);
               Tвверх=Time[0];
               while(true)                                                  // Цикл открытия орд.
                  {
                    A++;
                    SL[A]=Bid-Ограничение*Point;
                    TP[A]=Bid+7*Point+Прибыль*Point;
                    ticketup=OrderSend(Symb, OP_BUY, Lot, Ask,0, SL[A], TP[A],NULL,A,0,вверх); // Ордер вверх
                        int Error=GetLastError();
                        switch(Error)                                      // Преодолимые ошибки
                          {
                           case 6: Alert("Нет связи с торговым сервером. Пробуем ещё раз..");
                           RefreshRates();                                 // Обновим данные
                           Sleep(1);                                       // Задержка в цикле до нового тика
                         continue;                                         // На след. итерацию
                          }
                         break;                                            // Выход из цикла
                   }
                    Сделкавверх=true; 
            }
            Alert("dwfractal на тиках = ",dwfractal,", Bid = ", Bid);
          if (Дввниз==true && dwfractal !=0 && Bid < NormalizeDouble(dwfractal-1*Point,Digits) && Tвниз!=Time[0] && Сделкавниз==false) // Открытие ордеров при пробитии последнего (свежайшего) фрактала }
            {
               Alert("dwfractal = ",dwfractal, ", Bid = ",Bid);
               Tвниз=Time[0];
               while(true)                                  // Цикл открытия орд.
                  {
                    B++;
                    SL[B]=Bid+Ограничение*Point;
                    TP[B]=Bid-4*Point-Прибыль*Point;
                    ticketdown=OrderSend(Symb, OP_SELL, Lot, Bid,0, SL[B], TP[B],NULL,B,0,вниз); // Ордер вниз
                        Error=GetLastError();
                        switch(Error)                             // Преодолимые ошибки
                          {
                           case 6: Alert("Нет связи с торговым сервером. Пробуем ещё раз..");
                           RefreshRates();                        // Обновим данные
                           Sleep(1);                              // Задержка в цикле до нового тика
                         continue;                                // На след. итерацию
                          }
                         break;                                    // Выход из цикла
                   }
                   Сделкавниз=true;
            } 
        }
//----
   return(0);
  }
//+------------------------------------------------------------------+
А пока не отладится в тестере, нет смысла ставить с ошибкой на оптимизацию. В чём же ошибка...?
 

Пересено из отдельной темы

Leonid82 24.01.2011 19:51

Привет! Имеется эксперт работающий с EURUSD. Как из этого эксперта получить High[1] по GBPUSD например?

Благодарю за помощь.

 

Leonid82, High[1] - это цена хай на первой свечке. Для её получения достаточно сделать вот такой скрипт. И цена эта получается не из советника, а из терминала.

//+------------------------------------------------------------------+
//|                 Старт работы скрипта                             |
//+------------------------------------------------------------------+
int start(){
  Alert("High[",i,"] = ",High[i]);
        return(0);
}