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

 
Алексей КоКоКо :

Genel olarak belgeleri nasıl anlayacağımı söyle? Metin olarak basit bir grafik nesnenin örneklerinde bile, yüzünüze bir sürü kod ile bir örnek atmaları ve hangi parametrelerin gerekli ve hangilerinin gerekli olmadığı ve sadece yazmak için hiçbir yere yazmamaları beni gerçekten rahatsız ediyor. bazı metinler veya bir eğilim koyun, hatta arabelleklerle ilgilenin, çünkü göstergeyi anlamadığınız için hangi minimum parametreleri girmeniz gerektiğini ve aptalca kopyala-yapıştır ve kodunuzu çöpe atmanız gerekir

Selamlar, metin için zorunlu parametreler pencere indeksi, koordinat bağlama ve metnin kendisidir, gerisi isteğe bağlıdır.

İki tür nesne olduğunu unutmamalısınız: OBJ_LABEL ve OBJ_TEXT, ilki pencere piksellerine, ikincisi ise grafikte saat ve fiyata iliştirilir.

Diyelim ki piksellere bağlı bir metin etiketine ihtiyacımız var, sonra şunu yapıyoruz:

   ObjectCreate ( 0 ,name, OBJ_LABEL , 0 , 0 , 0 ); // создаём объект в текущем (нулевом окне)
   ObjectSetString ( 0 ,name, OBJPROP_TEXT ,text); // указываем какой текст должен в нём отображаться
   ObjectSetString ( 0 ,name, OBJPROP_FONT ,fontname); // назначаем шрифт например Verdana или Tahoma
   ObjectSetInteger ( 0 ,name, OBJPROP_FONTSIZE ,fontsize); // назначаем размер шрифта
   ObjectSetInteger ( 0 ,name, OBJPROP_COLOR , text_color); // назначаем цвет шрифта
   ObjectSetInteger ( 0 ,name, OBJPROP_CORNER ,text_corner); // указываем от какого угла окна отсчитывать пиксели
   ObjectSetInteger ( 0 ,name, OBJPROP_ANCHOR ,text_anchor); // указываем как должен быть выровнен текст по центру или какому-то краю
   ObjectSetInteger ( 0 ,name, OBJPROP_XDISTANCE ,XOFFSET); // указываем координату по горизонтали
   ObjectSetInteger ( 0 ,name, OBJPROP_YDISTANCE ,YOFFSET); // указываем координату по вертикали
   ObjectSetInteger ( 0 ,name, OBJPROP_SELECTABLE , false ); // указываем можно ли выделять и двигать метку мышкой или нельзя

bu neredeyse bir metin etiketi çizen minimum koddur

OBJ_TEXT nesnesi için aynı şey, sadece fiyat ve zaman özelliklerini ayarlamanız gerekir:

   ObjectSetDouble ( 0 ,name, OBJPROP_PRICE , 0 ,price);
   ObjectSetInteger ( 0 ,name, OBJPROP_TIME , 0 ,time);



text_corner sabit değerlerden biri olmalıdır:

tanımlayıcı

Tanım

CORNER_LEFT_UPPER

Grafiğin sol üst köşesindeki koordinatların merkezi

CORNER_LEFT_LOWER

Grafiğin sol alt köşesindeki koordinatların merkezi

CORNER_RIGHT_LOWER

Grafiğin sağ alt köşesindeki koordinatların merkezi

CORNER_RIGHT_UPPER

Grafiğin sağ üst köşesindeki koordinatların merkezi


daha fazla ayrıntı burada: https://www.mql5.com/ru/docs/constants/objectconstants/enum_basecorner#enum_base_corner




text_corner sabit değerlerden biri olmalıdır:

tanımlayıcı

Tanım

ANCHOR_LEFT_UPPER

Sol üst köşedeki bağlantı noktası

ANCHOR_LEFT

Bağlantı noktası sol orta

ANCHOR_LEFT_LOWER

Sol alt köşedeki bağlantı noktası

ANCHOR_LOWER

Bağlantı noktası alt orta

ANCHOR_RIGHT_LOWER

Sağ alt köşedeki bağlantı noktası

ANCHOR_RIGHT

Bağlantı noktası sağ merkez

ANCHOR_RIGHT_UPPER

Sağ üst köşedeki bağlantı noktası

ANCHOR_UPPER

Bağlantı noktası üst merkez

ANCHOR_CENTER

Bağlantı noktası kesinlikle nesnenin merkezinde


daha fazla ayrıntı burada: https://www.mql5.com/ru/docs/constants/objectconstants/enum_basecorner



ayrıca #include <ChartObjects\ChartObject.mqh> standart kitaplığını ekleyebilir ve sınıflarını kullanabilirsiniz, ancak bu sadece hayatınızı karmaşıklaştırır, bana öyle geliyor ki

 
transcendreamer :

Selamlar, metin için zorunlu parametreler pencere indeksi, koordinat bağlama ve metnin kendisidir, gerisi isteğe bağlıdır.

İki tür nesne olduğunu unutmamalısınız: OBJ_LABEL ve OBJ_TEXT, ilki pencere piksellerine, ikincisi ise grafikte saat ve fiyata iliştirilir.

Piksellere bağlı bir metin etiketine ihtiyacımız olduğunu varsayalım, sonra şunu yaparız:

bu neredeyse bir metin etiketi çizen minimum koddur

OBJ_TEXT nesnesi için aynı şey, sadece fiyat ve zaman özelliklerini ayarlamanız gerekir:


Allah razı olsun) Mesele sadece metinde değil, birçok şeyde, hatta gösterge tamponlarında. Neden arabayı terk etti?)

 
Алексей КоКоКо :

Allah razı olsun) Mesele sadece metinde değil, birçok şeyde, hatta gösterge tamponlarında. Neden arabayı terk etti?)

Bir şey sorarsan özel mesajdan sorabilirsin ama chekistler anlamasın diye paranoya krizi geçirip her zamanki gibi arabayı bıraktım 😀

 
Artyom Trishkin :

Doğru cevap çok basit...

Ve hangisi? Neden hemen yazmıyorsun?

 
Herkese merhaba, bir EA'ya "starhour ve stophour" ekledim siparişlerin belirli bir zamanda açılması için, ancak örneğin 22:00'de açılan bir siparişin stophour'da (23:00) kapanmayacağını düşünmedim.
Bundan önce , pozisyonu kapatmak için göstergenin sinyali yoktu ve saat 23:00'ten sonra herhangi bir karar vermek kesinlikle yasaktır.

Lütfen bana EA'nın mesai saatinden (23:00) sonra açık pozisyonları kapatmasını nasıl mümkün kılacağımı söyleyin.
Ya da bütün gece kalmamak için tüm pozisyonları 23:00'te kapattı.


şimdiden teşekkürler
 
Eugen8519 :
Herkese merhaba, bir EA'ya "starhour ve stophour" ekledim siparişlerin belirli bir zamanda açılması için, ancak örneğin 22:00'de açılan bir siparişin stophour'da (23:00) kapanmayacağını düşünmedim. )
Bundan önce , pozisyonu kapatmak için göstergenin sinyali yoktu ve saat 23:00'ten sonra herhangi bir karar vermek kesinlikle yasaktır.

Lütfen bana EA'nın mesai saatinden (23:00) sonra açık pozisyonları kapatmasını nasıl mümkün kılacağımı söyleyin.
Ya da bütün gece kalmamak için tüm pozisyonları 23:00'te kapattı.


şimdiden teşekkürler

sadece açılış emirleri için "starhour ve stophour" yazın

 
MakarFX :

sadece açılış emirleri için "starhour ve stophour" yazın

Sorun bu, sadece starthour->stophour emirlerini açar ve kapatır.
Ve açık siparişler stophour'dan sonra kapanmaz

Çünkü stophour'dan sonra ticaret yapamazsınız



Küresel parametreler var

 bool            UseTimeLimit = true ;
int             startHour    = 15 ;
int             stopHour     = 23 ;
bool            YesStop= false ;
input            ENUM_TIMEFRAMES Timeframe = PERIOD_CURRENT ;



Ve OnTick'te

 if (UseTimeLimit)
  {
    YesStop= true ;
     MqlDateTime str1;
     TimeToStruct ( TimeCurrent () , str1);
     if (str1.hour > startHour && str1.hour < stopHour)
       YesStop= false ;
       if (YesStop)
       return ;
  }
 
Eugen8519 :
Sorun bu, sadece starthour->stophour emirlerini açar ve kapatır.
Ve açık siparişler stophour'dan sonra kapanmaz
Siparişleri kapatma işlevini göster
 
Eugen8519 :
Sorun bu, sadece starthour->stophour emirlerini açar ve kapatır.
Ve açık siparişler stophour'dan sonra kapanmaz

aşağı yukarı böyle

 if (UseTimeLimit)
  {
    YesStop= true ;
     MqlDateTime str1;
     TimeToStruct ( TimeCurrent () , str1);
     if (str1.hour > startHour && str1.hour < stopHour)
       YesStop= false ;
       if (YesStop)
       return ;
  }
....
if (YesStop== false )
  {
   условие для открытия ордеров
  }
 
MakarFX :

aşağı yukarı böyle

Siparişler böyle kapatılır



(EMA0[m_bar_current]<WMA0[m_bar_current] && EMA0[m_bar_current+ 1 ]>WMA0[m_bar_current+ 1 ]) //Buy
     {
       if (!RefreshRates())
         return ;
      TimeBar=time_0;
      CLOSEORDER( "Sell" );
     }
//if(color_buffer[m_bar_current+1]<color_buffer[m_bar_current]) //Sell
   if (EMA0[m_bar_current]>WMA0[m_bar_current] && EMA0[m_bar_current+ 1 ]<WMA0[m_bar_current+ 1 ]) //Sell
     {
       if (!RefreshRates())
         return ;
      TimeBar=time_0;
      CLOSEORDER( "Buy" );
     }


 void CLOSEORDER( string ord)
  {
   for ( int i= PositionsTotal ()- 1 ; i>= 0 ; i--) // returns the number of open positions
       if (m_position.SelectByIndex(i))
         if (m_position. Symbol ()== Symbol () && m_position.Magic()==m_magic)
           {
             if (m_position.PositionType()== POSITION_TYPE_BUY && ord== "Buy" )
               m_trade.PositionClose(m_position.Ticket());   // Close Buy
             if (m_position.PositionType()== POSITION_TYPE_SELL && ord== "Sell" )
               m_trade.PositionClose(m_position.Ticket()); // Close Sell
           }
  }