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

 
ANDREY :

Değerli bilgi için teşekkürler

Ayrıca, lütfen söyleyin, bir değişkende hangi ifadenin yol boyunca doğru olduğu nasıl hatırlanır? Daha kesin olmak gerekirse, fonksiyonda hesaplanan minimum, hangi zaman diliminin mumuna aittir? Bu TF'nin tanımlayıcısı bir değişkende nasıl saklanır?
teşekkürler

Sadece bool değişkenlerini bildir

 bool variant_H4 = Bid- iLow ( NULL , PERIOD_H4 , 1 ) >= 0.0030 ,
     variant_H1 = Bid- iLow ( NULL , PERIOD_H1 , 1 ) >= 0.0030 ,
     variant_M30 = Bid- iLow ( NULL , PERIOD_M30 , 1 ) >= 0.0030 ;
if (variant_H4 || variant_H1 || variant_M30)
 
Alexey Viktorov :

Sadece bool değişkenlerini bildir

Faydalı bilgiler için teşekkürler.

Ve eğer test bir dakika çizelgesinde yapılıyorsa, lütfen bana mavi değeri 5 haneye kadar doğrulukla sarı değişkene nasıl kaydedeceğimi söyleyin.

 double LoU;
void OnTick ()
{
if (Bid - iLow ( NULL , PERIOD_H4 , 1 )>= 0.0030 ||Bid - iLow ( NULL , PERIOD_H1 , 1 )>= 0.0030 ||Bid - iLow ( NULL , PERIOD_M30 , 1 )>= 0.0030 )
{
OrderSend ( Symbol (),OP_SELL, 0.1 ,Bid, 3 , 0 , 0 , "300" , 0 );
LoU = ( ЛОУ из выражения, которое оказалось истинным) ;
}
}

Teşekkür ederim.

 
Güzel gün! Bana mql4'te bir satıra nasıl metin ekleyeceğimi söyle, böylece sonuncusu taşındığında, ekran görüntülerinde olduğu gibi yazı da değişir. Bir nesneyi sabitlemenin iki yolu olduğunu biliyorum: ekranın köşesine piksel cinsinden ve zaman/fiyat koordinatlarında. İlk seçenekte, statik bir metin alacağım ve ikincisinde tam olarak değil, istediğimi alacağım. Fiyat koordinatı (dikey bağlama) ile açıktır - satırın fiyatını alıyorum ve metnin satırın hemen üstünde olması için bir çift _Point ekliyorum. Peki ya zaman? Son çubuğa bağlamak istemiyorum çünkü grafiğin farklı bir kayması yazıyı sağa ve sola çekecektir. Burada ekranın sağ kenarına sert bir yatay yakalama yapmak istiyorum ama nasıl yapacağımı anlamıyorum.
 
Oleksandr Nozemtsev :
Güzel gün! Bana mql4'te bir satıra nasıl metin ekleyeceğimi söyle, böylece sonuncusu taşındığında, ekran görüntülerinde olduğu gibi yazı da değişir. Bir nesneyi sabitlemenin iki yolu olduğunu biliyorum: ekranın köşesine piksel cinsinden ve zaman/fiyat koordinatlarında. İlk seçenekte, statik bir metin alacağım ve ikincisinde tam olarak değil, istediğimi alacağım. Fiyat koordinatı (dikey bağlama) ile açıktır - satırın fiyatını alıyorum ve metnin satırın hemen üstünde olması için bir çift _Point ekliyorum. Peki ya zaman? Son çubuğa bağlamak istemiyorum çünkü grafiğin farklı bir kayması yazıyı sağa ve sola çekecektir. Burada ekranın sağ kenarına sert bir yatay yakalama yapmak istiyorum ama nasıl yapacağımı anlamıyorum.
Çizgileri kendiniz mi çiziyorsunuz yoksa bir gösterge mi?
 
MakarFX :
Çizgileri kendiniz mi çiziyorsunuz yoksa bir gösterge mi?

Çizgi , yükleme sırasında gösterge tarafından oluşturulur . Metnin, bu seviyeyle ilgili bilgileri satırın hemen üzerinde göstermesi ve Uyarıda görüntülememesi gerekir (Uyarı çalışır).

 
Oleksandr Nozemtsev :

Çizgi , yükleme sırasında gösterge tarafından oluşturulur . Metnin, bu seviyeyle ilgili bilgileri satırın hemen üzerinde göstermesi ve Uyarıda görüntülememesi gerekir (Uyarı çalışır).

Satır oluşturma kodunu gönderin
 
MakarFX :
Satır oluşturma kodunu gönderin

int OnInit()

{

//Henüz yoksa bir "name_line" satırı oluşturun

if(ObjectFind(0, ad_satır) == -1)

{

//Fiyat belirlenmemişse, geçerli Satış fiyatı düzeyinde ayarlayın

if(!fiyat_satırı)

fiyat_line = SymbolInfoDouble (Symbol(), SYMBOL_ASK);

//Hata değerini sıfırla

ResetLastError();

// Bir satır oluştur

if(!ObjectCreate(0, ad_satır, OBJ_HLINE, 0, 0, fiyat_satır))

Print("Satır Satır Hatası", GetLastError());

//

ObjectSet(ad_satır, OBJPROP_COLOR, renk_çizgi); //Çizgi rengi

ObjectSet(ad_satırı, OBJPROP_STYLE, stil_satır); //Çizgi stili

ObjectSet(ad_satır, OBJPROP_WIDTH, genişlik_satır); //Hat kalınlığı

ObjectSet(ad_satır, OBJPROP_BACK, arka_satır); //Önplan arkaplan

ObjectSet(name_line, OBJPROP_SELECTABLE, select_line);//Nesnenin fare tıklaması için kullanılabilirliği.

ObjectSet(ad_satır, OBJPROP_SELECTED, seçim_satır); //Nesne seçimi. O - oluşturma sırasında seçilmedi

}

dönüş(INIT_SUCCESSED);

}

 
Oleksandr Nozemtsev :

Tutmak

 //+------------------------------------------------------------------+
//|                                                    Line_Text.mq4 |
//|                                           Copyright 2020 MakarFX |
//|                             https://www.mql5.com/ru/users/makarfx |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020 MakarFX"
#property link        " https://www.mql5.com/ru/users/makarfx "
#property version    "1.00"
#property strict
#property indicator_chart_window

double buy,sell;
datetime DoTime;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
   ObjectsDeleteAll ( 0 , "My_" );
   //--- indicator buffers mapping
   if ( ObjectFind ( 0 , "My_BuyLine" )!= 0 )
     {
      HLineCreate( 0 , "My_BuyLine" , 0 ,Ask+ 50 * Point , clrTeal , 2 , 1 , false , true , false );
     }
   if ( ObjectFind ( 0 , "My_SellLine" )!= 0 )
     {
      HLineCreate( 0 , "My_SellLine" , 0 ,Bid- 50 * Point , clrCrimson , 2 , 1 , false , true , false );
     }
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
   ObjectsDeleteAll ( 0 , "My_" );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
//---
   DoTime = TimeCurrent ()+( Period ()* 60 * 7 );
   if ( ObjectFind ( 0 , "My_BuyLine" )== 0 )
     {
      buy = NormalizeDouble (ObjectGet( "My_BuyLine" ,OBJPROP_PRICE1), Digits );
      Create_Text( 0 , "My_BuyText" , 0 ,DoTime,buy+ 5 * Point , "BuyText" , "Arial" , 10 , clrTeal , 0 , 0 , false , false , false );     
     }
   if ( ObjectFind ( 0 , "My_SellLine" )== 0 )
     {
      sell = NormalizeDouble (ObjectGet( "My_SellLine" ,OBJPROP_PRICE1), Digits );
      Create_Text( 0 , "My_SellText" , 0 ,DoTime,sell- 5 * Point , "SellText" , "Arial" , 10 , clrCrimson , 0 , 0 , false , false , false );     
     }
   if (buy!=ObjectGet( "My_BuyLine" ,OBJPROP_PRICE1)||sell!=ObjectGet( "My_SellLine" ,OBJPROP_PRICE1))
     {
       ObjectMove ( 0 , "My_BuyText" , 0 ,DoTime,buy+ 5 * Point );
       ObjectMove ( 0 , "My_SellText" , 0 ,DoTime,sell- 5 * Point );
     }

//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+--------------------------------------------------------------------------------------------------------------------+
//| Создает горизонтальную линию                                                                                       | 
//+--------------------------------------------------------------------------------------------------------------------+
bool HLineCreate( const long             chart_ID= 0 ,         // ID графика 
                 const string           name= "HLine" ,       // имя линии 
                 const int              sub_window= 0 ,       // номер подокна 
                 double                 price= 0 ,           // цена линии 
                 const color            clr= clrRed ,         // цвет линии 
                 const ENUM_LINE_STYLE style= STYLE_SOLID , // стиль линии 
                 const int              width= 1 ,           // толщина линии 
                 const bool             back= false ,         // на заднем плане 
                 const bool             selection= true ,     // выделить для перемещений 
                 const bool             hidden= true ,       // скрыт в списке объектов 
                 const long             z_order= 0 )         // приоритет на нажатие мышью 
   { 
   //--- сбросим значение ошибки 
   ResetLastError (); 
   //--- создадим горизонтальную линию 
   if (! ObjectCreate (chart_ID,name, OBJ_HLINE ,sub_window, 0 ,price)) 
      { 
       Print ( __FUNCTION__ , ": не удалось создать горизонтальную линию! Код ошибки = " , GetLastError ()); return ( false ); 
      } 
   //--- установим свойства линии 
   ObjectSetInteger (chart_ID, name, OBJPROP_COLOR , clr);
   ObjectSetInteger (chart_ID, name, OBJPROP_STYLE , style);
   ObjectSetInteger (chart_ID, name, OBJPROP_WIDTH , width);
   ObjectSetInteger (chart_ID, name, OBJPROP_BACK , back);
   ObjectSetInteger (chart_ID, name, OBJPROP_SELECTABLE , selection);
   ObjectSetInteger (chart_ID, name, OBJPROP_SELECTED , selection);
   ObjectSetInteger (chart_ID, name, OBJPROP_HIDDEN , hidden);
   ObjectSetInteger (chart_ID, name, OBJPROP_ZORDER , z_order);
   //--- успешное выполнение 
   return ( true ); 
   } 
//+--------------------------------------------------------------------------------------------------------------------+
//| Создает объект "Текст"                                                                                             | 
//+--------------------------------------------------------------------------------------------------------------------+
bool Create_Text( const long               chart_ID= 0 ,               // ID графика 
                 const string             name= "Text" ,               // имя объекта 
                 const int                sub_window= 0 ,             // номер подокна 
                 datetime                 time= 0 ,                   // время точки привязки 
                 double                   price= 0 ,                   // цена точки привязки 
                 const string             text= "Text" ,               // сам текст 
                 const string             font= "Arial" ,             // шрифт 
                 const int                font_size= 10 ,             // размер шрифта 
                 const color              clr= clrRed ,               // цвет 
                 const double             angle= 0.0 ,                 // наклон текста 
                 const ENUM_ANCHOR_POINT anchor= ANCHOR_LEFT_UPPER , // способ привязки 
                 const bool               back= false ,               // на заднем плане 
                 const bool               selection= false ,           // выделить для перемещений 
                 const bool               hidden= true ,               // скрыт в списке объектов 
                 const long               z_order= 0 )                 // приоритет на нажатие мышью 
   { 
   //--- сбросим значение ошибки 
   ResetLastError (); 
   //--- создадим объект "Текст" 
   if (! ObjectCreate (chart_ID,name, OBJ_TEXT ,sub_window,time,price)) 
      { 
       Print ( __FUNCTION__ , ": не удалось создать объект \"Текст\"! Код ошибки = " , GetLastError ()); return ( false ); 
      } 
   //--- установим свойства объектa "Текст" 
   ObjectSetString (chart_ID,name, OBJPROP_TEXT ,text);
   ObjectSetString (chart_ID,name, OBJPROP_FONT ,font);
   ObjectSetInteger (chart_ID,name, OBJPROP_FONTSIZE ,font_size);
   ObjectSetDouble (chart_ID,name, OBJPROP_ANGLE ,angle);
   ObjectSetInteger (chart_ID,name, OBJPROP_ANCHOR ,anchor);
   ObjectSetInteger (chart_ID,name, OBJPROP_COLOR ,clr);
   ObjectSetInteger (chart_ID,name, OBJPROP_BACK ,back);
   ObjectSetInteger (chart_ID,name, OBJPROP_SELECTABLE ,selection); 
   ObjectSetInteger (chart_ID,name, OBJPROP_SELECTED ,selection);
   ObjectSetInteger (chart_ID,name, OBJPROP_HIDDEN ,hidden);
   ObjectSetInteger (chart_ID,name, OBJPROP_ZORDER ,z_order);
   //--- успешное выполнение 
   return ( true ); 
   } 
//+------------------------------------------------------------------+
 
MakarFX :

Tutmak

Ah ne kadar! Birkaç satır kod olduğunu düşündüm) anlayacağım. Teşekkür ederim!

 
Alexey Viktorov :

Sadece bool değişkenlerini bildir

Ve eğer test bir dakika çizelgesinde yapılıyorsa, lütfen bana mavi değeri 5 haneye kadar doğrulukla sarı değişkene nasıl kaydedeceğimi söyleyin.

 double LoU;
void OnTick ()
{
if (Bid - iLow ( NULL , PERIOD_H4 , 1 )>= 0.0030 ||Bid - iLow ( NULL , PERIOD_H1 , 1 )>= 0.0030 ||Bid - iLow ( NULL , PERIOD_M30 , 1 )>= 0.0030 )
{
OrderSend ( Symbol (),OP_SELL, 0.1 ,Bid, 3 , 0 , 0 , "300" , 0 );
LoU = ( ЛОУ из выражения, которое оказалось истинным );
}
}
teşekkürler