Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 285

 
 
buyanov:

recebeu a mensagem "vírgula esperada" Não sei o que significa, talvez eu devesse entrar em contato com os desenvolvedores?


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()");


Em que linha o compilador dá um erro?

 

Boa tarde!

Fiz uma linha que eu quero mover livremente. No momento, você tem que clicar na linha e só então você pode movê-la. Como posso fazer para mover a linha sem fazer duplo clique?

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:

Boa tarde!

Fiz uma linha que eu quero mover livremente. No momento, você tem que clicar na linha e só então você pode movê-la. Como posso fazer para mover a linha sem fazer duplo clique?

ObjectSetInteger(0,nm,OBJPROP_SELECTED,true);
Na verdade, você escreveu um projeto muito antigo
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_HLINE
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_HLINE
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_HLINE - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Vitaly Muzichenko:
ObjectSetInteger(0,nm,OBJPROP_SELECTED,true);


Obrigado, mas algo não funcionou. Dito desta forma, talvez algo esteja errado?

   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:
Na verdade, você escreveu uma construção muito antiga.

Procurei no fórum, vi construções com aulas, mas não sou bom em aulas, então quis começar com as mais simples (na aparência).

 
Nauris Zukas:


Obrigado, mas algo não funcionou. Coloco esta função desta forma, deve ser algo errado?

Procurei no fórum, vi construções com aulas, mas não sou bom em aulas, então quis começar com a mais simples (em termos de aparência).

Deve haver um par com 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:

Deve ser emparelhado com OBJPROP_SELECTABLE

Não sei, algo não está funcionando. Ela só se move após um duplo clique e a linha fica preta.

 
Nauris Zukas:

Eu não sei, algo não funciona. Ela só se move após um duplo clique e a linha fica preta.

Bem, então acrescente outra antes destas duas linhas.

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

Bem, então acrescente outra linha na frente dessas duas linhas.

Não funcionou, talvez haja um erro no código?

Arquivos anexados:
 
buyanov:

Eu recebi a mensagem "vírgula esperada", não sei o que significa, será que devo entrar em contato com os desenvolvedores?


int WhatType()

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

{


Alerta("beg WhatType()");


if(OrderSelect(NextTick,SELECT_BY_TICKET)==verdadeiro) Alerta("OrderSelected=",NextTick);

Alerta(NextTick);


Alerta("NextType=",NextType);

OpPrice=OrderOpenPrice();

ClPrice=OrderClosePrice();


if(ClPrice>OpPrice)CurType=OP_BUY;

ou então CurType=OP_SELL;


Alerta("CurType=",CurType);


Alerta("end WhatType()");

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

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

Coloquei-o no MetaEditor, ajustei-o um pouco - sem erros

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()");
Razão: