Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 1231

 

En basit girişi yapmaya çalışıyorum. İstediğim gibi - açılış fiyatı kapanış fiyatından padenie puanı (önceki çubukta) kadar düşükse, o zaman yeni bir çubuğun başında satın alırız, kârı alır ve zararı durdurur. Ama bir şey istediğim gibi çalışmıyor gibi görünüyor. anlamama yardım et


   MqlRates rt[ 1 ];

   if ( CopyRates ( _Symbol , _Period , 0 , 1 ,rt)!= 1 )
     {
       Print (" CopyRates of ", _Symbol ," failed, no history");
       return ;
     }
   
   ENUM_ORDER_TYPE signal= WRONG_VALUE ;

       if (rt[ 1 ].open - rt[ 1 ].close >= padenie) 
	 {
         signal= ORDER_TYPE_BUY ;
         printf (rt[ 1 ].open+"____"+rt[ 1 ].close);
         }
         
       if (signal != WRONG_VALUE && TerminalInfoInteger ( TERMINAL_TRADE_ALLOWED ) && Bars ( _Symbol , _Period )> 100 )
         ExtTrade.PositionOpen( _Symbol ,signal, 1 , SYMBOL_ASK , SymbolInfoDouble ( _Symbol , SYMBOL_BID )-sl, SymbolInfoDouble ( _Symbol , SYMBOL_ASK )+tp);
Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Ценовые константы
Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Ценовые константы
  • www.mql5.com
Технические индикаторы требуют для своих расчетов указания значений цен и/или значений объемов, на которых они будут считаться. Существуют 7 предопределенных идентификаторов перечисления ENUM_APPLIED_PRICE, для указания нужной ценовой базы расчетов. Если технический индикатор для своих расчетов использует ценовые данные, тип которых задается...
 
BorisD :

En basit girişi yapmaya çalışıyorum. İstediğim gibi - açılış fiyatı kapanış fiyatından padenie puanı (önceki çubukta) kadar düşükse, o zaman yeni bir çubuğun başında satın alırız, kârı alır ve zararı durdurur. Ama bir şey istediğim gibi çalışmıyor gibi görünüyor. anlamama yardım et


Hata 1: BİR öğeyi kopyalıyorsunuz - bu nedenle öğe dizini [0] olacaktır.

100'ü açın, 105'i kapatın - yükseliş çubuğu. Aç - Kapat = 100 - 105 = - 5. Sonuç negatif bir sayı olduğu için '-5' her zaman verdiğiniz değerden küçük olacaktır.

110'u açın, 103'ü kapatın - düşüş çubuğu. Aç - Kapat = 110 - 103 = 7. '7' pozitif bir sayıdır ve bu zaten doğru şekilde çalışacaktır.


Alt satır: referansı endekse sabitleyin ([1] yerine, [0] endeksine başvurmanız gerekir. Hesaplamadan önce, mum türünü dikkate alın: yükseliş veya düşüş.

 

DRAW_HISTOGRAM2 yapıları hakkındaki sorunun devamı.

Misal:

 // Индикатор Проба DRAW_HISTOGRAM2.mq5
//+------------------------------------------------------------------+
#property indicator_chart_window                    
#property indicator_buffers    20                     
#property indicator_plots      20                   

#property indicator_color1      clrOrange                 
#property indicator_color2      clrOrange                
#property indicator_color3      clrLimeGreen         
#property indicator_color4      clrLimeGreen         

#property indicator_type5      DRAW_HISTOGRAM2
#property indicator_color5      clrOrange                
#property indicator_type6      DRAW_HISTOGRAM2
#property indicator_color6      clrLimeGreen         

//#property indicator_color9    clrRed                

double
   Line_High_Up[], Line_High_Dn[], Hist_High_Up[], Hist_High_Dn[],
   Line_Low_Up[],  Line_Low_Dn[],  Hist_Low_Up[],  Hist_Low_Dn[],  Line_Red[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit () 
   { 
   SetIndexBuffer      ( 0 , Line_High_Up,       INDICATOR_DATA ); 
   PlotIndexSetInteger ( 0 , PLOT_DRAW_TYPE ,     DRAW_LINE );      
   SetIndexBuffer      ( 1 , Line_High_Dn,       INDICATOR_DATA ); 
   PlotIndexSetInteger ( 1 , PLOT_DRAW_TYPE ,     DRAW_LINE );      

   SetIndexBuffer      ( 2 , Line_Low_Up,       INDICATOR_DATA );
   PlotIndexSetInteger ( 2 , PLOT_DRAW_TYPE ,     DRAW_LINE );     
   SetIndexBuffer      ( 3 , Line_Low_Dn,       INDICATOR_DATA );
   PlotIndexSetInteger ( 3 , PLOT_DRAW_TYPE ,     DRAW_LINE );     

   SetIndexBuffer      ( 4 , Hist_High_Up,       INDICATOR_DATA ); 
   SetIndexBuffer      ( 5 , Hist_High_Dn,       INDICATOR_DATA );

   SetIndexBuffer      ( 6 , Hist_Low_Up,       INDICATOR_DATA );
   SetIndexBuffer      ( 7 , Hist_Low_Dn,       INDICATOR_DATA );

   //SetIndexBuffer     (8, Line_Red,          INDICATOR_DATA);
   //PlotIndexSetInteger(8, PLOT_DRAW_TYPE,    DRAW_LINE);     
   }
//+------------------------------------------------------------------+
//| 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[]   )                   
   {  
   int i;
   for (i=prev_calculated; i<=rates_total- 1 ; i++)      
      {
      Line_High_Up[i] = high[i] + 50 * _Point ;
      Line_High_Dn[i] = high[i] + 30 * _Point ;
      Line_Low_Up[i]  = low[i]  - 30 * _Point ;
      Line_Low_Dn[i]  = low[i]  - 50 * _Point ;

      Hist_High_Up[i] = Line_High_Up[i];
      Hist_High_Dn[i] = Line_High_Dn[i];
      Hist_Low_Up[i]  = Line_Low_Up[i];
      Hist_Low_Dn[i]  = Line_Low_Dn[i];
      
       //Line_Red[i]     = low[i]  - 70*_Point;
      }
   return (i- 1 );
   }           
//+------------------------------------------------------------------+

Sunulan göstergede her iki histogramı da oluşturmayı başardık. Beklenmeyen bir özellik şuydu:

Kayıtlardaki düzenli satırlar için #özellik göstergesi_renk, #özellik göstergesi_tipi vb. n değeri , arabellek dizininden 1 büyüktür.
Ayrıca, bu gereklilik, arabellek endekslerinin bir satırda belirtilmemesi ve bitişik arabellekler arasında boş alanlar olması durumunda da korunur.
Örneğin, 0, 1, 2, 3, 8 dizinleri kullanılıyorsa, beş satırın tümü güvenli bir şekilde görüntülenir.

DRAW_HISTOGRAM2 tipindeki yapılar için farklı bir gereksinim vardır, yani:
Histogramlar bir satırda belirtilirse, #özellik göstergesi_renk, #özellik göstergesi_tipi vb. girişlerinde.
n'nin değeri, arabellek dizininden değil, sayı sayısından hesaplanır. Örnekte, mantıksal olarak 5 ve 7 beklenmesine rağmen, 5 ve 6 dizinleri belirtilmiştir.

Bütün bu saçmalıklar, iki histogramdan sonra düzgün bir çizgi (kırmızı) için n'nin değerinin ne olması gerektiğini anlamanın hiçbir şekilde mümkün olmamasına yol açmaktadır.
Bu örnekte, n=9 değeri belirtilir, ancak bu çalışmaz, bu nedenle arabellek 8 ile ilgili tüm satırlar yorumlanır. n'nin diğer değerleri için de başarısız oldu.

Sonuç: tüm histogramlar, arabellek listesinin sonunda bir satırda listelenmelidir. Ayrıca, değerleri kantitatif hesaba göre (tamponlarının endekslerine rağmen) basit bir şekilde hesaplanmalıdır.
Onu anlayamazsın ama onunla yaşayabilirsin.

Geçerken: INDICATOR_CALCULATIONS ve INDICATOR_DATA türlerinin arabelleklerinin sırasının etkisi algılanmadı.

Sorunun çözümüne katılımlarından dolayı Vladimir Karputov ve Artyom Trishkin'e teşekkürler.

Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Стили рисования
Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Стили рисования
  • www.mql5.com
При создании пользовательского индикатора можно указать один из 18 типов графического построения (способа отображения на главном окне графика или в подокне графика), значения которых указаны в перечислении ENUM_DRAW_TYPE. В зависимости от стиля рисования, может потребоваться от одного до четырех буферов значений (отмеченных как INDICATOR_DATA...
 
User_mt5 :

DRAW_HISTOGRAM2 yapıları hakkındaki sorunun devamı.

Misal:

Sunulan göstergede her iki histogramı da oluşturmayı başardık. Beklenmeyen bir özellik şuydu:

Kayıtlardaki düzenli satırlar için #özellik göstergesi_renk, #özellik göstergesi_tipi vb. n değeri , arabellek dizininden 1 büyüktür.
Ayrıca, bu gereklilik, arabellek endekslerinin bir satırda belirtilmemesi ve bitişik arabellekler arasında boş alanlar olması durumunda da korunur.
Örneğin, 0, 1, 2, 3, 8 dizinleri kullanılıyorsa, beş satırın tümü güvenli bir şekilde görüntülenir.

DRAW_HISTOGRAM2 türündeki yapılar için farklı bir gereksinim vardır, yani:
Histogramlar bir satırda belirtilirse, #özellik göstergesi_renk, #özellik göstergesi_tipi vb. girişlerinde.
n'nin değeri, arabellek indeksinden değil, sayı sayısından hesaplanır. Örnekte, mantıksal olarak 5 ve 7 beklenmesine rağmen, 5 ve 6 dizinleri belirtilmiştir.

Bütün bu saçmalıklar, iki histogramdan sonra düzenli bir çizginin (kırmızı) indeksinin ne olması gerektiğini anlamanın hiç mümkün olmamasına yol açar.
Bu örnekte, n=9 değeri belirtilir, ancak bu çalışmaz, bu nedenle arabellek 8 ile ilgili tüm satırlar yorumlanır. n'nin diğer değerleri için de başarısız oldu.

Sonuç: tüm histogramlar arabellek listesinin sonunda bir satırda listelenmelidir. Ayrıca, değerleri kantitatif hesaba göre (tamponlarının endekslerine rağmen) basit bir şekilde hesaplanmalıdır.
Onu anlayamazsın ama onunla yaşayabilirsin.

Geçerken: INDICATOR_CALCULATIONS ve INDICATOR_DATA türlerinin arabelleklerinin sırasının etkisi algılanmadı.

Sorunun çözümüne katılımlarından dolayı Vladimir Karputov ve Artyom Trishkin'e teşekkürler.

Rica ederim. Ama sorunu çözmedin.

Göstergeler, farklı arabellek türlerinin sırasına bağlı değildir. Çizilenlerden sonra sadece hesaplananlar gelmelidir.

 
Artyom Trishkin :

Rica ederim. Ama sorunu çözmedin.

Göstergeler, farklı arabellek türlerinin sırasına bağlı değildir. Çizilenlerden sonra sadece hesaplananlar gelmelidir.

Fazla güven duymadan, ama yine de bu ifadelerin her ikisinin de hatalı olduğuna inanıyorum.

"Bağımlılık olmaması" nedeniyle. Son örnekte 8. arabelleği görüntülemeyi hiçbir şekilde başaramadım. Bu sıralama ne olmalı.. Belki sen yapabilirsin?

"Çizildikten sonra hesaplanan .." pahasına. Göstergemde, ilk 100'ü hesaplanmış olan 200'den fazla arabellek kullanılıyor.
Benim durumumda, bunların hepsi basit satırlardır, dolayısıyla #property için n'nin hesaplanması tampon indeksinin değerine dayanır: n=b+1. Ve basit çizgiler görüntülenir. Yanlış anlamalar histogramların ortaya çıkmasıyla başlar.

Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Стили рисования
Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Стили рисования
  • www.mql5.com
При создании пользовательского индикатора можно указать один из 18 типов графического построения (способа отображения на главном окне графика или в подокне графика), значения которых указаны в перечислении ENUM_DRAW_TYPE. В зависимости от стиля рисования, может потребоваться от одного до четырех буферов значений (отмеченных как INDICATOR_DATA...
 
User_mt5 :

Fazla güven duymadan, ama yine de bu ifadelerin her ikisinin de hatalı olduğuna inanıyorum.

"Bağımlılık olmaması" nedeniyle. Son örnekte 8. arabelleği görüntülemeyi hiçbir şekilde başaramadım. Bu sıralama ne olmalı.. Belki sen yapabilirsin?

"Çizildikten sonra hesaplanan .." pahasına. Göstergemde, ilk 100'ü hesaplanmış olan 200'den fazla arabellek kullanılıyor.
Benim durumumda, bunların hepsi basit satırlardır, dolayısıyla #property için n'nin hesaplanması tampon indeksinin değerine dayanır: n=b+1. Ve basit çizgiler görüntülenir. Yanlış anlamalar histogramların ortaya çıkmasıyla başlar.

tartışmayacağım. Kesinlikle herhangi bir sırayla çizilebilir arabellekler oluştururum. Ancak aralarına bir hesaplama tamponu eklenir eklenmez, çizilen göstergelerin grafik yapıları artık grafikte görüntülenmez. Değerleri veri penceresinde kalır. Makalelerde göstergelerin ve bunların tamponlarının oluşturulmasını açıklamak için birçok test gerçekleştirdi. Sadece hesaplanan tamponların (gösterge tamponlarının beyan sırasına göre düzenlenmesi) bir şekilde çizilenlerin görüntülenmesini / görüntülenmemesini etkilediği sonucuna vardım.

 
Artyom Trishkin :

tartışmayacağım. Kesinlikle herhangi bir sırada çizilebilir arabellekler oluştururum. Ancak aralarına bir hesaplama tamponu eklenir eklenmez, çizilen göstergelerin grafik yapıları artık grafikte görüntülenmez. Değerleri veri penceresinde kalır. Makalelerde göstergelerin ve bunların tamponlarının oluşturulmasını açıklamak için birçok test gerçekleştirdi. Sadece hesaplanan tamponların (gösterge tamponlarının beyan sırasına göre düzenlenmesi) bir şekilde çizilenlerin görüntülenmesini / görüntülenmemesini etkilediği sonucuna vardım.

Ben de emin değilim.

Bir süredir (son 3-4 ay), sembol penceresinde genellikle anlaşılmaz ve endişe verici olaylar meydana geliyor.

İlk olarak, bir göstergenin yapısının herhangi bir sebep olmaksızın herhangi bir yöne, örneğin aşağı veya sağa hareket edebileceği defalarca belirtilmiştir. Sadece yeni bir kene, tüm gösterge bam! ve taşındı. Aynısı bazen ilk açılışta da oluyor. bilgisayar.

İkincisi, eğer bazı arabellekler silinir ve ardından derleme yapılırsa, bu uzak yapıların "izleri" açıklanamayan olaylara (TF'yi ileri geri değiştirme, yeni yeniden derleme, ayarları güncelleme vb.) kadar kalır. Belki de veri penceresinde çok "izler" vardır. (teknik olarak, diziler yalnızca zorla temizlenir ve MT 5'te, diziye gerek yoksa, basitçe "kayıttan kaldırılır", ancak veriler kalır; elbette, tüm bunlar MT5 hatalarıdır)
--

Bir şaka var: Anavatanımızın tarihi tahmin edilemez. Aynısı MT5 için de söylenebilir: çok gizemli :)
--

Bu arada şimdi son açıklamalarıma göre gerçek göstergemde değişiklikler yaptım. Çalışmıyor. Dizileri yansıtmak için DRAW_HISTOGRAM2 ve INDICATOR_CALCULATIONS eklendi - işe yaradı.

Просмотр и настройка графиков - Графики котировок, технический и фундаментальный анализ - Справка по MetaTrader 5
Просмотр и настройка графиков - Графики котировок, технический и фундаментальный анализ - Справка по MetaTrader 5
  • www.metatrader5.com
Графики в торговой платформе отображают изменение котировок финансовых инструментов во времени. Они необходимы для проведения технического анализа и работы советников. Они позволяют трейдерам наглядно следить за котировками валют и акций в режиме реального времени и моментально реагировать на любое изменение ситуации на финансовых рынках...
 
User_mt5 :


Bunu kendiniz yapmanız gerekmez - MQL5 Sihirbazını kullanarak boş bir Uzman Danışman oluşturun - bu şekilde grafik grafikleri ve gösterge dizilerini bildirirken minimum hata yaparsınız.

 
User_mt5 :

Ben de emin değilim .

Bir süredir (son 3-4 ay), sembol penceresinde genellikle anlaşılmaz ve endişe verici olaylar meydana geliyor.

İlk olarak, bir göstergenin yapısının herhangi bir sebep olmaksızın herhangi bir yöne, örneğin aşağı veya sağa hareket edebileceği defalarca belirtilmiştir. Sadece yeni bir kene, tüm gösterge bam! ve taşındı. Aynısı bazen ilk açılışta da oluyor. bilgisayar.

İkincisi, eğer bazı arabellekler silinir ve ardından derleme yapılırsa, bu uzak yapıların "izleri" açıklanamayan olaylara (TF'yi ileri geri değiştirme, yeni yeniden derleme, ayarları güncelleme vb.) kadar kalır. Belki de veri penceresinde çok "izler" vardır. (teknik olarak, diziler yalnızca zorla temizlenir ve MT 5'te, dizi gerekli değilse, basitçe "kayıttan kaldırılır", ancak veriler kalır; elbette, tüm bunlar MT5 hatalarıdır)
--

Bir şaka var: Anavatanımızın tarihi tahmin edilemez. Aynısı MT5 için de söylenebilir: çok gizemli :)
--

Bu arada şimdi son açıklamalarıma göre gerçek göstergemde değişiklikler yaptım. Çalışmıyor. Dizileri yansıtmak için DRAW_HISTOGRAM2 ve INDICATOR_CALCULATIONS eklendi - işe yaradı.

Benimle ilgili değil .

Gerisi sizin hatalarınız ve dikkatsizliğinizdir (gösterge çizgilerinin yer değiştirmesi hariç, ancak hafıza işe yararsa zaten düzeltilmiş görünüyor)

Nasıl bir yapıya sahipsin?

 
Vladimir Karputov :

Bunu kendiniz yapmanız gerekmez - MQL5 Sihirbazını kullanarak boş bir Uzman Danışman oluşturun - bu şekilde grafik grafikleri ve gösterge dizilerini bildirirken minimum hata yaparsınız.

Son örneğimde 8. tamponu nasıl doğru bir şekilde yansıtacağımı söyleyebilir misiniz? İnisiyatif almadan mı?
Kuralları belirtir misin?

Artyom Trishkin :

Benimle ilgili değil .

Gerisi sizin hatalarınız ve dikkatsizliğinizdir (gösterge çizgilerinin yer değiştirmesi hariç, ancak hafıza işe yararsa zaten düzeltilmiş görünüyor)

Nasıl bir yapıya sahipsin?

Son örneğimde 8. tamponu nasıl doğru bir şekilde yansıtacağımı söyleyebilir misiniz? Özenle mi?
Ve nedenlerini söyle?
2530 oluşturun.

--
Hâlâ yeni öğreniyorum, bu yüzden beyler, belgelerde tüm bunları nerede okuyabileceğinizi belirtirseniz çok minnettar olurum.

Neden: