Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 285

 
 
buyanov:

J'ai reçu le message "virgule attendue" Je ne sais pas ce que cela signifie, peut-être devrais-je contacter les développeurs?


int WhatType()

//>>>>>>>>>>>>>>>>>>>>>

{



Alert("beg  WhatType()");



if(OrderSelect(NextTick,SELECT_BY_TICKET)==true) Alert("OrderSelected=",NextTick);

Alert(NextTick);



Alert("NextType=",NextType);

OpPrice=OrderOpenPrice();

ClPrice=OrderClosePrice();



if(ClPrice>OpPrice)CurType=OP_BUY;

else CurType=OP_SELL;



Alert("CurType=",CurType);



Alert("end WhatType()");

//>>>>>>>>>>>>>>>>>>>>>>>>>

}//Alert("end int WhatType()");


Dans quelle ligne le compilateur donne-t-il une erreur ?

 

Bonjour !

J'ai fait une ligne que je veux déplacer librement. Pour l'instant, vous devez cliquer sur la ligne et seulement ensuite vous pouvez la déplacer. Comment faire pour qu'il soit possible de déplacer la ligne sans double-cliquer ?

double startL;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
startL=Bid;

SetHLine(clrAqua, "", startL, STYLE_SOLID, 5);    
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---

  }

color array_color[5]={clrRed,clrAliceBlue,clrAqua,clrRoyalBlue,clrCrimson};
void OnChartEvent(const int    id,
                  const long   &lparam,
                  const double &dparam,
                  const string &sparam)
  {
   if(id==CHARTEVENT_OBJECT_DRAG)
     {
      Print("object name: ",sparam);
      ObjectSetInteger(0,sparam,OBJPROP_COLOR,array_color[rand()%5]);
     }
  }
    

void SetHLine(color cl, string nm="", double p1=0, int st=0, int wd=1) {
  if (nm=="") nm=DoubleToStr(Time[0], 0);
  if (p1<=0) p1=Bid;
  if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_HLINE, 0, 0,0);
  ObjectSet(nm, OBJPROP_PRICE1, p1);
  ObjectSet(nm, OBJPROP_COLOR , cl);
  ObjectSet(nm, OBJPROP_STYLE , st);
  ObjectSet(nm, OBJPROP_WIDTH , wd);
}
//+----------------------------------------------------------------------------+
 
Nauris Zukas:

Bonjour !

J'ai fait une ligne que je veux déplacer librement. Pour l'instant, vous devez cliquer sur la ligne et seulement ensuite vous pouvez la déplacer. Comment faire pour qu'il soit possible de déplacer la ligne sans double-cliquer ?

ObjectSetInteger(0,nm,OBJPROP_SELECTED,true);
En fait, vous avez écrit une très vieille conception
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_HLINE
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_HLINE
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_HLINE - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Vitaly Muzichenko:
ObjectSetInteger(0,nm,OBJPROP_SELECTED,true);


Merci, mais quelque chose n'a pas fonctionné. Je le dis comme ça, peut-être que quelque chose ne va pas ?

   if(id==CHARTEVENT_OBJECT_DRAG)
     {
      Print("object name: ",sparam);
      ObjectSetInteger(0,sparam,OBJPROP_SELECTED,true);
      ObjectSetInteger(0,sparam,OBJPROP_COLOR,array_color[rand()%5],true);     
     }
Vitaly Muzichenko:
En fait, vous avez écrit une structure très ancienne

J'ai cherché dans le forum, j'ai vu des constructions avec des classes, mais je ne suis pas doué pour les classes, donc je voulais commencer par le plus simple (en apparence).

 
Nauris Zukas:


Merci, mais quelque chose n'a pas fonctionné. Je mets cette fonction de cette façon, il doit y avoir quelque chose de mal ?

J'ai cherché dans le forum, j'ai vu des constructions avec des classes, mais je ne suis pas doué pour les classes, donc je voulais commencer par la plus simple (en termes d'apparence).

Il devrait y avoir une paire avec OBJPROP_SELECTABLE

   if(id==CHARTEVENT_OBJECT_DRAG)
     {
      Print("object name: ",sparam);
      ObjectSetInteger(0,sparam,OBJPROP_SELECTABLE,true);
      ObjectSetInteger(0,sparam,OBJPROP_SELECTED,true);
      ObjectSetInteger(0,sparam,OBJPROP_COLOR,array_color[rand()%5],true);     
     }
 
Alexey Viktorov:

Doit être associé à OBJPROP_SELECTABLE

Je ne sais pas, quelque chose ne fonctionne pas. Il ne bouge qu'après un double clic et la ligne devient noire.

 
Nauris Zukas:

Je ne sais pas, quelque chose ne fonctionne pas. Il ne bouge qu'après un double clic et la ligne devient noire.

Eh bien, ajoutez-en une autre avant ces deux lignes.

ObjectSetInteger(0, sparam, OBJPROP_HIDDEN, false);
 
Alexey Viktorov:

Alors, ajoutez une autre ligne devant ces deux lignes.

Ça n'a pas marché, peut-être qu'il y a une erreur dans le code?

Dossiers :
 
buyanov:

J'ai reçu le message "virgule attendue", je ne sais pas ce que cela signifie, peut-être devrais-je contacter les développeurs?


int WhatType()

//>>>>>>>>>>>>>>>>>>>>>

{


Alert("beg WhatType()") ;


si(OrderSelect(NextTick,SELECT_BY_TICKET)==true) Alert("OrderSelected=",NextTick) ;

Alert(NextTick) ;


Alert("NextType=",NextType) ;

OpPrice=OrderOpenPrice() ;

ClPrice=OrderClosePrice() ;


si(ClPrice>OpPrice)CurType=OP_BUY ;

sinon CurType=OP_SELL ;


Alert("CurType=",CurType) ;


Alert("end WhatType()") ;

//>>>>>>>>>>>>>>>>>>>>>>>>>

}//Alert("end int WhatType()") ;

Je l'ai collé dans MetaEditor, je l'ai modifié un peu - pas d'erreur.

void WhatType()
//>>>>>>>>>>>>>>>>>>>>>
{
Alert("beg  WhatType()");
int NextTick=1, NextType=1;
if(OrderSelect(NextTick,SELECT_BY_TICKET)==true) Alert("OrderSelected=",NextTick);
Alert(NextTick);
Alert("NextType=",NextType);
double OpPrice=OrderOpenPrice();
double ClPrice=OrderClosePrice();
int CurType;
if(ClPrice>OpPrice)CurType=OP_BUY;
else CurType=OP_SELL;
Alert("CurType=",CurType);
Alert("end WhatType()");
//>>>>>>>>>>>>>>>>>>>>>>>>>
}//Alert("end int WhatType()");