Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 843

 
tim2019:
Donc vous ne pensez pas que c'est trop ? Les développeurs devraient peut-être regarder d'autres ressources indépendantes pour comprendre à quoi doit ressembler une interface conviviale. Je n'ai même pas pu trouver le bouton "S'inscrire" tout de suite. Dans l'ensemble, c'est terrible.

Non, je ne le fais pas.

Vous ne vous êtes inscrit ici qu'hier. Qu'avez-vous à vendre ? Quelles sont les connaissances dont vous disposez pour exécuter des commandes en freelance à un niveau décent ? Pas au niveau du "tout comment", juste pour se faire la malle, mais à un niveau qui correspond à celui d'un excellent développeur, soyons bons ?

Ou devrais-tu te dépêcher avant de changer d'avis ?

 
Artyom Trishkin:

Non, je ne le fais pas.

Vous ne vous êtes inscrit ici qu'hier. Qu'avez-vous à vendre ? Quelles sont vos connaissances pour exécuter des ordres dans le service freelance à un niveau décent ? Pas au niveau du "tout comment", juste pour se faire la main, mais à un niveau équivalent à celui d'un excellent, disons bon, développeur ?

Ou voulez-vous vous dépêcher avant de changer d'avis ?

Après tout, il existe des normes pour l'interface. S'il y avait une erreur, nous devrions au moins informer l'utilisateur du type d'erreur, plutôt que de l'obliger à taper dessus plusieurs fois avec l'entêtement d'un pivert et à télécharger/remplir à nouveau.

Qu'est-ce que cela a à voir avec la connaissance ou ce qui est à vendre ? Je ne suis pas encore arrivé à ce stade. Au contraire, malheureusement, c'est ce qu'est le monde moderne. Je n'ai pas aimé, je l'ai fermé et je suis passé devant. Ce n'est pas ce que nous sommes. Et dans l'ensemble, une conversation vide. Je parle de travers et on me persuade que c'est comme ça que ça doit être. Ok.

 
tim2019:

Il existe, après tout, des normes d'interface. S'il y a une erreur, il est d'usage de dire au moins à l'utilisateur quel type d'erreur il y a, plutôt que de le forcer à picorer à plusieurs reprises avec la ténacité d'un pivert et à télécharger/remplir à nouveau.

Qu'est-ce que cela a à voir avec la connaissance ou ce qui est à vendre ? Je ne suis pas encore arrivé à ce stade. Au contraire, malheureusement, c'est ce qu'est le monde moderne. Je n'ai pas aimé, je l'ai fermé et je suis passé devant. Ce n'est pas ce que nous sommes. Et dans l'ensemble, une conversation vide. Je parle de travers et on me persuade que c'est comme ça que ça doit être. Ok.

Je connais des gens qui ont fait l'enregistrement des vendeurs littéralement en un jour. Mais ces personnes, et cela se voit en les regardant, sont curieuses et ne sont pas pressées. Et j'ai vu des personnes qui posent des questions sur le forum depuis des mois, mais qui ne font rien de ce qu'on leur dit et écrit.

Et pour information, il n'y a aucun humain sur place - tous les enregistrements sont contrôlés par un robot. Vous pouvez donc frapper à sa porte pendant un long moment et lui glisser quelque chose de mal. Mais cela vaut quand même la peine de lire ses posts - tout devrait y être. Malheureusement, j'ai dépassé tout cela depuis longtemps, et depuis lors, beaucoup de choses ont changé, de sorte qu'en substance je ne peux pas vous dire exactement quel est votre problème. Lisez, par exemple, les sections de votre profil de fournisseur :


 

Aide à l'ajustement des conditions d'ouverture des postes

// открытие продаж

   if(CountSell()==0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,1,0)==Low[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,1,0)==Low[0])
     
// закрытие продаж
            if(CountSell()>0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,0,1)==High[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,0,1)==High[0])
              
// открытие покупок

   if(CountBuy()==0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,0,1)==High[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,0,1)==High[0])
     
// закрытие покупок    
            if(CountBuy()>0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,1,0)==Low[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,1,0)==Low[0])

considérant que les paramètres de l'indicateur sont intégrés dans le robot

------------------------------------------------------------------+
//|                                       Test advisor on ZigZag.mq4 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                         https:/goga342@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright c 2010, MQL для тебя."
#property link "http://mql4you.ru"
#property strict
extern double lots = 0.01; //
extern int  TakeProfit=60; //
extern int  StopLoss=100; //
extern int Magic=111111111;
extern int Slippage=3;
extern int ExtDepth=12;
extern int ExtDeviation=5;
extern int ExtBackstep=3;

datetime Today=0;
double SL,TP;
int ticket;
//±-----------------------------------------------------------------+
int OnInit()
  {
   if(Digits==3 || Digits==5)
     {
      TakeProfit *=10;
      StopLoss   *=10;
      Slippage   *=10;
     }
   return(INIT_SUCCEEDED);
  }
//±-----------------------------------------------------------------+
int deinit() {return(0);}
//±-----------------------------------------------------------------+
int start()
  {

   if(DayOfWeek()==0 || DayOfWeek()==6) return(0); // в выходные не работаем
   if(!IsTradeAllowed()) return(0); // пропустим тик если терминал занят
                                    //:проверим открытие новой свечи
   if(Time[0]==Today) return(0);
   Today=Time[0];
//:получим значение ZigZag на предыдущей свече
   double lZZ=iCustom(NULL,0,"ZigZag",ExtDepth,ExtDeviation,ExtBackstep,0,1);
  
// открытие продаж

   if(CountSell()==0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,1,0)==Low[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,1,0)==Low[0])
     {
      SL = NormalizeDouble(Bid+StopLoss*Point, Digits);
      TP = NormalizeDouble(Bid-TakeProfit*Point, Digits);
        {

         ticket=OrderSend(Symbol(),OP_SELL,lots,Bid,Slippage,SL,TP,"macd sample",Magic,0,Red);
         if(ticket>0)
           {
            // закрытие продаж
            if(CountSell()>0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,0,1)==High[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,0,1)==High[0])
              {
               for(int i=OrdersTotal()-1; i>=0; i--)
                 {
                  if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
                    {
                     if(OrderMagicNumber()==Magic && OrderType()==OP_SELL)
                        if(OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,clrNONE))
                           Print("Ошибка открытия ордера на покупку !");
                    }
                 }
              }
           }
        }
     }
// открытие покупок

   if(CountBuy()==0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,0,1)==High[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,0,1)==High[0])
     {
      TP = NormalizeDouble(Ask+TakeProfit*Point, Digits);
      SL = NormalizeDouble(Ask-StopLoss*Point, Digits);
        {
         ticket=OrderSend(Symbol(),OP_BUY,lots,Ask,Slippage,SL,TP,"macd sample",Magic,0,Green);
         if(ticket>0)
           {
            // закрытие покупок    
            if(CountBuy()>0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,1,0)==Low[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,1,0)==Low[0])
              {
               for(int i=OrdersTotal()-1; i>=0; i--)
                 {
                  if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
                    {
                     if(OrderMagicNumber()==Magic && OrderType()==OP_BUY)
                        if(!OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,clrNONE))
                           Print("Ошибка открытия ордера на продажу!");
                    }
                 }
              }
           }
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+
int CountSell()//проверкна открытие ордеров на продажу
  {
   int count=0;

   for(int trade=OrdersTotal()-1; trade>=0; trade--)
     {
      if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_SELL)
           {
            if(OrderType()==OP_SELL)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
int CountBuy()// проверкна открытие ордеров на покупку
  {
   int count=0;

   for(int trade=OrdersTotal()-1; trade>=0; trade--)
     {
      if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_BUY)
           {
            if(OrderType()==OP_BUY)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
 
Алексей Тарабанов:

Si tu ne peux pas gagner, vole.

Une phrase classique tirée d'un film dont je ne me souviens plus du titre : "Si tu ne peux pas voler, apprends à gagner.
 
Bonjour, pour une raison quelconque, l'EA charge le terminal. Comment détecter l'erreur ? ((( Merci.
 
rabanik:
Bonjour, pour une raison quelconque, l'EA charge le terminal. Comment détecter l'erreur ? ((( Merci.
Профилирование кода - Разработка программ - MetaTrader 5
Профилирование кода - Разработка программ - MetaTrader 5
  • www.metatrader5.com
Профилирование — это сбор характеристик программы во время ее выполнения. При профилировании замеряется время выполнения и количество вызовов отдельных функций и строк в коде программы. При помощи этого инструмента программист может найти наиболее медленные участки кода и провести их оптимизацию. Профилирование можно проводить на обычном...
 

Bon après-midi. J'ai commencé à tester le conseiller expert sur un compte réel. Je n'ai jamais rien vu de tel avec les ordres de vente.

 
Lomonosov1991:

Bon après-midi. J'ai commencé à tester le conseiller expert sur un compte réel. Je n'ai jamais rien vu de tel avec les ordres de vente.

Regardez dans le journal "Experts".

 

Bonne journée à vous tous ! Les gens, bien me conseiller si quelqu'un sait.

C'est le code que vous pouvez utiliser pour obtenir les prix actuels.

void OnTick()
  {
   MqlTick last_tick;
//---
   if(SymbolInfoTick(Symbol(),last_tick))
     {
      Print(last_tick.time,": Bid = ",last_tick.bid,
            " Ask = ",last_tick.ask,"  Volume = ",last_tick.volume);
     }
   else 
      Print("SymbolInfoTick() failed, error = ",GetLastError());
//---
  }

Question :

Quelle est la bonne façon de l'attacher ?

bool  SymbolInfoTick(
   string    symbol,     // символ
   MqlTick&  tick        // ссылка на структуру
   );

Eh bien, qu'il était possible d'obtenir les prix actuels dans un conseiller expert pour plusieurs paires de devises.

Je ne suis pas doué pour la programmation, alors j'essaie de trouver une solution !

Raison: