[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 175

 

Bon après-midi, pourriez-vous me dire s'il existe un code


OrderSelect(OrdersHistoryTotal()-1, SELECT_BY_POS, MODE_HISTORY);//выбрать последний ордер
if (OrderType()==OP_BUY||OP_SELL)
 {
 if (OrderMagicNumber()==1)
  {
  if (OrderProfit()<0)

   {

qui sélectionnera le dernier ordre dans l'historique avec un profit négatif.

S'il y a une situation où 3 ordres sont fermés en même temps, comment puis-je savoir que les 3 derniers ordres ont été fermés en même temps ?

j'ai essayé de faire la boucle for, mais elle trouve tous les ordres clôturés à perte, alors que j'ai besoin seulement du dernier ordre ou de la dernière commande selon le nombre d'entre eux clôturés en une fois
.

 
BruDer:

Je n'ai pas trouvé de réponse dans la recherche

comment puis-je voir à partir du script quels indicateurs sont sur le graphique, quels paramètres et indicateurs, dans quelles sous-fenêtres ils sont situés ?

merci


Pas du tout.
 

vik-777:

comment puis-je savoir que les 3 derniers ont fermé en même temps ?

OrderCloseTime()
 
vik-777:

Bon après-midi, pourriez-vous me dire s'il existe un code


qui sélectionnera le dernier ordre dans l'historique avec un profit négatif.

S'il y a une situation où 3 ordres sont fermés en même temps, comment puis-je savoir que les 3 derniers ordres ont été fermés en même temps ?

j'ai essayé de faire la boucle for, mais elle trouve tous les ordres clôturés à perte, alors que j'ai besoin seulement du dernier ordre ou de la dernière commande selon le nombre d'entre eux clôturés en une fois
.




Si c'est le même, alors vous le comparez avec l'heure de clôture de votre ordre fermé précédent... comme ça, naturellement, c'est tout en boucle - du dernier fermé au premier, on va séquentiellement et on compare le temps de fermeture des commandes... Autre chose - imprimez l'heure de clôture des derniers ordres que vous connaissez à l'avance, disons trois ordres , elle peut être différente, même si vous la comprenez comme " simultanée", c'est-à-dire que d'après ce que je comprends, l'ordre se ferme à tout moment, c'est-à-dire... En fait, l'heure de clôture de, disons, trois ordres en même temps ne peut pas être la même - essayez d'imprimer () et voyez les valeurs de vos trois ordres TIME - leurs valeurs de caractéristiques OrderCloseTime(), c'est-à-dire que nous pourrions avoir à introduire le concept de TEMPS de clôture, c'est-à-dire la déviation de l'heure de clôture de plusieurs ordres par une petite valeur quand nous pouvons considérer qu'ils ont clôturé simultanément. Expérimentez et voyez par vous-mêmes à partir d'ici.
 

En prenant l'aide de la salle.

Comment écrire une condition dans OrderSelect():

if(order opening day != today's day)ticket=OrderTicket() ;

 
if(TimeDay(OrderOpenTime())!=TimeDay(CurrentTime()))ticket=OrderTicket() ;
 
ikatsko:

COMMENT COMPTEZ-VOUS LE NOMBRE DE POSITIONS LONGUES RENTABLES ET SÉPARÉMENT LE NOMBRE DE POSITIONS COURTES RENTABLES ?

La stratégie est la suivante : si le nombre de positions longues rentables depuis le début de l'Expert Advisor (ou mieux - pour tout l'historique du compte) est supérieur au nombre de positions courtes, alors seules les positions longues devraient être autorisées à être ouvertes. Et vice versa.

Il est clair comment compter ces transactions, si elles sont fermées par le Conseiller Expert : Fermer - Compter. Mais si une position est fermée par le TP ou le SL, alors ... ?

Peut-être que quelqu'un a un code prêt de la fonction ?

Eh bien, comparez dans une boucle sur les positions fermées leur prix de clôture et leurs prix de prise et d'arrêt :

OrderTakeProfit() ; OrderStopLoss() ; OrderClosePrice() ;

Et il est encore plus facile de sélectionner OP_BUY et OP_SELL et d'écrire dans quatre variables distinctes le nombre de positions d'achat et de vente perdantes et rentables.

si (OrderProfit()+OrderSwap()+OrderCommission()>0) { /* la position est profitable */ }
else { /* la position est perdante */ }

 
Merci !
 

J'ai tout regardé, j'ai tout fait... Il n'ouvre pas de poste, c'est tout ! Il se ferme correctement, mais il ne s'ouvre pas... Je ne sais pas quoi faire ! Peut-être que quelqu'un trouvera un bug dans le programme ?

 
//+------------------------------------------------------------------+
//|                                                     DOKTRADE.mq4 |
//|                                                DOKSTER@YANDEX.RU |
//|                                                DOKSTER@YANDEX.RU |
//+------------------------------------------------------------------+
#property copyright "DOKSTER@YANDEX.RU"
#property link      "DOKSTER@YANDEX.RU"

   extern double LOT = 0.01;   // LOTS
   extern double KOF = 2;
   extern double SAF = 5;
   extern int    FRC = 144;
   extern double STL = 100;
   extern double TPF = 100;
   
   int start()
     
    { 


int CNT;

int DIG;

int TOTAL;
int SPREAD;

double SPR;
double SPRW;

double FRCU;
double FRCD;

double EMAH;
double EMAM;
double EMAL;

double OPEN;
double CLOSE;

double DFB;
double DFS;

double STLW = STL*Point;
double TPFW = TPF*Point;

double SAFW = SAF*Point;

EMAH = iMA(NULL,0,34,8,MODE_SMA,PRICE_HIGH,1);
EMAM = iMA(NULL,0,34,8,MODE_SMA,PRICE_MEDIAN,1);
EMAL = iMA(NULL,0,34,8,MODE_SMA,PRICE_LOW,1);

OPEN = iOpen(NULL,0,1);
CLOSE = iClose(NULL,0,1);

FRCU = High[iHighest(NULL,0,MODE_HIGH,FRC,1)];
FRCD = Low[iLowest(NULL,0,MODE_LOW,FRC,1)];

DFB = (CLOSE-FRCD);
DFS = (FRCU-CLOSE);

SPR = MarketInfo(Symbol(),MODE_SPREAD);
SPRW = (SPR*Point);

DIG = MarketInfo(Symbol(),MODE_DIGITS);

TOTAL = OrdersTotal();


if(TOTAL<1)

 { if (OPEN<EMAH&&CLOSE>EMAH)
   
   OrderSend(Symbol(),OP_BUY,LOT,Ask,3,0,0,"DOKTRADE",15775,0,Green);
  
 
   if (OPEN>EMAL&&CLOSE<EMAL)
 
   OrderSend(Symbol(),OP_SELL,LOT,Bid,3,0,0,"DOKTRADE",15885,0,Red);
  
  return(0);
 
    }
    
           
      
  for(CNT=0;CNT<TOTAL;CNT++)    
  
  {
      
  OrderSelect(CNT,SELECT_BY_POS,MODE_TRADES);
  
  {
  
  if (OrderType()==OP_BUY && OrderSymbol()==Symbol())   
                                             
      {
      
       if (OPEN>EMAL&&CLOSE<EMAL)    
     
        OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
        
         if (OPEN>EMAM&&CLOSE>EMAM)
          
           OrderModify(OrderTicket(),OrderOpenPrice(),FRCD-SAFW,CLOSE+DFB,Green);
        
        return(0);
        
        }
        
  if (OrderType()==OP_SELL && OrderSymbol()==Symbol())
        
      {
       
         if (OPEN<EMAH&&CLOSE>EMAH)
         
         OrderClose(OrderTicket(),OrderLots(),Ask,3,Blue);
         
          if (OPEN<EMAM&&CLOSE<EMAM)
           
           OrderModify(OrderTicket(),OrderOpenPrice(),FRCU+(SAFW+SPRW),CLOSE-DFS,Red);
       
         return(0);
         
         }
          }
           }
            }
Raison: