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

 

Sorun nedir?

Bir şablon sınıfı var

 template < typename T>
class MyList{
 private :
    T *array[];
     int _size;
public :
    WavesList(){
        _size = 0 ;
    }
     void add(T &obj){
        _size++;
         ArrayResize (array, _size, 0 );
        array[_size- 1 ] = obj;
    }
     void cut(){
         delete array[_size- 1 ];
        _size--;
         ArrayResize (array, _size, 0 );
    }
     int size(){
         return _size;
    }
    T lastWave(){
         return array[size- 1 ];
    }
};

Sonra kodda bunu yapmaya çalışıyorum:

MyList myList<OtherClass>();

Yemin ederim!

 
Roman Sharanov :

Sonra kodda bunu yapmaya çalışıyorum:

Yemin ederim!

böyle gerekir:

MyList<OtherClass> myList;

https://www.mql5.com/en/forum/221917/page25#comment_11205772 yayınlanan şablonlarla çalışma örneği burada

bak, benim koduma benzeterek seninkini yazabilir.

Библиотека Generic классов - ошибки, описание, вопросы, особенности использования и предложения
Библиотека Generic классов - ошибки, описание, вопросы, особенности использования и предложения
  • 2019.04.03
  • www.mql5.com
С 6 декабря 2017 года в стандартную поставку MetaTrader 5 стали входить так называемые Generic-классы, реализующие эффективные алгоритмы для хранен...
 
Igor Makanu :

böyle gerekir:

https://www.mql5.com/ru/forum/221917/page25#comment_11205772 yayınlanan şablonlarla çalışma örneği burada

bak, benim koduma benzeterek seninkini yazabilir.

teşekkür ederim

 

metnin konumunu çizgiye göre ayarlamak mümkün mü?

satır programlı olarak oluşturulur, metin satırın üzerine çizilir, ancak bazı durumlarda metnin altında olması gerekir...


nasıl uygulanır?


 void paintShLine( datetime sdata, datetime edata, double bev, string nm, string txt, color cl)
   {
       ObjectCreate ( 0 , nm, OBJ_TREND , 0 , sdata, bev, edata, bev);
       
       //--- установим цвет линии
       ObjectSetInteger ( 0 ,nm, OBJPROP_COLOR ,cl);
       //--- установим стиль отображения линии
       ObjectSetInteger ( 0 ,nm, OBJPROP_STYLE , STYLE_DASH );
       //--- установим толщину линии
       ObjectSetInteger ( 0 ,nm, OBJPROP_WIDTH , 1 );
       //--- включим (true) или отключим (false) режим продолжения отображения линии вправо
       ObjectSetInteger ( 0 ,nm, OBJPROP_RAY_RIGHT , true );
       ObjectSetInteger ( 0 ,nm, OBJPROP_RAY , true );    
       //--- отобразим на переднем (false) или заднем (true) плане
       ObjectSetInteger ( 0 ,nm, OBJPROP_BACK , true );
       //--- включим (true) или отключим (false) режим перемещения линии мышью
       ObjectSetInteger ( 0 ,nm, OBJPROP_SELECTABLE , false );
       ObjectSetInteger ( 0 ,nm, OBJPROP_SELECTED , false );
       //--- установим текст
       if (showShadowText) ObjectSetString ( 0 ,nm, OBJPROP_TEXT , "  " +txt);
       //--- скроем (true) или отобразим (false) имя графического объекта в списке объектов
       ObjectSetInteger ( 0 ,nm, OBJPROP_HIDDEN , true );
 }
 
Tünaydın,
Bir alış anlaşması açarken, danışmanın açılan anlaşmanın işlem lotunu maksimum işlem lotu ile karşılaştırmasını ve lot belirli bir değerin üzerindeyse, danışmanın otomatik olarak son anlaşmayı kapatmasını sağlamak istiyorum.

Aşağıdaki örnekte, işlem lotu 2'den yüksekse danışmanın anlaşmaları kapattığını belirtti. Bu koşulun işe yarayacağını düşünüyor musunuz?

if ((typeLastOrder==OP_BUY && orderlots()>2 || typeLastOrder==OP_BUYSTOP && orderlots()>2 || typeLastOrder==OP_BUYLIMIT && orderlots()>2)){
Uyarı ("2'den çok daha fazla kullanılması yasaktır");
CloseDelete(son bilet);
dönüş;
}
 
Konstantins Korolkovs :
Tünaydın,
Bir alış anlaşması açarken, danışmanın açılan anlaşmanın işlem lotunu maksimum işlem lotu ile karşılaştırmasını ve lot belirli bir değerin üzerindeyse, danışmanın otomatik olarak son anlaşmayı kapatmasını sağlamak istiyorum.

Aşağıdaki örnekte, işlem lotu 2'den yüksekse danışmanın anlaşmaları kapattığını belirtti. Bu koşulun işe yarayacağını düşünüyor musunuz?

if ((typeLastOrder==OP_BUY && orderlots()>2 || typeLastOrder==OP_BUYSTOP && orderlots()>2 || typeLastOrder==OP_BUYLIMIT && orderlots()>2)){
Alert("2'den fazla kullanılması yasaktır");
CloseDelete(son bilet);
dönüş;
}

Neden önce açıp sonra kapatıyorsun? Belki de hiç açmamak daha iyidir?

 
Alexey Viktorov :

Neden önce açıp sonra kapatıyorsun? Belki de hiç açmamak daha iyidir?

açgözlülüğünü kontrol etmek için

 

Kırmızı, yeşil, sarı şeklinde mumların üzerinde sola, sağa veya yatay olarak kaydırmaya yardımcı olan kene sayısı nadirdir. Bu sayılar dikey hareket ediyor ama yatay olarak yapamıyorum. Çok gerekli ve yandan güzel görünmüyorlar ama ben onların bahsettiği mumun karşısında olmasını istiyorum. Gösterge kodu:


//+------------------------------------------- --------------------+

//| İnce hacimler.mq4 |
//| eevvill |
//| itisallillusion@gmail.com |
//+------------------------------------------- --------------------+
# mülkiyet telif hakkı "Aliev"
#özellik bağlantısı "businessystems.com"

#özellik göstergesi_separate_window
#özellik göstergesi_minimum 0
#özellik göstergesi_buffers 6

#özellik göstergesi_width1 2
#özellik göstergesi_width2 2
#özellik göstergesi_width3 2
#özellik göstergesi_width4 4
#özellik göstergesi_width5 4

#özellik göstergesi_renk1 Gök Mavisi
#özellik göstergesi_color2 Bordo
#özellik göstergesi_color3 Sarı
#özellik göstergesi_color4 Mavi
#özellik göstergesi_renk5 Kırmızı



extern int BarsToCount = 400;

dış dize pus1 = "";
extern string p_s = "Puan ayarları";
extern bool use_points = true;
harici int mesafe_noktası = 80;
dış renk color_point_u = kireç;
dış renk color_point_d = Kırmızı;
dış renk color_point_s = Sarı;
harici int size_point = 6;

dış dize pus2 = "";
harici string s_w = "yol";
extern bool use_show_same_way = doğru;
extern bool use_show_daily_way = true;

dış dize pus3 = "";
extern string al = "Uyarılar";
extern bool use_alerts = yanlış;
extern string up_alert = "Yukarı";
extern string down_alert = "Aşağı";




ikiye katlamak[];
çift aşağı[];
çift orta[];
ikiye katla2[];
çift aşağı2[];
çift yok[];

static int prevtime = 0;

//////////////////////////////////
int init()
{
SetIndexStyle(0,DRAW_HISTOGRAM);
SetIndexBuffer(0,up);
SetIndexStyle(1,DRAW_HISTOGRAM);
SetIndexBuffer(1, aşağı);
SetIndexStyle(2,DRAW_HISTOGRAM);
SetIndexBuffer(2,orta);
SetIndexStyle(3,DRAW_HISTOGRAM);
SetIndexBuffer(3,up2);
SetIndexStyle(4,DRAW_HISTOGRAM);
SetIndexBuffer(4,down2);
SetIndexStyle(5,DRAW_NONE);
SetIndexBuffer(5,yok);


GöstergeShortName("Aliev FX Birimleri");


dönüş(0);
}

//////////////////////////////////
int tanım()
{
string name_de;
for(int c=BarsToCount;c>=0;c--)
{
name_de="Vol_"+DoubleToStr(c,0);
if(ObjectFind(name_de)!=-1) ObjectDelete(name_de);
}
dönüş(0);
}


/////////////////////////////////////
int başlangıç()
{
///////////
yukarı[0]=BOŞ_VALUE;
aşağı[0]=BOŞ_VALUE;
mid[0]=BOŞ_VALUE;
if(Close[0]>Open[0]) up[0]=Volume[0];
if(Close[0]<Open[0]) down[0]=Volume[0];
if(Close[0]==Open[0]) mid[0]=Volume[0];

///////////////
if(use_points)
obcre(0);

if(!use_points)
Obdel(0);
////////
if(use_show_daily_way)
Ob_cre2();
if(!use_show_daily_way)
Ob_del2();

///////////
if (Zaman[0] == önceki zaman) return(0);
prevtime = Zaman[0];
////////////////////////
for(int c=BarsToCount;c>=1;c--)
{
///////////
if(use_points)
Obcre(c);

if(!use_points)
Ob_del(c);
///////////
yukarı[c]=BOŞ_DEĞER;
aşağı[c]=BOŞ_DEĞER;
orta[c]=BOŞ_DEĞER;
up2[c]=BOŞ_DEĞER;
down2[c]=BOŞ_DEĞER;




////////////////
if(Kapat[c]>Aç[c]) up[c]=Hacim[c];
if(Close[c]<Open[c]) down[c]=Volume[c];
if(Kapat[c]==Aç[c]) mid[c]=Hacim[c];
yok[c]=Hacim[c]+Hacim[c]/6;


/////////////
if(use_show_same_way)
{

if(Kapat[c]>Aç[c] && Kapat[c+1]>Aç[c+1])
{
up2[c]=Hacim[c]; up2[c+1]=Hacim[c+1];
yukarı[c]=BOŞ_DEĞER; yukarı[c+1]=BOŞ_DEĞER;
}

if(Kapat[c]<Aç[c] && Kapat[c+1]<Aç[c+1])
{
down2[c]=Hacim[c]; down2[c+1]=Hacim[c+1];
aşağı[c]=BOŞ_DEĞER; aşağı[c+1]=BOŞ_DEĞER;
}

}


if(use_alerts)
{
if(up2[1]!=BOŞ_DEĞER && up2[4]==BOŞ_DEĞER) Alert(up_alert);
if(down2[1]!=BOŞ_DEĞER && down2[4]==BOŞ_DEĞER) Alert(down_alert);
}



}
dönüş(0);
}
//işlev
//+------------------------------------------- -------------------+/////////////////////////// /
geçersiz Ob_cre(int num_of_bar)
{
string name="Vol_"+DoubleToStr(num_of_bar,0);

colorcol_po;
if(Close[num_of_bar]>Open[num_of_bar]) col_po=color_point_u;
if(Close[num_of_bar]<Open[num_of_bar]) col_po=color_point_d;
if(Close[num_of_bar]==Aç[num_of_bar]) col_po=color_point_s;

if(ObjectFind(ad)==-1)
{
ObjectCreate(isim,OBJ_TEXT,0,0,0);
}
ObjectSet(name,OBJPROP_TIME1,Time[sayı_bar]);
ObjectSet(name,OBJPROP_PRICE1,Yüksek[sayı_bar]+mesafe_noktası*Nokta);
ObjectSet(isim,OBJPROP_ANGLE,90);
ObjectSetText(name,DoubleToStr(Volume[sayı_bar],0),size_point,"Arrial",col_po);


}

////////////////////////////////////
geçersiz Ob_cre2()
{
int Num_of_win = WindowFind("Aliev FX Birimleri");

if(ObjectFind("D_w")==-1)
{
ObjectCreate("D_w",OBJ_LABEL,Num_of_win,0,0);
ObjectSet("D_w",OBJPROP_CORNER,1);
ObjectSet("D_w",OBJPROP_XDISTANCE,20);
ObjectSet("D_w",OBJPROP_YDISTANCE,20);
ObjectSetText("D_w","Günlük hacim",10,"Varış",Beyaz);
}


if(ObjectFind("D_w_v")==-1)
{
ObjectCreate("D_w_v",OBJ_LABEL,Num_of_win,0,0);
ObjectSet("D_w_v",OBJPROP_CORNER,1);
ObjectSet("D_w_v",OBJPROP_XDISTANCE,20);
ObjectSet("D_w_v",OBJPROP_YDISTANCE,45);
}
renk vol_col;
if(iClose(Symbol(), PERIOD_D1 ,0)>iOpen(Symbol(),PERIOD_D1,0)) vol_col=Kireç;
if(iClose(Symbol(),PERIOD_D1,0)<iOpen(Symbol(),PERIOD_D1,0)) vol_col=OrangeRed;

ObjectSetText("D_w_v",DoubleToStr(iVolume(Symbol(),PERIOD_D1,0),0),12,"Varış",vol_col);


}

///////////////////////////////////////////// //////////////
geçersiz Ob_del(int num_of_bar)
{
string name="Vol_"+DoubleToStr(num_of_bar,0);

if(NesneBul(ad)!=-1)
{
ObjectDelete(isim);
}


}

////////////////////////////////////
geçersiz Ob_del2()
{
if(ObjectFind("D_w")!=-1)
ObjectDelete("D_w");


if(ObjectFind("D_w_v")!=-1)
ObjectDelete("D_w_v");



}
 
koctja :

Kırmızı, yeşil, sarı şeklinde mumların üzerinde sola, sağa veya yatay olarak kaydırmaya yardımcı olan kene sayısı nadirdir. Bu sayılar dikey hareket ediyor ama yatay olarak yapamıyorum. Çok gerekli ve yandan güzel görünmüyorlar ama ben onların bahsettiği mumun karşısında olmasını istiyorum. Gösterge kodu:


Bu gibi durumlarda, sayıdan önce bir boşluk görüntülerdim (baskı yatay ise) ...
 
koctja :

Kırmızı, yeşil, sarı şeklinde mumların üzerinde sola, sağa veya yatay olarak kaydırmaya yardımcı olan kene sayısı nadirdir. Bu sayılar dikey hareket ediyor ama ben yatay olarak yapamıyorum. Çok gerekli ve yandan güzel görünmüyorlar ama ben onların bahsettiği mumun karşısında olmasını istiyorum. Gösterge kodu:

OBJ_TEXT nesnesi için deneyin, özelliklerde bağlantı noktası ayarlayın


ANCHOR_CENTER

Bağlantı noktası kesinlikle nesnenin merkezinde


 ObjectSetInteger ( 0 ,name, OBJPROP_ANCHOR , ANCHOR_CENTER );