[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non potrei andare da nessuna parte senza di te - 2. - pagina 19

 
Ereke:
Congratulazioni a voi!

Le congratulazioni sono d'obbligo. Anche se un colpo in aria non fa male a nessuno.
 
Vinin:

Le congratulazioni sono d'obbligo. Anche se un colpo in aria non fa male a nessuno.
Victor, il tuo Skype non funziona o la tua connessione sta morendo? Che succede con la ZZ?
 
2011.01.24 17:18:44 TestGenerator: errore dati non abbinati (limite di volume 971 al 2011.01.19 10:00 superato)
Potresti dirmi che tipo di errore è? Nel registro durante il test in blocco, ma gli ordini aperti.
 
artmedia70:
Victor, il tuo Skype non funziona o la tua connessione sta morendo? Cos'è la ZZ?

Sì, sto dicendo che forse dovrei fare uno zapper speciale. Non è il mio Skype che sta morendo. Ti ho preso in verde.
 
r.ig.h:
2011.01.24 17:18:44 TestGenerator: errore dati non abbinati (limite di volume 971 al 2011.01.19 10:00 superato)
Potresti dirmi che tipo di errore è? Nel registro durante il test in blocco, ma gli ordini aperti.

Non c'è storia o ci sono errori nella storia
 
Aiuto script tweak che significherebbe aprire un affare immediatamente, al prezzo di mercato corrente. Un chet, sono già vapore fino Distanza dal pesce in 5 pip non è soddisfatto, e così che sarebbe almeno con una deviazione nello scambio.
 

Buona sera!

Non riesco a dare un senso al

turno - Indice del valore ricevuto dal buffer dell'indicatore (spostamento relativo alla barra corrente del numero specificato di periodi indietro).

Nell 'indicatore Fractals. Se penso correttamente - l'indicatore mostra il valore dell'estremo tra cinque barre con la condizione che i massimi di due barre precedenti e due barre successive (nel caso di un frattale verso l'alto) siano più piccoli (anche se l'"uccellino" di un frattale viene mostrato sul grafico anche quando l'estremo della barra più a sinistra di quelle cinque = estremo ......, non più piccolo di esso). Allora perché spostarsi? Cosa verrà mostrato se lo spostamento non è uguale a 3 ma uguale a 2 o 5?

 

Ho fatto questo codice per entrare nel mercato dopo la prima rottura frattale dopo la rottura del MA. Ma quando viene testato, non apre i trade ovunque, anche se sembra che debba farlo. Non riesco a capire cosa c'è di sbagliato? In modalità reale (quando controllo su M1 non trovo l'errore).

 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);
  }
//+------------------------------------------------------------------+
E finché non funziona nel tester, non ha senso usarlo per l'ottimizzazione con un errore. Qual è l'errore... ?
 

Adattato da un thread separato

Leonid82 24.01.2011 19:51

Ciao, ho un Expert Advisor che funziona con EURUSD. Come posso ottenere High[1] su GBPUSD per esempio?

Grazie per il vostro aiuto.

 

Leonid82, High[1] è il prezzo massimo della prima candela. Per ottenerlo, avete solo bisogno di fare questo script. E questo prezzo non si ottiene dall'Expert Advisor, ma dal terminale.

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