Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 313

 
 
Burger:
Besoin d'une critique sur la ligne d'assistance EA https://docs.google.com/document/d/1Bkqu7NzSj8mrNsa5iO8lB6UmKNCJ4YiaY-wKXzbF3Wo/pub


J'aime critiquer, mais il y a beaucoup de - un peu d'une promenade à travers le premier paragraphe

L'archive ne s'attache pas correctement (( Je vais la télécharger sur un site de partage de fichiers maintenant.

 
VladislavVG:

Si cela toujours le plus proche alors cela peut être très simple et les magiciens ne sont bien sûr pas nécessaires. Mais nous n'avons rien entendu à ce sujet de la part de PGM5, et dans le cas général, il se peut qu'il ne s'agisse pas de l' ordre le plus proche mais d'un ordre plus éloigné du prix actuel et que des ordres intermédiaires soient placés pour d'autres raisons : nous ne savons rien de l'algorithme de prise de décision. Nous ne parlions que des ordres connexes.
Pour une raison quelconque, j'ai dans l'esprit que le plus proche doit être retiré. Les autres sont toutes plus éloignées et s'ouvrent dans des conditions différentes. Et comme l'ordre en attente le plus proche est opposé à celui du marché, nous avons toutes les données pour le trouver correctement.
 
PGM5:
Merci pour votre soutien. Pouvez-vous me dire où chercher la réponse à cette question ? Oui, une dernière chose : les ordres doivent être définis lorsque l'ordre est déclenché et lorsque le takeprofit est déclenché et le plus proche doit être supprimé avant cela. Merci d'avance.

Vous commencez déjà à rédiger le RPT. Avez-vous au moins commencé à faire quelque chose ? Ou vous attendez le poisson ? Dans ce fil, ils aident ceux qui veulent apprendre à programmer en mql4 gratuitement, et non ceux qui veulent obtenir une solution gratuite toute faite.
 
43
alexey1979621 29.11.2013 11:52 #

Salutations à tous ! Je demande de l'aide pour résoudre un problème intéressant. Il existe un EA dont la caractéristique est qu'après avoir obtenu un profit, les trades suivants de 1 à 4 sont fermés au stop loss, puis à nouveau au profit. Le conseiller expert ouvre des transactions en fonction du signal de l'indicateur. Pour exclure les transactions rentables qui suivent le profit, il faut ignorer les signaux générés par l'indicateur, c'est-à-dire ne pas fermer les transactions (1,2,3,4) après avoir obtenu un profit. La fonction Sig est disponible à cet effet. Cependant, je pense que j'ai mal écrit cette fonction car l'EA n'ouvre pas du tout d'ordres avec elle et tout fonctionne très clairement sans elle. Il y a peut-être aussi une erreur dans la condition. En général, .... Je ne sais pas ce que c'est, ça fait deux semaines que je n'arrive pas à résoudre ce blocage. Pourriez-vous me conseiller, gens intelligents, où se trouve l'erreur ?

Oui, signal est le nombre de signaux après un profit et pynkt est la taille du profit en pips.

Je vous serais reconnaissant de toute aide.

void CheckForOpen()
{
   int ticket, STOPLEVEL;
   double Price, SL, TP; 
   STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL);


   double MA1Low = NormalizeDouble (iMA(NULL,0,MA_Period_2,MA_Shift_2,MA_Method_2,0,1), Digits); 
   double MA2High = NormalizeDouble (iMA(NULL,0,MA_Period_2,MA_Shift_2,MA_Method_2,1,1), Digits);
   
 
  
   if(Volume[0]>1) return;

    // продажа
   if (Open[1]>Close[1] && Open[1] > MA1Low && Close[1] < MA1Low)
   
{
      if(Pro(1,100))

   {
       ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,SL,TP,"Pattern_1",1000,0,Red);
      return;
    }
   
  }  
//---- buy conditions
   // покупка
  if (Open[1]<Close[1] && Open[1] < MA2High && Close[1] > MA2High)
 
 { 
   if(Pro(1,100))
   {
      ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,SL,TP,"Pattern_1",1000,0,Blue);
      return;
   }       
   }
}
 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool Sig(int signal,int pynkt)
 {
  static int cnt = 0;
  static datetime tm;
  if(Time[0] == tm) return(false);
  tm = Time[0];
  if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY) == true)
   {
    cnt = cnt + 1;
    if(OrderType() == OP_BUY && OrderClosePrice() - OrderOpenPrice() < pynkt*Point) cnt = 0;
    if(OrderType() == OP_SELL && OrderOpenPrice() - OrderClosePrice() < pynkt*Point) cnt = 0;
    if(cnt >= signal) return(true);
   }
  return(false);
 }
//+------------------------------------------------------------------+
 
artmedia70:
Vous commencez déjà à rédiger les TdR. Avez-vous commencé à faire quelque chose vous-même ? Ou vous attendez le poisson ? Dans ce fil, ils aident ceux qui veulent apprendre à programmer en mql4 gratuitement, et non ceux qui veulent obtenir une solution gratuite toute faite.



Bonjour. Je suis un débutant en programmation. Je n'ai utilisé que le forum et un tutoriel pour apprendre. Au début j'ai tout compris, mais quand je suis arrivé aux fonctions générales, j'ai commencé à mal comprendre quelque chose, d'ailleurs, pendant la correspondance, j'avais appris quelque chose.... J'ai pris le script de là, le script de là et j'ai souligné certaines choses du forum. Je l'ai essayé sur la démo - il montre des bénéfices mais les scripts sont simples : les ordres ne sont pas toujours placés et un seul ordre manqué provoque l'échec du système. Je l'ai essayé sur le compte réel : tous les ordres sont placés (mais cette fois il n'y avait pas d'écart), cela apporte des bénéfices, mais de nombreuses positions inutiles sont ouvertes. J'ai réalisé que de simples scripts et fonctions ne pouvaient pas résoudre ce problème et j'ai demandé de l'aide. Le conseiller expert est rentable, mais je dois parfois "aider" avec mes mains. Je pense automatiser cette "aide" à terme.
 
conseiller fichierhttp://drive.google.com/file/d/0B0Zxi_UuVVTZejc3Tmg1Zk5ablU/edit?usp=sharing
 
alexey1979621:
43
alexey1979621 29.11.2013 11:52 #

Salutations à tous ! Je demande de l'aide pour résoudre un problème intéressant. Il existe un EA dont la caractéristique est qu'après avoir obtenu un profit, les trades suivants de 1 à 4 sont fermés au stop loss, puis à nouveau au profit. Le conseiller expert ouvre des transactions en fonction du signal de l'indicateur. Pour exclure les transactions rentables qui suivent le profit, il faut ignorer les signaux générés par l'indicateur, c'est-à-dire ne pas fermer les transactions (1,2,3,4) après avoir obtenu un profit. La fonction Sig est disponible à cet effet. Cependant, je pense que j'ai mal écrit cette fonction car l'EA n'ouvre pas du tout d'ordres avec elle et tout fonctionne très clairement sans elle. Il y a peut-être aussi une erreur dans la condition. En général, .... Je ne sais pas ce que c'est, ça fait deux semaines que je n'arrive pas à résoudre ce blocage. Pourriez-vous me conseiller, gens intelligents, où se trouve l'erreur ?

Oui, signal est le nombre de signaux après un profit et pynkt est la taille du profit en pips.

Je vous serais reconnaissant de toute aide.


La fonction Sig() interdit l'ouverture de transactions si l'historique des ordres est absent (retourne false).
 
Vinin:

La fonction Sig() interdit l'ouverture de transactions s'il n'y a pas d'historique des ordres (renvoie false).
J'ai supposé que l'historique dans le testeur est simulé (j'avais donc tort). Il semble que nous devrions effectuer une fonction de recherche du dernier ordre par un simul, un curseur et écarter les ordres en attente. Mon cerveau le comprend (si je pense dans la bonne direction), mais je ne peux pas utiliser mes propres mains pour exécuter le code. Pouvez-vous me donner un indice ? Merci pour votre aide.
 
alexey1979621:
J'ai supposé que l'historique dans le testeur est simulé (j'avais donc tort). Il s'avère qu'il est nécessaire de faire une fonction pour rechercher le dernier ordre, par simul, medj, et écarter les ordres en attente. Mon cerveau le comprend (si je pense dans la bonne direction), mais je ne peux pas utiliser mes propres mains pour exécuter le code. Pouvez-vous me donner un indice ? Merci pour votre aide.
Tous vos conseils !
Documentation Tutoriel

Et des fonctions :

GetIndexLastPos - Retourne l'index de la dernière position ouverte ou -1
GetLotLastPos - Retourne la taille du lot de la dernière position ouverte ou -1

Et beaucoup d'autres très utiles !