MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 285

 
 
buyanov :

"virgül bekleniyor" mesajını aldı, bunun ne anlama geldiği açık değil, belki geliştiricilerle iletişim kurmaya değer?


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


Derleyici hangi satırda hata veriyor?

 

Tünaydın!

Özgürce hareket etmek istediğim bir çizgi yaptım. Şu anda çizgiye tıklamanız gerekiyor ve ancak o zaman hareket ettirebilirsiniz. Çizgiyi çift tıklamadan hemen hareket ettirmek nasıl mümkün olur?

 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 :

Tünaydın!

Özgürce hareket etmek istediğim bir çizgi yaptım. Şu anda çizgiye tıklamanız gerekiyor ve ancak o zaman hareket ettirebilirsiniz. Çizgiyi çift tıklamadan hemen hareket ettirmek nasıl mümkün olur?

 ObjectSetInteger ( 0 ,nm, OBJPROP_SELECTED , true );
Genel olarak, çok eski bir yapı yazdınız
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_HLINE
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_HLINE
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_HLINE - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Vitaly Muzichenko :
 ObjectSetInteger ( 0 ,nm, OBJPROP_SELECTED , true );


Teşekkürler, ama bir şey işe yaramadı. Bu işlevi böyle ayarladım, muhtemelen bir şeyler doğru değil mi?

   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 :
Genel olarak, çok eski bir yapı yazdınız

Forumu araştırdım, sınıflı yapılar gördüm ama sınıfları anlamıyorum, bu yüzden en basitinden (görünüşte) başlamak istedim.

 
Nauris Zukas :


Teşekkürler, ama bir şey işe yaramadı. Bu işlevi böyle ayarladım, muhtemelen bir şeyler doğru değil mi?

Forumu araştırdım, sınıflı yapılar gördüm ama sınıfları anlamıyorum, bu yüzden en basitinden (görünüşte) başlamak istedim.

OBJPROP_SELECTABLE ile eşleştirilmelidir

   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 :

OBJPROP_SELECTABLE ile eşleştirilmelidir

Bir şey çalışmıyor bilmiyorum. Yalnızca çift tıkladıktan sonra hareket eder ve çizgi siyah olur.

 
Nauris Zukas :

Bir şey çalışmıyor bilmiyorum. Yalnızca çift tıkladıktan sonra hareket eder ve çizgi siyah olur.

Peki o zaman bu iki satırın önüne daha fazlasını ekleyin

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

Peki o zaman bu iki satırın önüne daha fazlasını ekleyin

Yardımcı olmadı, belki kodda bir hata var?

Dosyalar:
 
buyanov :

"virgül bekleniyor" mesajını aldı, bunun ne anlama geldiği açık değil, belki geliştiricilerle iletişim kurmaya değer?


int NeTip()

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

{


Alert("WhatType()'a sorun");


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

Uyarı(SonrakiTick);


Alert("NextType=",NextType);

OpPrice=SiparişOpenFiyat();

ClPrice=SiparişKapatFiyat();


if(ClPrice>OpPrice)CurType=OP_BUY;

başka CurType=OP_SELL;


Alert("CurType=",CurType);


Alert("WhatType()'ı sonlandır");

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

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

MetaEditor'a eklendi, hafifçe ayarlandı - hata yok

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