[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 1014

 

001 a répondu.

D'après ce que j'ai compris, c'est là que la comparaison est faite. Si je me trompe, qu'ils me corrigent.

if(
(sar10>Open[0])&& // SAR 1 // comparer avec le prix d'ouverture
(sar11>Close[0+1])&& // minute et comparer avec le prix de clôture
(sar50>Open[0])&& // SAR 5
(sar51>Close[0+1])&& // minutes
(sar150>Open[0])&& // SAR 15
(sar151>Close[0+1])&& // minutes
(sar152<Close[0+2]) // début de tendance

)

mais ce n'est pas tout. Pour clarifier, l'Expert Advisor est attaché au graphique 15 min. et le SAR est comparé au prix pour les intervalles de temps 15, 5 et 1 min. ..... Open[0] Close[0+2] et Close[0+2 ] sont les prix d'ouverture et de fermeture. J'ai besoin de comparer le bas du graphique, qui est attaché au conseiller expert sur des échelles de temps inférieures !

Merci d'avance...

 
boris.45:

Avez-vous cette paire dans la fenêtre Market Watch ?

Essayez de recalculer toutes les Timeframes lorsque vous obtenez le message "Pas de nouvelles données pour le symbole", car il vous demande de le faire. C'est ce que je fais habituellement : j'ouvre la fenêtre de chargement des données (F2), je double-clique sur le symbole requis, je double-clique sur M1 et je charge les données, malgré tous ses messages. Et je le fais pour chaque TF - M1, M5, M15 ... Mois...

D'habitude, ça aide... Bien qu'elle me laisse parfois perplexe... :)

 
igrok2008:

Mais ce n'est pas tout. Pour clarifier, le conseiller expert est attaché au graphique de 15 minutes et le SAR est comparé au prix pour les intervalles de temps de 15, 5 et 1 minutes..... Open[0] Close[0+2] et Close[0+2 ] sont les prix d'ouverture et de fermeture. J'ai besoin de comparer le bas du graphique, qui est attaché au conseiller expert sur des échelles de temps inférieures !

Merci d'avance...

   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);     // цена закрытия пятиминутной свечи текущего бара

Par analogie, allez-y et faites-le vous-même...

 
artmedia70:

Avez-vous cette paire dans la fenêtre Market Watch ?

Essayez de recalculer toutes les Timeframes lorsque vous obtenez le message "Pas de nouvelles données pour le symbole", car il vous demande de le faire. C'est ce que je fais habituellement : j'ouvre la fenêtre de chargement des données (F2), je double-clique sur le symbole requis, je double-clique sur M1 et je charge les données, malgré tous ses messages. Et je le fais pour chaque TF - M1, M5, M15 ... Mois...

D'habitude, ça aide... Bien qu'elle me laisse parfois perplexe... :)

 
Quelle peut être la raison, lorsque l'EA ne ferme pas les ordres (bien que cela soit spécifié dans son code), et que le testeur donne ces erreurs :
 
ViktorF:
Quelle peut être la raison pour laquelle l'EA ne ferme pas les ordres (bien que cela soit spécifié dans son code), et que le testeur donne de telles erreurs :
.
Ceci n'est pas correct dans le code et c'est pourquoi l'EA ne se ferme pas. Et ce sont des erreurs inoffensives, il est souhaitable de mettre à jour les citations
 
artmedia70:

Par analogie, allez-y et faites-le vous-même...

Veuillez vérifier !!!!!

//+------------------------------------------------------------------+
//|                                 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);
  }
//+------------------------------------------------------------------+

Aucune erreur détectée lors de la compilation !!!!!

Merci d'avance !

 
artmedia70:
artemida70, il y a une paire de devises dans la fenêtre Market Watch. J'ai essayé votre méthode de chargement, mais ça ne marche pas. Lors du chargement des données, la barre verte n'atteint pas la fin et le chargement s'arrête. Lors du rechargement, le tableau "No new symbol data..." n'apparaissait plus. Au fait, tous les cubes de l'horizon temporel sont devenus des couleurs vives en même temps (bien que le chargement soit effectué sur M1). Peut-être que le fichier de chargement a été corrompu ? Votre avis - que faire ?
 
Vinin:


Peut-être vouliez-vous demander comment obtenir la valeur d'une variable décrite dans le fichier include ?


Oui, c'est exactement ça. Il y a un fichier, que vous avez posté, qui est très utile, OptimizationReport.mq4. Je l'ai légèrement amélioré afin de calculer le facteur de récupération. Maintenant je veux obtenir la valeur de cette variable dans le code principal pour accélérer l'optimisation en détectant les passages du testeur et en fixant la limite du niveau de PV. J'ai essayé de le faire par le biais de variables globales. La valeur de ma variable n'est pas visible dans le code principal.

Dans l'EA, j'écris :

double myValue = GlobalVariableGet("myValue") ;
Print("maValeur="+maValeur) ;
MessageBox("maValeur="+myValue) ;
Alert("maValeur="+myValue) ;

Dans inclure(lay out) :

GlobalVariableSet("maValeur", 1) ;

Ne fonctionne pas, myValue=0.00000000

Dossiers :
 

J'ai pensé que je devais vérifier ici aussi ...

Comment configurer l'envoi d'e-mails à narod.ru ?

Toutes les variantes ont été essayées :

Serveur SMTP - smtp.narod.ru

Connexion SMTP : - имя@narod.ru

Mot de passe SMTP - mot de passe

De : slt-soft@narod.ru

À : slt-soft@narod.ru

Erreur : Mail : la connexion à smtp.narod.ru a échoué

Raison: