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

 
Link_x:
Bonjour !
Existe-t-il une fonction dans la fonction "Kim" qui calcule le montant du profit du dernier ordre ouvert ?

Je ne l'ai pas trouvé, maintenant je suis perplexe sur une fonction maison qui calcule la marge bénéficiaire du dernier ordre ouvert.


OrderProfit()

Si vous avez besoin de connaître exactement le dernier ordre ouvert, parcourez tous les ordres et choisissez celui qui est le plus récent , puis utilisez la fonction ci-dessus, qui vous donnera le bénéfice net de cet ordre.

 
Ekburg:


OrderProfit()

Si vous avez besoin de savoir exactement quel est le dernier ordre ouvert, passez en revue tous les ordres et choisissez celui dont l'heure d'ouverture est la plus tardive, puis utilisez la fonction ci-dessus, qui vous donnera le bénéfice net de cet ordre.


Comment j'obtiens une réponse juste à temps, juste au moment où je trouve une solution. :)
Pips_Proffit_Last_Pos = p - PriceOpenLastPos;
Mais merci quand même !
 

Ekburg К сожалению времени и возможности написать Вам готовый код нет, так как я на работе нахожусь))

Vous ne cherchez pas par l'historique, mais par les positions actuelles, voici une chaîne logique sur laquelle vous pouvez essayer d'écrire du code :

[bloc de travailler avec muwings et de passer une commande]

1 se souvenir du ticket et du numéro magique de la commande passée

2 surveiller le nombre d'ordres et s'il n'y a pas d'ordres sur le marché (cela signifie que notre ordre a été clôturé), alors passer au point3 ou surveiller cet ordre spécifique jusqu'à ce que son temps de clôture soit supérieur à zéro, auquel cas nous excluons les points 3 et 4

3 trouver notre commande

4 savoir si elle est fermée

5 découvrir comment il a été fermé

6 si elle a été fermée par un stop, placer un autre ordre différent de celle-ci dans le sens


//+------------------------------------------------------------------+
//|                                                          123.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"


extern double Lots = 0.1;
extern double TakeProfit = 100;
extern double StopLoss = 100;       
extern double TrailingStop = 50;
extern double Margincutoff = 100;   
extern double MagicNumber = 12345;
extern double TradeSizePercent = 5;
extern int Slippage = 10;


//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
  
  int Crossed (double line1, double line2)
  {
  static int last_direction=0;
  static int current_direction=0;
  
  if (line1>line2)current_direction=1;// пересечение вверх
  if (line1<line2)current_direction=2;// пересечение вниз
  
  if (current_direction!=last_direction)//изменения произошли
  {
  last_direction=current_direction;
  return(last_direction);
  }
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
    int cnt, ticket, total, totalhistory, memoryticket;
    double shortEMA, longEMA;
    
    if(Bars<100) 
     {
     Print("Bars less than 100");
     return(0);
     }
     shortEMA=iMA(NULL,0,8,0,MODE_EMA,PRICE_CLOSE,0);
     longEMA=iMA(NULL,0,13,0,MODE_EMA,PRICE_CLOSE,0);
     int isCrossed=Crossed(shortEMA, longEMA);
//----
   total=OrdersTotal();
   if(total<1) 
     {
      // нет открытых ордеров
      if(AccountFreeMargin()<(1000*Lots))
        {
         Print("We have no money. Free Margin = ", AccountFreeMargin());
         return(0);  
        }
      // проверяем пересечение МА для открытия позиции на покупку
      if(isCrossed==1)
        {
         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Ask-StopLoss*Point,Ask+TakeProfit*Point,"МА",12345,0,Green);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) 
            memoryticket= OrderTicket();// запомнили тикет
            Print("BUY order opened : ",OrderOpenPrice());
           }
         else Print("Error opening BUY order : ",GetLastError()); 
         return(0); 
        }
        //проверяем пересечение МА для открытия позиции на продажу
        if(isCrossed==2)
        {
         ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,Bid+StopLoss*Point,Bid-TakeProfit*Point,"MA",12345,0,Red);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) 
            memoryticket= OrderTicket();// запомнили тикет
            Print("SELL order opened : ",OrderOpenPrice());
           }
         else Print("Error opening SELL order : ",GetLastError()); 
         return(0); 
        }
         return(0); 
        }  
//----начинаем искать закрытые ордера

         //инициализация параметров
  
  int old_order_type;
 
   
  RefreshRates();
  
  //нет открытых ордеров - ищем в истории закрытых ордеров последний закрытый именно этим советником ордер 
  for ( totalhistory = OrdersHistoryTotal() - 1; totalhistory >= 0; totalhistory-- ) 
  {
     if ( OrderSelect(totalhistory, SELECT_BY_TICKET, MODE_HISTORY) && OrderTicket() == memoryticket && OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol() )
     {
         old_order_type = OrderType();
         if ( OrderProfit()<0 ) //последний закрытый советником ордер был убыточным, значит, следующий ордер открываем в направлении, противоположном закрытому с убытком
         {
                break; //прекращаем поиск
         }
     }
  }
  //если раньше покупали, то теперь продаем
  if ( old_order_type == OP_BUY )
  {
  ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,Bid+StopLoss*Point,Bid-TakeProfit*Point,"MA",12345,0,Red);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) 
            memoryticket= OrderTicket();// запомнили тикет
            Print("SELL order opened : ",OrderOpenPrice());
           }
         else Print("Error opening SELL order : ",GetLastError()); 
         return(0); 
        }
 //если раньше продавали, то теперь покупаем
  if ( old_order_type == OP_SELL )
  {
         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Ask-StopLoss*Point,Ask+TakeProfit*Point,"МА",12345,0,Green);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) 
            memoryticket= OrderTicket();// запомнили тикет
            Print("BUY order opened : ",OrderOpenPrice());
           }
         else Print("Error opening BUY order : ",GetLastError()); 
         return(0); 
        }
   return(0);
  }
//+------------------------------------------------------------------+
C'est ce que j'ai. Il ouvre réellement 3 lots. Je suis vraiment dans la merde. Pouvez-vous corriger le code ? Qu'est-ce qu'il y a ?
 
J'en ai marre de poser ces questions (incroyablement éprouvantes, pi****, désolé (putain de variables que je ne trouve pas (surtout ennuyeux, ce que je ne trouve pas moi-même)).

Quelle variable est responsable de la valeur actuelle du prix ?
J'ai cherché dans la documentation, il n'y a rien à part Bid, Ask, POINT_HIGH, POINT_LOW.
Cette variable existe-t-elle seulement ?
 
Link_x:
J'en ai marre de poser ces questions (incroyablement éprouvantes, pi****, désolé (putain de variables que je ne trouve pas (surtout ennuyeux, ce que je ne trouve pas moi-même)).

Quelle variable est responsable de la valeur actuelle du prix ?
J'ai cherché dans la documentation, il n'y a rien à part Bid, Ask, POINT_HIGH, POINT_LOW.
Cette variable existe-t-elle seulement ?
Avez-vous remarqué comment le prix change dans la fenêtre "Market Watch" ? Vous pouvez y voir les prix d' achat et de vente. Le premier est utilisé pour vendre et le second pour acheter.
 
Link_x:

Au moment où j'obtiens une réponse, au moment où je trouve une solution. :)
La solution est la suivante : "Prenez votre temps pour poser des questions". Et, considérant que vous n'obtenez pas toujours des réponses compétentes... :)))
 
khorosh:
Avez-vous remarqué comment le prix change dans la fenêtre Market Watch ? Vous pouvez y voir l'offre et la demande - ce sont les prix actuels. Le premier est utilisé pour vendre et le second pour acheter.

Exactement !
J'ai oublié une si petite chose !
 
TarasBY:
La solution est la suivante : "Ne vous précipitez pas pour poser des questions". Et, considérant que vous n'obtenez pas toujours des réponses compétentes... :)))
Oui, oui. :)
 
Link_x:
C'est vrai ! !!
J'ai oublié une si petite chose !!!

Vous répondez correctement, comme un véritable étudiant lors d'un examen : vous ne pouvez pas dire que vous ne savez pas - vous devez dire que vous avez oublié))).
 
Link_x:
Oui, oui. :)

Vous devriez peut-être essayer de répondre aux questions des autres plutôt que de poser les vôtres. Les avantages sont beaucoup plus grands (jusqu'à un certain point), certainement les avantages pour vous-même.
Raison: