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

 
Vikon :

Merhaba!

Bir grafik nesnesini görüntülemek için hangi tam sayının gerekli olduğunu anlayamıyorum

tüm zaman dilimlerinde.

Teşekkür ederim.

OBJ_ALL_PERIODS=2097151

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Видимость объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Видимость объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Видимость объектов - Документация по MQL5
 
C-4 :
Derleyicinin MQL4'te olduğu gibi kullanılmayan işlevler ve değişkenler hakkında mesaj almaya izin veren bir anahtarı olup olmadığını bilen var mı?

mql4'te nasıl yapılır?

Kullanılmayan işlevlerle ilgili uyarıların gösterilmemesi sorulduğunda Renat, görmeyeceğini söyledi. Bağlantılı kitaplıkların kullanımıyla bağlantılı olarak. Eski yapıdaydı. Şimdi hayır. Danışmanın bünyesinde kullanılmayan bu işlevleri aramak çok sakıncalıdır. Yalnızca kullanılmayan değişkenler hakkında, onları start() veya OnTick() değil, bir işlevin gövdesinde bulursa konuşur.

 
artmedia70 :

mql4'te nasıl yapılır?

Kullanılmayan işlevlerle ilgili uyarıların gösterilmemesi sorulduğunda Renat, görmeyeceğini söyledi. Bağlantılı kitaplıkların kullanımıyla bağlantılı olarak. Eski yapıdaydı. Şimdi hayır. Danışmanın bünyesinde kullanılmayan bu işlevleri aramak çok sakıncalıdır. Yalnızca kullanılmayan değişkenler hakkında, onları start() veya OnTick() değil, bir işlevin gövdesinde bulursa konuşur.

Çünkü OOP'de işlevler değil, yöntemler vardır. Her kütüphane, bazıları kullanılmayan birçok metoda sahip bir grup sınıfa sahip olabilir. Ek olarak, sınıflar ayrıca bazı yöntemleri kullanılmayan diğer kitaplıklara da atıfta bulunur. Sonuç olarak, kullanılmayan yöntemlerden oluşan büyük bir ayak örtüsü ortaya çıkabilir.

Derlenen kodun miktarına bakılırsa, derleyici kullanılmayan yöntemleri otomatik olarak hariç tutar. Onlar. onları kendin aramanın bir anlamı yok, çünkü. derleyici işi yapar.

 
Reshetov :

Çünkü OOP'de işlevler değil, yöntemler vardır. Her kütüphane, bazıları kullanılmayan birçok metoda sahip bir grup sınıfa sahip olabilir. Ek olarak, sınıflar ayrıca bazı yöntemleri kullanılmayan diğer kitaplıklara da atıfta bulunur. Sonuç olarak, kullanılmayan yöntemlerden oluşan büyük bir ayak örtüsü ortaya çıkabilir.

Derlenen kodun miktarına bakılırsa, derleyici kullanılmayan yöntemleri otomatik olarak hariç tutar. Onlar. onları kendin aramanın bir anlamı yok, çünkü. derleyici işi yapar.

Bu sadece bir sorun değil. Sorun , sınıflarında kullanılmayan yöntemlerin aranmasıdır. Tek başıma kendime ait beş yüzden fazla yöntemim var. İlişkiler çok karmaşık. İlkel kod kaçınılmazdır. Halihazırda kullanılmayanları hızlıca görmek çok faydalıdır.
 
Reshetov :

Çünkü OOP'de işlevler değil, yöntemler vardır. Her kütüphane, bazıları kullanılmayan birçok metoda sahip bir grup sınıfa sahip olabilir. Ek olarak, sınıflar ayrıca bazı yöntemleri kullanılmayan diğer kitaplıklara da atıfta bulunur. Sonuç olarak, kullanılmayan yöntemlerden oluşan büyük bir ayak örtüsü ortaya çıkabilir.

Derlenen kodun miktarına bakılırsa, derleyici kullanılmayan yöntemleri otomatik olarak hariç tutar. Onlar. onları kendin aramanın bir anlamı yok, çünkü. derleyici işi yapar.

Yuri, bu doğal. Ama kaynağı müşteriye verdiğinizde oraya süpürmek istiyorsunuz. Ve azap başlar. Çok fazla şablon yok - belirli araç sınıfları için birkaç tane. Bu durumda yer almayan işlevleri temizlememiz gerekiyor. Yalnızca danışmanın gövdesinde kullanılmayan işlevlere ve değişkenlere işaret eden bir "sihirli düğmeye" sahip olmak istiyorum.
 

Umarım bir önceki sorunun tartışması tamamlanmıştır. Konu kapanınca anlamak zor ve sorunuzu sormanız yerinde olur. Söylemek. St_handle ve MA_handle hesaplamalarının sonuçlarıyla iki boyutlu bir diziyi nasıl dolduracağımı çözemiyorum, sadece tek boyutlu olana aktarılıyor.

/+------------------------------------------------------------------+
//|                                                           11.mq5 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link        "http://www.mql5.com"
#property version    "1.00"
#property indicator_separate_window
#property indicator_minimum 0
#property indicator_maximum 100
#property indicator_buffers 1
#property indicator_plots    1
//--- plot Label1
#property indicator_label1   "Label1"
#property indicator_type1   DRAW_LINE
#property indicator_color1   clrRed
#property indicator_style1   STYLE_SOLID
#property indicator_width1   1
//--- input parameters
input int       Input1= 0 ;
input int       Input2= 0 ;

//--- indicator buffers
double          Label1Buffer[];
double       MA[ 10000 ][ 400 ];  
int          St_handle; 
int          MA_handle; 
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- indicator buffers mapping
   SetIndexBuffer ( 0 ,Label1Buffer, INDICATOR_DATA );
   
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| 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 Kp     = 51 ; // с Kp начанается К% на Kp_end заканчивается
   int Kp_end = 400 ; // с Kp начанается К% на Kp_end заканчивается
   int MAp    = 2 ;   // с MAp начанается D% на MAp_end заканчивается
   int MAp_end= 31// с MAp начанается D% на MA_end заканчивается
   ENUM_STO_PRICE price_field= 1 ; // цена расчета стохастика 0 Low/High    1 Close/Close


   St_handle= iStochastic ( NULL , 0 ,Kp, 1 , 1 , MODE_EMA ,price_field);  
  
   for (MAp= 2 ;MAp<MAp_end;MAp++)
   {
    MA_handle= iMA ( NULL , 0 ,MAp, 0 , MODE_EMA ,St_handle);
   }
    
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+
 
C-4 :
Bu sadece bir sorun değil. Sorun , sınıflarında kullanılmayan yöntemlerin aranmasıdır.

Ne anlama geliyor: sınıflarında kullanılmayan yöntemler? OOP'deki uygulama bu değil. OOP'deki normal bir programcı, algoritmik programlamanın aksine, aynı sınıf daha sonra diğer uygulamalarda faydalı olabileceğinden veya sınıf kitaplığına girebileceğinden, tüm durumlar için çağrılan gerekli tüm alan ve yöntemlerle sınıflar oluşturur. Bir proje çerçevesinde bile, hemen tam teşekküllü sınıflar oluşturmanın ve kesilmemiş sınıflar oluşturmanın daha iyi olduğu gerçeğinden bahsetmiyorum, böylece daha sonra kaynak koduna tırmanmanız ve gerekli alanları eklemeniz gerekmez. ve yöntemler.

OOP'de, birçok insanın algoritmik programlamada alıştığı tasarruflar ancak daha sonra geri tepecektir. Kullanılmayan her şey programcı tarafından değil, derleyici tarafından koddan çıkarılmalıdır.

Tabii ki, OOP'de kaynak kodu algoritmik programlamadan daha büyüktür. Ancak bu bir dezavantaj değil, bir avantajdır, çünkü. bu projedeki "ekstra" kodun önemli bir kısmı başka projelerde yeniden kullanılabilir.

C-4 :


Tek başıma beş yüzden fazla yöntemim var. İlişkiler çok karmaşık. İlkel kod kaçınılmazdır. Halihazırda kullanılmayanları hızlı bir şekilde görmek çok faydalıdır.

Bir kambur oluşturmaya çalışmanıza gerek yok, yani. her şeyi bir sınıfa koyun. Sınıf kitaplıkları oluşturmanız gerekir, yani. işlevselliği ayrı sınıflara ayırın ve bu ekonomiye yorum eklemeyi unutmayın, o zaman her şey yolunda. Ben de başlangıçta Pascal'dan sonra Java çalışmaya başladığımda, eski alışkanlığa göre her şeyi tek parça halinde yapmaya çalıştım, yani. pratik olarak, OOP kullanmak yerine, belirli bir görev için gerekli olan her şeyi doldurduğu bir sınıf yarattı, yani. algoritmik programlamada olduğu gibi. Gelecekte hiçbir yere uygulanması mümkün olmayan evrensel olmayan bir karmaşa olduğu ortaya çıktı, böyle bir kodu anlamak için bacağınızı kıracağınız gerçeğinden bahsetmiyorum bile.
 
Andrei-1 :

Söylemek. St_handle ve MA_handle hesaplamalarının sonuçlarıyla iki boyutlu bir diziyi nasıl dolduracağımı çözemiyorum, sadece tek boyutlu olana aktarılıyor.

Peki ya anlamı? Onlar. Occam'ın usturasını kullanmak yerine neden bir kamburu şekillendirsin ki? Onlar. İki boyutlu bir dizinin iki tek boyutlu diziye göre avantajı nedir? Sonuçta, önce varsayılan olarak göstergeler tarafından oluşturulan iki tek boyutlu olandan iki boyutlu olana bir şey itmeniz ve ardından oradan bir şey çekmeniz gerekir. Fazladan iş yapıyorsunuz ve başkalarını buna dahil etmeye çalışıyorsunuz.

Tek boyutlu dizilerle ilgili bir sorun olsaydı, oyun muma değecekti.

 
Foruma tırmandıktan sonra, ne kadar bellek alacağını gördüm, çok fazla! Tek boyutlu bir diziyi doldurmaya, içinde bir sinyal aramaya, üzerine yazmaya ve tekrar bir sinyal aramaya karar verdim. 10K döngü istiyorum. Bunun gibi. Saatte bir veya iki arama benim için yeterli.
St_handle= iStochastic ( NULL , 0 ,Kp, 1 , 1 , MODE_EMA ,price_field); // создание хэндла стохастика 
  
   for (MAp= 1 ;MAp<MAp_end;MAp++) //перебор сглаживаний 
   {
    MA_handle= iMA ( NULL , 0 ,MAp, 0 , MODE_EMA ,St_handle); // создание хэндла сглаженного стохастика
     CopyBuffer (MA_handle, 0 , 0 , 400 ,MA); // заполнение одномерного массива значениями стохастика
     if (MA[ 1 ]> 6 ) Alert (MA[ 1 ]); // начинается поиск сигнала
    
   }
 

konu dışıysa özür dilerim..

kim yapabilir yardım edin..

delphi 7 dll prosedüründe ..

prosedür test1(var data: Double dizisi); standart çağrı;
başlamak
ShowMessage('Giriş Yapıldı');

son;

mt4'te:

#import "gayss.dll"
geçersiz test1( double &data[] );
#içe aktarmak

ArrayResize(veri, 6);
veri[0]=2;
veri[1]=4;
veri[2]=8;
veri[3]= 16;
veri[4]= 21;

veri[5]= 3;

test1(veri);

2014.02.06 17:39:04.241 yığın hasarlı, 'SOG_2014.mq4' (80,7) içindeki DLL işlev çağrısını kontrol edin

belki birileri nasıl doğru yapılacağını biliyordur.