[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 1014

 

001 ha risposto.

Per quanto ho capito è qui che si fa il confronto. Se mi sbaglio, che mi correggano.

if(
(sar10>Open[0])&& // SAR 1 // confronta con il prezzo di apertura
(sar11>Close[0+1])&& // minuto e confronta con il prezzo di chiusura
(sar50>Open[0])&& // SAR 5
(sar51>Close[0+1])&& // minuti
(sar150>Open[0])&& // SAR 15
(sar151>Close[0+1])&& // minuti
(sar152<Close[0+2]) // inizio tendenza

)

ma non è questo. Per chiarire, l'Expert Advisor è attaccato al grafico a 15 min. e il SAR è confrontato al prezzo per intervalli di tempo di 15, 5 e 1 min. .... Open[0] Close[0+2] e Close[0+2 ] è il prezzo di apertura e di chiusura. Ho bisogno di confrontare il fondo del grafico, che è attaccato all'Expert Advisor su timeframe inferiori!

Grazie in anticipo...

 
boris.45:

Avete questa coppia nella finestra di Market Watch?

Prova a ricalcolare tutti i Timeframes quando ricevi il messaggio "No new data for symbol", perché ti chiede di farlo. Di solito faccio così: apro la finestra di caricamento dei dati (F2), faccio doppio clic sul simbolo richiesto, doppio clic su M1 e carico i dati, nonostante tutti i suoi messaggi. E lo faccio per ogni TF - M1, M5, M15 ... Mese...

Di solito aiuta... Anche se a volte ne sono confuso... :)

 
igrok2008:

Ma non è così. Per chiarire, l'Expert Advisor è attaccato al grafico a 15 min. e il SAR è confrontato al prezzo per intervalli di tempo di 15, 5 e 1 min. .... Open[0] Close[0+2] e Close[0+2 ] è il prezzo di apertura e di chiusura. Ho bisogno di confrontare il fondo del grafico, che è attaccato all'Expert Advisor su timeframe inferiori!

Grazie in anticipo...

   iSAR(Symbol(),PERIOD_M1, step,maximum,1);  // Данные параболика для текущего символа с периода М1
   iSAR(Symbol(),PERIOD_M5, step,maximum,1);  // Данные параболика для текущего символа с периода M5
   iSAR(Symbol(),PERIOD_M15,step,maximum,1);  // Данные параболика для текущего символа с периода М15
   iSAR(Symbol(),PERIOD_M30,step,maximum,1);  // Данные параболика для текущего символа с периода М30

   iOpen (Symbol(),PERIOD_M1,0);     // цена открытия минутной свечи текущего (нулевого) бара
   iClose(Symbol(),PERIOD_M1,0);     // цена закрытия минутной свечи текущего (нулевого) бара
   iOpen (Symbol(),PERIOD_M1,1);     // цена открытия минутной свечи предыдущего (первого) бара
   iClose(Symbol(),PERIOD_M1,1);     // цена закрытия минутной свечи предыдущего (первого) бара
   iOpen (Symbol(),PERIOD_M5,0);     // цена открытия пятиминутной свечи текущего бара
   iClose(Symbol(),PERIOD_M5,0);     // цена закрытия пятиминутной свечи текущего бара

Per analogia, vai avanti e fallo da solo...

 
artmedia70:

Avete questa coppia nella finestra di Market Watch?

Prova a ricalcolare tutti i Timeframes quando ricevi il messaggio "No new data for symbol", perché ti chiede di farlo. Di solito faccio così: apro la finestra di caricamento dei dati (F2), faccio doppio clic sul simbolo richiesto, doppio clic su M1 e carico i dati, nonostante tutti i suoi messaggi. E lo faccio per ogni TF - M1, M5, M15 ... Mese...

Di solito aiuta... Anche se a volte ne sono confuso... :)

 
Quale può essere la ragione, quando l'EA non chiude gli ordini (anche se è specificato nel suo codice), e il tester dà questi errori:
 
ViktorF:
Quale può essere la ragione, quando l'EA non chiude gli ordini (anche se è specificato nel suo codice), e il tester dà questi errori:
Questo non è corretto nel codice ed è per questo che l'EA non si chiude. E questi sono errori innocui, è auspicabile aggiornare le citazioni
 
artmedia70:

Per analogia, vai avanti e fallo da solo...

Si prega di controllare!!!!!

//+------------------------------------------------------------------+
//|                                 expert SAR_1_5_15 min primer.mq4 |
//|                      Copyright © 2009, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

//---- input parameters
extern double    Lots=0.01;
extern int       StopLoss=300;
extern int       TakeProfit=150;
extern int       MagicNumber=123456;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
  
bool CheckOrders(int Type)
{
 bool Result=True;
 for(int i=0;i<OrdersTotal();i++)
  if(OrderSelect(i,SELECT_BY_POS))
   if(OrderMagicNumber()==MagicNumber && OrderSymbol() == Symbol())
      if(OrderType()==Type)
        {
         if(Type==OP_BUY)
           if(!OrderClose(OrderTicket(),OrderLots(),Bid,0))
             Result=False;
         if(Type==OP_SELL)
           if(!OrderClose(OrderTicket(),OrderLots(),Ask,0))
             Result=False;
         } 
        else Result=False;
 return(Result); 
}

// Проверяем наличие закрытой на текущей свече позиции типа Type. Если есть, то возвращает False  
bool CheckExists(int Type)  
{
 bool Result=True;
 for(int i=OrdersHistoryTotal()-1; i>=0;i--)
  if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
   if(OrderMagicNumber()==MagicNumber&&OrderSymbol()==Symbol()&&OrderCloseTime()>=Time[0]&&OrderType()==Type)
    {
     Result=False;
     break;
     }
 return(Result); 
 }
  
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
    // Узнаем уровень стопов и спрэд
    int Spread = MarketInfo(Symbol(), MODE_SPREAD);
    int StopLevel = MarketInfo(Symbol(), MODE_STOPLEVEL);

    // Рассчитываем значения Parabolic,на 0-ом, 1-ом и 2-м барах для 1,5-ти,15-ти минутн. графиков
    double sar10 = iSAR(NULL,1,0.02,0.2,0);
    double sar11 = iSAR(NULL,1,0.02,0.2,1);
    double sar50 = iSAR(NULL,5,0.02,0.2,0);
    double sar51 = iSAR(NULL,5,0.02,0.2,1);
    double sar150 = iSAR(NULL,15,0.02,0.2,0);
    double sar151 = iSAR(NULL,15,0.02,0.2,1);
    double sar152 = iSAR(NULL,15,0.02,0.2,2);
    // Определяем цену открытия и закрытия для 15,5 и 1 мин. графиков
   double Open10 = iOpen (Symbol(),PERIOD_M1,0); // цена открытия 1 мин. свечи нулевого бара
   double Close10= iClose(Symbol(),PERIOD_M1,0); // цена закрытия 1 мин. свечи нулевого бара
   double Open50 = iOpen (Symbol(),PERIOD_M5,0); // цена открытия 5 мин. свечи нулевого бара
   double Close51= iClose(Symbol(),PERIOD_M5,1); // цена закрытия 5 мин. свечи первого бара    
   //-------------открытие позиции Buy покупка----------------- 
    if(
    (sar10>Open10)&&     //  SAR 1 // сравниваем с ценой открытия
    (sar11>Close10)&&    // минута и сравниваем с ценой закрытия
    (sar50>Open50)&&         //  SAR 5
    (sar51>Close51)&&        // минут
    (sar150>Open[0])&&        //  SAR 15
    (sar151>Close[0+1])&&     // минут
    (sar152<Close[0+2])       // начало тренда
    )
     if(CheckOrders(OP_SELL) && CheckExists(OP_BUY))
      {
       if(StopLoss <= StopLevel+Spread)
         double SL = 0;
        else
         SL = Ask - StopLoss*Point;
       if(TakeProfit <= StopLevel-Spread)
         double TP = 0;
        else
         TP = Ask + TakeProfit*Point;
       if(!OrderSend(Symbol(), OP_BUY, Lots, Ask, 10, SL, TP, NULL, MagicNumber))
         Print("Не открыт ордер Buy. Ошибка №", GetLastError()); 
       }
    //-------------------Конец блока покупки -------------------
    
    //-------------Открытие позиции Sell продажа----------------  
    if(
    (sar10<Open10)&&       //  SAR 1// сравниваем с ценой открытия
    (sar11<Close10)&&      // минута и сравниваем с ценой закрытия
    (sar50<Open50)&&       //  SAR 5
    (sar51<Close51)&&      // минут
    (sar150<Open[0])&&        //  SAR 15
    (sar151<Close[0+1])&&     // минут
    (sar152>Close[0+2])       // начало тренда
    )
     if(CheckOrders(OP_BUY) && CheckExists(OP_SELL))
      {
       if(StopLoss <= StopLevel+Spread)
         SL = 0;
        else
         SL = Bid + StopLoss*Point;
       if(TakeProfit <= StopLevel-Spread)
         TP = 0;
        else
         TP = Bid - TakeProfit*Point;
       if(!OrderSend(Symbol(), OP_SELL, Lots, Bid, 10, SL, TP, NULL, MagicNumber))
         Print("Не открыт ордер Sell. Ошибка №", GetLastError()); 
       }

//-----------------конец блока продажи ----------------------
   return(0);
  }
//+------------------------------------------------------------------+

Nessun errore rilevato su compile!!!!!

Grazie in anticipo!

 
artmedia70:
artemida70, c'è una coppia di valute nella finestra di Market Watch. Ho provato il tuo metodo di caricamento, ma non funziona. Durante il caricamento dei dati, la barra verde non raggiunge la fine e il caricamento si ferma. Al ricaricamento, il tableau "No new symbol data..." ha smesso di apparire. A proposito, tutti i cubi timeframe sono diventati di colori brillanti allo stesso tempo (anche se il caricamento avviene su M1). Forse il file di caricamento si è corrotto? La tua opinione - cosa fare?
 
Vinin:


Forse volevi chiedere come ottenere il valore di una variabile descritta nel file include?


Sì, è esattamente questo. C'è un file, che hai postato, che è molto utile, OptimizationReport.mq4. L'ho leggermente migliorato per calcolare il fattore di recupero. Ora voglio ottenere il valore di questa variabile nel codice principale per accelerare l'ottimizzazione rilevando i passaggi del tester e impostando il limite del livello PV. Ho provato a farlo attraverso le variabili globali. Il valore della mia variabile non è visibile nel codice principale.

Nell'EA scrivo:

double myValue = GlobalVariableGet("myValue");
Stampa("myValue="+myValue);
MessageBox("myValue="+myValue);
Alert("myValue="+myValue);

In includere (stendere):

GlobalVariableSet("myValue", 1);

Non funziona, myValue=0.00000000

File:
 

Ho pensato di controllare anche qui ...

Come posso impostare l'invio di email a narod.ru?

Tutte le varianti provate:

Server SMTP - smtp.narod.ru

Accesso SMTP: - имя@narod.ru

Password SMTP - password

Da: slt-soft@narod.ru

A: slt-soft@narod.ru

Errore: Mail: login a smtp.narod.ru fallito

Motivazione: