[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 476

 
Artemis est super ! !!
 
Roman.:


1. Juste au cas où - lisez toutes les informations sur mes liens à partir du post 7 de cette page.

2. Regardez la bande-annonce pour voir comment répondre à votre question. Le deuxième fichier est mon exemple de travail avec l'optimiseur de stratégie et de dépendance, actuellement sur le graphique - les valeurs de stop et de profit du TS-ka, obtenues comme résultat de l'optimisation à partir du facteur de récupération. Je l'utilise moi-même depuis peu - je suis encore en train de l'étudier, donc toutes les questions à ses auteurs. Regardez leur site web à travers la page.

3. Tous, IMHO.


Ooh, cool ! !! Ce programme ne s'appelle-t-il pas Excel ? Comment l'utilisez-vous, comment l'économisez-vous ?
 

Je suis un débutant total dans ce domaine, mais s'il vous plaît aidez-moi à écrire un EA qui fonctionne de cette façon, d'abord il suffit d'ouvrir un ordre d'achat et de mettre un take profit et un stop loss, puis si cet ordre est fermé lorsque le take profit est déclenché, alors ouvre le même ordre d'achat, et si fermé lorsque déclenché le stop loss est de vendre.
 
Comment sauvegarder les résultats dans excel ? Dans le testeur, j'ai cliqué sur tout enregistrer, j'ai trouvé et ouvert excel, j'ai cliqué sur coller sur un fond blanc, rien ne s'est passé. Peut-être que mon frère viendra bientôt et me poussera dehors, à cause de l'ordinateur.
 
dkfl.zrjdktdbx:
Comment sauvegarder les résultats dans excel ? Dans le testeur, j'ai cliqué sur tout enregistrer, j'ai trouvé et ouvert excel, j'ai cliqué sur coller sur un fond blanc, rien ne s'est passé. Peut-être que mon frère viendra bientôt et me poussera dehors, à cause de l'ordinateur.
Je devrais peut-être acheter un deuxième ordinateur.
 
Un jour...
 
dkfl.zrjdktdbx:
Comment sauvegarder les résultats dans excel ? Dans le testeur, j'ai cliqué sur tout enregistrer, j'ai trouvé et ouvert excel, j'ai cliqué sur coller sur un fond blanc, rien ne s'est passé. Peut-être que mon frère viendra bientôt et me poussera dehors, à cause de l'ordinateur.

Copier tout et coller, seulement le nom des colonnes que je dois écrire, et la rentabilité se traduit en mois chez moi.
 
dkfl.zrjdktdbx:

Ooh, cool ! !! Ce programme ne s'appelle-t-il pas Excel ? Comment l'utiliser, comment l'économiser ?

Lisez son aide et la documentation MicrosoftOffice-excel... :-)
 

Camarades, j'ai récemment posé une question sur le fait que l'EA fonctionne différemment sur un compte réel que dans le testeur de stratégie. Vous avez dit que sans le code de l'EA lui-même, il n'y a aucun moyen de le comprendre. Voici le code :

En bref, l'EA fonctionne sur le principe de la Martingale, c'est-à-dire qu'il ouvre avec un double lot si le trade précédent n'a pas été concluant. Si c'est faux plus de 3 fois, alors je suppose qu'un flat a commencé et je change les tailles des lots et des stops, mais proportionnellement comme si l'EA ouvrait toujours dans l'autre sens avec un double lot.

Si tout était bon, il s'ouvre dans la même direction avec un lot. Voici donc le problème : dans le testeur de stratégie, tout fonctionne bien, mais sur mon compte réel, il ouvre déjà la deuxième transaction avec un lot de 0,24 (ce nombre est défini dans la fonction de commutation)... Aidez-nous s'il vous plaît ... J'ai vraiment envie de l'essayer sur un compte réel, le problème me retient dans le compte de démonstration =(

//+------------------------------------------------------------------+ 
//| StMartin++.mq4 | 
//| Sergey Kodolov | 
//| 84232676421@mail.ru | 
//+------------------------------------------------------------------+ 
#property copyright "Sergey Kodolov" 
#property link "84232676421@mail.ru" 

    extern int TP = 1000; 
    extern int TS = 1000; 
    extern double lots = 0.1; 

    double volumz; 
    int ticket,total; 
    int slip = 3; 
    int Magic = 4; 


    static int CriticalTicket = 0; 

    int TicketArray[4]; //миссив с тикетами
    int CTicketArray[10]; //массив с критическими тикетами

    void FormTicket(int number) //объявил шаблон под функцию запоминания тикетов 
    { 
      for(int i=3;i>0;i--) 
      { 
         TicketArray[0] = ticket; 
         if(TicketArray[0]>0 && TicketArray[0] == TicketArray[1])break; 
         TicketArray[i] = TicketArray[i-1]; 
      } 
    } 
    
    void FormCriticalTicket(int number1) //сюда записываю критическме тикеты
    { 
      for(int i=9;i>0;i--) 
      { 
         CTicketArray[0] = CriticalTicket; 
         if(CTicketArray[0]>0 && CTicketArray[0] == CTicketArray[1])break; 
         CTicketArray[i] = CTicketArray[i-1]; 
      } 
    }  


//+------------------------------------------------------------------+ 
//| expert initialization function | 
//+------------------------------------------------------------------+ 
int init() 
  { 
//---- 
     if(OrdersHistoryTotal()==0) 
     { 
        ticket = OrderSend(Symbol(),OP_SELL,lots,Bid,slip,Ask+TS*Point,Ask-TP*Point,"First order",Magic,0,Yellow); //открываем первый ордер 
     } 
//---- 
   return(0); 
  } 
//+------------------------------------------------------------------+ 
//| expert deinitialization function | 
//+------------------------------------------------------------------+ 
int deinit() 
  { 
//---- 

//---- 
   return(0); 
  } 
//+------------------------------------------------------------------+ 
//| expert start function | 
//+------------------------------------------------------------------+ 
int start() 
  { 
//---- 
FormCriticalTicket(CriticalTicket); //вызываем функцию, что запоминала критические тикеты
int CritLot = crit(); //функция берет минимальное значение из массива критических тикетов
int OrderTimeCheck = check3(); //проверяем, закрыт ли ордер 
bool OrderCloseCheck = check2(OrderTimeCheck); //проверяем, закрылись ли ордера в минус 
FormTicket(ticket); //вызываем функцию, чтоб запоминала тикеты 
OrderOpenFunction(OrderCloseCheck,CritLot); //тут открываем ордера 

//---- 
   return(0); 
  } 
//+------------------------------------------------------------------+ 


int crit()
{
   return(ArrayMinimum(CTicketArray,6,1));
}

int check3() //проверяем, закрыт ли ордер 
{ 
   OrderSelect(TicketArray[1],SELECT_BY_TICKET); 
   if(OrderClosePrice()==OrderTakeProfit()) 
      { 
         CriticalTicket=0;
      } 
   if(OrderCloseTime()>0)return(100); 
} 

bool check2(int OrderTimeCheck) //проверяем, если ордер закрыт, то последние 3 закрытых ордера были ли убыточными? 
{ 
   if(OrderTimeCheck == 100) 
   { 
      bool flag = true; 
      for(int j=1;j<4;j++) 
      { 
         OrderSelect(TicketArray[j],SELECT_BY_TICKET); 
         if(OrdersHistoryTotal()>2) 
         { 
            if(OrderClosePrice()!=OrderStopLoss()) 
            { 
               flag = false; 
            } 
         } 
         if(OrdersHistoryTotal()<=2) 
         { 
            flag = false; 
         } 
      } 
      return(flag); 
   } 
   else
      return(false); 
} 

void OrderOpenFunction(bool OrderCloseCheck, int CritLot) 
{ 
   total = OrdersTotal();
   if(OrderCloseCheck==true)
   {
      int TP1,TS1;
      double m1,m2,m3,m4,m5,m6;
      m1=1.2;
      m2=1.25;
      m3=2.0;
      m4=1.0;
      m5=1.25;
      m6=1.0;
   
      OrderSelect(TicketArray[1],SELECT_BY_TICKET); 
      switch(CritLot)
      {
         case 1: volumz = (OrderLots()*2)*m1;
                  TP1=TP/m1;
                  TS1=TS/m1; 
                  break;
         case 2: volumz = (OrderLots()*2)*m2/m1;
                  TP1=TP/m2;
                  TS1=TS/m2; 
                  break;
         case 3: volumz = (OrderLots()*2)*m3/m2;
                  TP1=TP/m3;
                  TS1=TS/m3; 
                  break;
         case 4: volumz = (OrderLots()*2)*m4/m3;
                  TP1=TP/m4;
                  TS1=TS/m4;
                  break;
         case 5: volumz = (OrderLots()*2)*m5/m4;
                  TP1=TP/m5;
                  TS1=TS/m5;
                  break;
         case 6: volumz = (OrderLots()*2)*m6/m5;
                  TP1=TP/m6;
                  TS1=TS/m6;
                  break;
      }

      if(total < 1) 
      { 
         if(OrderType()==OP_SELL) 
         { 
            double lot3 = volumz; 
            ticket = OrderSend(Symbol(),OP_BUY,lot3,Ask,slip,Bid-TS1*Point,Bid+TP1*Point,0,Magic,0,Green); 

            if(ticket>0) 
            { 
               CriticalTicket = ticket; 
            } 
         } 
         if(OrderType()==OP_BUY) 
         { 
            OrderSelect(TicketArray[1],SELECT_BY_TICKET); 
            double lot4 = volumz; 
            ticket = OrderSend(Symbol(),OP_SELL,lot4,Bid,slip,Ask+TS1*Point,Ask-TP1*Point,0,Magic,0,Red); 

            if(ticket>0) 
            { 
               CriticalTicket = ticket; 
            } 
         } 
      } 
   }   
   if(OrderCloseCheck==false) 
   { 
      if(total < 1) 
      { 
         OrderSelect(TicketArray[1],SELECT_BY_TICKET); 
         volumz = OrderLots(); 
         if(OrderClosePrice() == OrderStopLoss()) 
         { 
            if(OrderType() == OP_BUY) 
            { 
               double lot1 = volumz*2; 
               ticket = OrderSend(Symbol(),OP_SELL,lot1,Bid,slip,Ask+TS*Point,Ask-TP*Point,0,Magic,0,Red); 
            } 
            if(OrderType() == OP_SELL) 
            { 
               double lot2 = volumz*2; 
               ticket = OrderSend(Symbol(),OP_BUY,lot2,Ask,slip,Bid-TS*Point,Bid+TP*Point,0,Magic,0,Green); 
            } 
         } 
         if(OrderClosePrice() == OrderTakeProfit()) 
         { 
            if(OrderType() == OP_BUY) 
            { 
               ticket = OrderSend(Symbol(),OP_BUY,lots,Ask,slip,Bid-TS*Point,Bid+TP*Point,0,Magic,0,Green); 
            } 
            if(OrderType() == OP_SELL) 
            { 
               ticket = OrderSend(Symbol(),OP_SELL,lots,Bid,slip,Ask+TS*Point,Ask-TP*Point,0,Magic,0,Red); 
            } 
         } 
      } 
   } 
} 

toutes les explications sont là... si j'en ai besoin de plus - je serai heureux de les fournir.

 
Bonjour à tous, bonne année. Je ne trouve pas de moyen de passer une commande une seule fois, si la condition est remplie après quoi la commande est passée, alors s'il y a une commande pour la deuxième fois, elle ne sera pas passée. Si vous pouvez donner un exemple.
Raison: