Questions des débutants MQL4 MT4 MetaTrader 4 - page 84

 
Arseniy Barudkin:   Bonjour Messieurs, veuillez m'aider à écrire cette fonction.

Joyeux Jour de la Victoire ! !! Cela fait 4 jours - aucune réponse. Essayons... Les personnes insatisfaites écrivent en personne!!!

//+-------------------------------------------------------+
//| функция перебрала открытые ордера на графике          |
//| и выделила: 1) с самым маленьким лотом и --- профитом |
//| 2) с самым большим лотом и +++ профитом.       скрипт |
//| Предполагается, что такие есть. И удалила    PROBA.mq4|
//+-------------------------------------------------------+
// Назначение функций OrdersTotal, OrderSelect, OrderClose
// и прочих узнаем поставив на них курсор и нажав F1

#property strict

void OnStart()
{
   int    Проскальзывание=20;
   int    Тикет1 =0,  Тикет2=0;
   double Лот1=100000, Лот2=0;
   bool   Результат;     //  Чтоб избежать лишних предупреждений

   // Выделение
   for(int Тикет=OrdersTotal()-1; Тикет>=0; Тикет--)
   {
     if(!OrderSelect(Тикет,SELECT_BY_POS)) continue; // Что-то помешало - идем к следующему
     if(OrderSymbol() != _Symbol) continue;          // Чужой график

     // Если с меньшим лотом и   --- профитом   то запомним тикет и лот
     if(OrderLots()<Лот1     &&  OrderProfit()<0)
     {
       Тикет1=OrderTicket();
       Лот1=OrderLots();
     }

     // Если с большим лотом и   +++ профитом   то запомним тикет и лот
     if(OrderLots()>Лот2     &&  OrderProfit()>0)
     {
       Тикет2=OrderTicket();
       Лот2=OrderLots();
     }
   }

   // Удаление
   if(Тикет1)
   {
      while(!RefreshRates());
      if(OrderSelect(Тикет1,SELECT_BY_TICKET))  // Чтоб получить цену закрытия
         Результат=OrderClose(Тикет1, Лот1,OrderClosePrice(),Проскальзывание);
   }

   if(Тикет2)
   {
      while(!RefreshRates());
      if(OrderSelect(Тикет2,SELECT_BY_TICKET))
         Результат=OrderClose(Тикет2, Лот2,OrderClosePrice(),Проскальзывание);
   }
}   

Et alors la question s'est posée : s'il n'y a que deux ordres. Un avec un gros lot avec un profit négatif, et un avec un plus petit lot avec un profit positif.

Et s'il n'y a qu'une seule commande. Que se passe-t-il si tous les ordres ont le même lot et tous avec un profit négatif - devons-nous les fermer un par un ?

 

Bonjour !

Je peux avoir de l'aide ? Le conseiller expert récupère les transactionschaque tick. Comment puis-je écrire le code pour enlever environ 5 transactions ou seulement autant que je le souhaite ?

extern int tp=50 ;

extern int sl=200 ;

extern double lot=0.01 ;

void OnTick()

{

OrderSend("USDJPY",OP_SELL,lot,Bid,0,Ask+sl*Point,Ask-tp*Point, "Batsasho",1,0,Red) ;

}

Que dois-je changer, ajouter au code ?

Pouvez-vous répondre à cette question ?

Merci !

 
alstefanov:

Bonjour !

Je peux avoir de l'aide ? Le conseiller expert récupère les transactionschaque tick. Comment puis-je écrire le code pour enlever environ 5 transactions ou seulement autant que je le souhaite ?

extern int tp=50 ;

extern int sl=200 ;

extern double lot=0.01 ;

void OnTick()

{

OrderSend("USDJPY",OP_SELL,lot,Bid,0,Ask+sl*Point,Ask-tp*Point, "Batsasho",1,0,Red) ;

}

Que dois-je changer, ajouter au code ?

Pouvez-vous répondre à cette question ?

Merci !

extern int tp=50;

extern int sl=200;

extern double lot=0.01;

void OnTick()

{ 

if(OrdersTotal()==0)OrderSend("USDJPY",OP_SELL,lot,Bid,0,Ask+sl*Point,Ask-tp*Point,"Batsasho",1,0,Red);

}
 
Veuillez me conseiller sur la façon d'accélérer le travail de l'EA dans le testeur pour qu'il soit testé plus rapidement, l'EA n'utilise qu'un seul indicateur.
 
missha32 Comment rendre mon EA plus rapide dans le testeur de stratégie, il n'utilise qu'un seul indicateur.

Tout d'abord, réduisez l'intervalle de temps des tests. Meilleur : 1) les trois derniers mois. 2) trois mois avec un Brexit au milieu. Veillez à ne pas tester toutes les tiques. En fait, dans MT4, il n'y a pas de ticks dans l'historique, et ils sont modélisés par de légères secousses du prix vers le haut et vers le bas. Si vous testez sur deux horizons temporels - M15 et M1, vous verrez alors où c'est le mieux. Ou, mieux encore, utilisez la démo - démarrez-la le lundi matin et vérifiez le résultat le vendredi soir à l'aide du script bien connu. Si nous devons tester 100 Expert Advisors, nous ouvrons 10 terminaux et dans chaque terminal il y a 10 graphiques avec des Expert Advisors.

Il est nécessaire de disposer d'un grand nombre d'ordinateurs. Sur un compte réel, 4 $ avec un effet de levier de 500 est suffisant. Regardez n'importe quel graphique - avec une entrée correcte, vous pouvez facilement doubler votre dépôt en un jour. Et ça, c'est un million de fois en un mois. Existe-t-il de tels EA gratuits sur Internet ? Quelqu'un en vendrait-il ? Par conséquent, l'argent devrait être investi dans des ordinateurs. Nous cherchons les points d'entrée. Nous écrivons des programmes, effectuons des calculs dans Excel en utilisant les formules et les macros, et écrivons des scripts et des Expert Advisors pour les calculs. Ensuite, quand nous aurons trouvé comment trouver des points d'entrée, puis des Robots, des Stops, des Chaluts, des Dépôts, des Dépôts, des Retraits...

 
STARIJ:

Joyeux Jour de la Victoire ! Cela fait 4 jours - aucune réponse. Essayons... Les mécontents écrivent dans leurs comptes personnels! !!

Et alors la question s'est posée : s'il n'y a que deux ordres. Avec un grand lot avec un profit négatif, avec un plus petit lot avec un profit positif.

Et s'il n'y a qu'une seule commande. Que se passe-t-il si tous les ordres ont le même lot et tous avec un profit négatif - devons-nous les fermer un par un ?

for(int Ticket=OrdersTotal()-1 ; Ticket>=0 ; Ticket--) - voici le code de recherche des ordres de bourse par ticket dans l'ordre inverse (du dernier ordre ouvert au premier) - ai-je bien compris ?

Mais "Ticket" ne fonctionne pas en cyrillique, il faut que ce soit "Ticket" en latin.

 
Yaroslav Nykula:
for(int Ticket=OrdersTotal()-1 ; Ticket>=0 ; Ticket--) - c'est le code de la recherche de l'ordre de marché par le ticket dans l'ordre inverse (du dernier ouvert au premier) - est-ce que j'ai bien compris ?

Mais "Ticket" en cyrillique ne fonctionnera pas, il faut "Ticket" en latin.

Je n'ai pas vérifié, mais ça devrait passer non seulement en cyrillique mais aussi en chinois.
 
Vitaly Muzichenko:   Je n'ai pas vérifié, mais cela devrait passer non seulement en cyrillique mais aussi en chinois.
Lorsque j'aborde une nouvelle langue, je vérifie d'abord si le cyrillique mange le cyrillique ou le recrache. Celui-ci le fait. Voici le script - regardez-le.
Dossiers :
PROBA.mq4  2 kb
 
Bonjour. La question est la suivante : peut-on charger les valeurs des ticks (les prix correspondants) pour une certaine période de négociation (c'est-à-dire pour une seule bougie) dans un tableau unidimensionnel ? Et de le faire de telle sorte que le réseau se forme pendant la formation d'une bougie. Est-ce réaliste dans MQL4 ? J'apprécierais vos commentaires.
 
STARIJ:

Joyeux Jour de la Victoire ! !! Cela fait quatre jours - pas de réponse. Essayons... Les personnes mécontentes écrivent en privé! !!

Et puis une question s'est posée : s'il n'y a que deux ordres. Avec un grand lot avec un profit négatif, avec un plus petit lot avec un profit positif.

Et s'il n'y a qu'une seule commande. Et si tous les ordres ont le même lot et tous avec un profit négatif, devons-nous les fermer un par un ?


Merci beaucoup ! C'est une bonne fonction ! Cette fonction doit être appelée s'il n'y a pas assez de marge pour ouvrir un autre ordre. Mais je n'ai pas exprimé mon idée correctement ; il s'avère que j'avais besoin d'autre chose ! Le plus grand lot avec le plus grand profit des positions ouvertes et le plus petit lot avec un profit négatif des positions ouvertes.
Raison: