Yeni başlayanlardan sorular MQL4 MT4 MetaTrader 4 - sayfa 36

 

Merhaba sevgililer!

kodu düzeltmeye yardımcı olun, böylece çubukların üzerindeki etiketler, yanlarda değil, yükseklerin üzerinde çubuğun ortasında olur

#mülkiyet katı
#özellik göstergesi_chart_window

girdi int MetinSize = 8; //yazı Boyutu
girdi rengi TextColor = clrYellow; //metin rengi
girdi int TextAngle = 90; //metin döndürme açısı
giriş int MaxBar = 100; // 0'dan başlayarak mum boyutunun hesaplandığı çubuk sayısı

int OnInit()
{
dönüş(INIT_SUCCESSED);
}

int OnCalculate(const int oranları_toplam,
const int önceki_hesaplanmış,
const tarihsaat &saat[],
const double &aç[],
const çift &yüksek[],
const çift &düşük[],
const double &kapat[],
const uzun &tick_volume[],
const uzun &hacim[],
const int &spread[])
{
int i;
for ( i = 0; i < MaxBar; i++ ) {
if ( ObjectFind("candlesize"+ IntegerToString(i)) >=0 ) {
ObjectDelete("candlesize"+ IntegerToString(i));
}
ObjectCreate("candlesize"+ IntegerToString(i),
OBJ_TEXT,
0,
zaman[i],
yüksek[i]+StepPer()*Nokta);
ObjectSet("candlesize"+IntegerToString(i),
OBJPROP_ANGLE,
MetinAçısı
);
ObjectSetText("candlesize"+IntegerToString(i),
DoubleToStr(NormalizeDouble((yüksek[i]-düşük[i]+Nokta)/Nokta, 0), 0),
yazı Boyutu,
BOŞ,
metin rengi
);
}
dönüş(oranlar_toplam);
}

int StepPer()
{
int ben = 0;
geçiş (Dönem())
{
PERIOD_M1 durumu:
ben = 5;
kırmak;
PERIOD_M5 durumu:
ben = 15;
kırmak;
durum PERIOD_M15:
ben = 25;
kırmak;
ben = 40;
kırmak;
PERIOD_H1 durumu:
ben = 60;
kırmak;
PERIOD_H4 durumu:
ben = 90;
kırmak;
PERIOD_D1 durumu:
ben = 220;
kırmak;
PERIOD_W1 durumu:
ben = 500;
kırmak;
PERIOD_MN1 durumu:
ben = 2000;
kırmak;
varsayılan:
kırmak;
}
dönüş(i);
}

 
ed3sss :

Kanıt: Print("Önceki çalışma PriceAsk-",PriceAsk); günlük boş.

Ayrıntılar olmadan, bu bir kanıt değildir))) init'in tam metnini ve değişkenlerin bildirimini gösterin.

Ayrıca, en sonuncusuna ihtiyacınız varsa, neden hesabın ömrünün en başından itibaren TÜM siparişleri kontrol edin ??? - 10 döviz çifti açıksa başka nasıl yapılır?

Sondan yineleyin ve döngüden zamanında çıkın. 10 çifte ne dersin? En az yüz, orada bir sembol seçeneğiniz var.

 
Игорь :

Merhaba sevgililer!

kodu düzeltmeye yardımcı olun, böylece çubukların üzerindeki etiketler, yanlarda değil, yükseklerin üzerinde çubuğun ortasında olur

Kod eklemek için SRC düğmesinin nasıl kullanılacağını öğrenme.

Ve OBJPROP_ANCHOR hakkında okuduk.

 
Vitalie Postolache :

Kod eklemek için SRC düğmesinin nasıl kullanılacağını öğrenme.

Ve OBJPROP_ANCHOR hakkında okuduk.

hepsini aldım teşekkürler!

Sertlik için özür dilerim!

 
Игорь :

hepsini aldım teşekkürler!

Sertlik için özür dilerim!

#property strict
#property indicator_chart_window

input int       TextSize = 8 ; //размер шрифта
input color     TextColor = clrYellow ; //цвет текста
input int       TextAngle = 90 ; //угол поворота текста
input int       MaxBar = 100 ;   //количество баров, начиная с 0, для которых вычисляется размер свечей

int OnInit ()
{
   return ( INIT_SUCCEEDED );
}

int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
{
   int i;
   for ( i = 0 ; i < MaxBar; i++ )   {
       if ( ObjectFind ( "candlesize" + IntegerToString (i)) >= 0 )   {
             ObjectDelete ( "candlesize" + IntegerToString (i));
      }
       ObjectCreate ( "candlesize" + IntegerToString (i),  
                     OBJ_TEXT ,  
                     0 ,  
                    time[i],  
                    high[i]+StepPer()* Point );
       //--- установим привязку к правому верхнему углу
       ObjectSetInteger ( ChartID (), "candlesize" + IntegerToString (i), OBJPROP_ANCHOR , ANCHOR_UPPER );
     ObjectSet (   "candlesize" + IntegerToString (i),  
                     OBJPROP_ANGLE ,  
                    TextAngle
                 );
       ObjectSetText ( "candlesize" + IntegerToString (i),  
                       DoubleToStr ( NormalizeDouble ((high[i]-low[i]+ Point )/ Point , 0 ), 0 ),  
                      TextSize,  
                       NULL ,  
                      TextColor
                     );
   }
   return (rates_total);
}

int StepPer ()
{
     int i = 0 ;
     switch ( Period ())
     {
           case PERIOD_M1 :
          i = 5 ;
           break ;
           case PERIOD_M5 :
          i = 15 ;
           break ;
           case PERIOD_M15 :
          i = 25 ;
           break ;
           case PERIOD_M30 :
          i = 40 ;
           break ;
           case PERIOD_H1 :
          i = 60 ;
           break ;
           case PERIOD_H4 :
          i = 90 ;
           break ;
           case PERIOD_D1 :
          i = 220 ;
           break ;
           case PERIOD_W1 :
          i = 500 ;
           break ;
           case PERIOD_MN1 :
          i = 2000 ;
           break ;
           default :  
           break ;
     }
     return (i);
}  
Onu koydum ve hala ortalanmadı ve yanlış çubukta!?
 
#property strict
#property indicator_chart_window

input int       TextSize = 8 ; //размер шрифта
input color     TextColor = clrYellow ; //цвет текста
input int       TextAngle = 90 ; //угол поворота текста
input int       MaxBar = 100 ;   //количество баров, начиная с 0, для которых вычисляется размер свечей

int OnInit ()
{
   return ( INIT_SUCCEEDED );
}

int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
{
   int i;
   for ( i = 0 ; i < MaxBar; i++ )   {
       if ( ObjectFind ( "candlesize" + IntegerToString (i)) >= 0 )   {
             ObjectDelete ( "candlesize" + IntegerToString (i));
      }
       ObjectCreate ( "candlesize" + IntegerToString (i),  
                     OBJ_TEXT ,  
                     0 ,  
                    time[i],  
                    high[i]+StepPer()* Point );
       //--- установим привязку к правому верхнему углу
       ObjectSetInteger ( ChartID (), "candlesize" + IntegerToString (i), OBJPROP_ANCHOR , ANCHOR_UPPER );
     ObjectSet (   "candlesize" + IntegerToString (i),  
                     OBJPROP_ANGLE ,  
                    TextAngle
                 );
       ObjectSetText ( "candlesize" + IntegerToString (i),  
                       DoubleToStr ( NormalizeDouble ((high[i]-low[i]+ Point )/ Point , 0 ), 0 ),  
                      TextSize,  
                       NULL ,  
                      TextColor
                     );
   }
   return (rates_total);
}

int StepPer ()
{
     int i = 0 ;
     switch ( Period ())
     {
           case PERIOD_M1 :
          i = 5 ;
           break ;
           case PERIOD_M5 :
          i = 15 ;
           break ;
           case PERIOD_M15 :
          i = 25 ;
           break ;
           case PERIOD_M30 :
          i = 40 ;
           break ;
           case PERIOD_H1 :
          i = 60 ;
           break ;
           case PERIOD_H4 :
          i = 90 ;
           break ;
           case PERIOD_D1 :
          i = 220 ;
           break ;
           case PERIOD_W1 :
          i = 500 ;
           break ;
           case PERIOD_MN1 :
          i = 2000 ;
           break ;
           default :  
           break ;
     }
     return (i);
}  
Beyler, serseri nuna'ya merkezdeki yükseklere yardım edin, pervaz nerede!?
 
Игорь :
#property strict
#property indicator_chart_window

input int       TextSize = 8 ; //размер шрифта
input color     TextColor = clrYellow ; //цвет текста
input int       TextAngle = 90 ; //угол поворота текста
input int       MaxBar = 100 ;   //количество баров, начиная с 0, для которых вычисляется размер свечей

int OnInit ()
{
   return ( INIT_SUCCEEDED );
}

int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
{
   int i;
   for ( i = 0 ; i < MaxBar; i++ )   {
       if ( ObjectFind ( "candlesize" + IntegerToString (i)) >= 0 )   {
             ObjectDelete ( "candlesize" + IntegerToString (i));
      }
       ObjectCreate ( "candlesize" + IntegerToString (i),  
                     OBJ_TEXT ,  
                     0 ,  
                    time[i],  
                    high[i]+StepPer()* Point );
       //--- установим привязку к правому верхнему углу
       ObjectSetInteger ( ChartID (), "candlesize" + IntegerToString (i), OBJPROP_ANCHOR , ANCHOR_UPPER );
     ObjectSet (   "candlesize" + IntegerToString (i),  
                     OBJPROP_ANGLE ,  
                    TextAngle
                 );
       ObjectSetText ( "candlesize" + IntegerToString (i),  
                       DoubleToStr ( NormalizeDouble ((high[i]-low[i]+ Point )/ Point , 0 ), 0 ),  
                      TextSize,  
                       NULL ,  
                      TextColor
                     );
   }
   return (rates_total);
}

int StepPer ()
{
     int i = 0 ;
     switch ( Period ())
     {
           case PERIOD_M1 :
          i = 5 ;
           break ;
           case PERIOD_M5 :
          i = 15 ;
           break ;
           case PERIOD_M15 :
          i = 25 ;
           break ;
           case PERIOD_M30 :
          i = 40 ;
           break ;
           case PERIOD_H1 :
          i = 60 ;
           break ;
           case PERIOD_H4 :
          i = 90 ;
           break ;
           case PERIOD_D1 :
          i = 220 ;
           break ;
           case PERIOD_W1 :
          i = 500 ;
           break ;
           case PERIOD_MN1 :
          i = 2000 ;
           break ;
           default :  
           break ;
     }
     return (i);
}  
Beyler, serseri nuna'ya merkezdeki yükseklere yardım edin, pervaz nerede!?
nedense, ortayı işaret etmesine rağmen, çubuğun üstünde ve yanında değil!
 
Игорь :

Onu koydum ve hala ortalanmadı ve yanlış çubukta!?

Eh, döndürmeden sonra, nokta artık üst merkezde değil, sol ortada , bu nedenle metin sağa kaydırıldı.

ObjectSetInteger ( ChartID (), "candlesize" + IntegerToString (i), OBJPROP_ANCHOR , ANCHOR_LEFT );
Bağlantı noktası, dönüş 0 derece olduğunda ayarlanır, dönme açısını hesaba katmanız ve nesne Yüksek'in üzerindeyse altta olacak olan bağlantı noktasını ayarlamanız gerekir, sizin durumunuzda bu nokta üzerinde bir nokta olacaktır. merkezde kaldı.
 
Vitalie Postolache :

Eh, döndürmeden sonra, nokta artık üst merkezde değil, sol ortada , bu nedenle metin sağa kaydırıldı.

ObjectSetInteger ( ChartID (), "candlesize" + IntegerToString (i), OBJPROP_ANCHOR , ANCHOR_LEFT );
Bağlantı noktası, dönüş 0 derece olduğunda ayarlanır, dönme açısını hesaba katmanız ve nesne Yüksek'in üzerindeyse altta olacak olan bağlantı noktasını ayarlamanız gerekir, sizin durumunuzda bu nokta üzerinde bir nokta olacaktır. merkezde kaldı.

BÜYÜK TEŞEKKÜRLER!!!!!

Her şey istediğimiz gibi çıktı!

Bir kez daha, yanlış anlamam ve sertliğim için özür dilerim!

 
Vitalie Postolache :

Ayrıntılar olmadan, bu bir kanıt değildir))) init'in tam metnini ve değişkenlerin bildirimini gösterin.

Sondan yineleyin ve döngüden zamanında çıkın. 10 çifte ne dersin? En az yüz, orada bir sembol seçeneğiniz var.

bool s=yanlış;
çift b=HesapBalance();
i=0;
for(;i<SiparişToplam();i++)
{//+------------------------------------------------- ------------------------------------------+için
ViborOrdera=OrderSelect(i,SELECT_BY_POS);
if(OrderSymbol()!=Symbol())continue;
if(OrderType()>1)devam et;
s=doğru;
int Bilet=OrderTicket();
doubleLots=SiparişLots();
çift fiyat;
if(OrderType()==1)Price=NormalizeDouble(Ask,Digits);else Price=NormalizeDouble(Teklif,Digits);
//+------------------------------------------- ------------------------------------------+
ViborOrdera=SiparişKapat(Bilet,Çoklar,Fiyat,3);
if(GetLastError()==6){Alert("Bağlantı yok");return(0);}
if(GetLastError()==132){Alert("Piyasa Kapandı");return(0);}
Yeniler();
ben--;

}//+---------------------------------------------- --------------------------------------------+için

Tamam, işte aynı döngü, siparişleri neden kapatıyor?)