[ARŞİV!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 4. - sayfa 387

 
arkadaşlar bana şöyle bir şey söyleyin. EX4'te bunların nasıl kullanılacağına dair göstergeler ve uzmanlar dosyaları var mı?
 
Las-tochka :

Siz sadece onu grafiğe aktarın, parametreleri ayarlayın ve kullanın.


Bu şekilde olmasa da daha iyi)))

Dosya türleri


MQL4 dili, program kodunu taşıyan 3 tür dosyayı ayırt eder: mq4, ex4 ve mqh.

mq4 tipi dosyalar programın kaynak kodudur. Bu tür dosyalar, her türden programın kaynak metinlerini içerir (uzmanlar, komut dosyaları ve göstergeler). MetaEditor, program kodları oluşturmak için kullanılır. Program kodu tamamen veya kısmen derlendikten sonra kaydedilebilir ve daha sonra revizyon için editörde yeniden açılabilir. mq4 türündeki dosyalar, istemci terminalinde yürütülmek için kullanılamaz. Programın çalıştırılması için önce derlenmesi gerekir. Programın kaynak kodunun derlenmesi sonucunda aynı isimde ex4 uzantılı bir dosya oluşturulur.

Ex4 dosyaları , istemci terminalinde pratik kullanıma hazır derlenmiş bir programdır. Bu dosya türü düzenlenemez. Programda değişiklik yapmanız gerekiyorsa, kaynak koduna (mq4 tipi dosya) başvurmanız, düzenlemeniz ve ardından yeniden derlemeniz gerekir. Ex4 dosyasının adına göre, ne tür bir programa ait olduğu - bir komut dosyası mı, bir uzman mı yoksa bir gösterge mi olduğu - yargılanamaz. ex4 dosyaları kitaplık dosyaları olarak kullanılabilir.

mqh türündeki dosyalar dahil edilen dosyalardır. Bu, yaygın olarak kullanılan kullanıcı programı bloklarının kaynak kodudur. Bu tür dosyalar, Uzman Danışmanların kaynak metinlerine, komut dosyalarına ve özel göstergelere derleme aşamasında dahil edilebilir. Dahil etme dosyaları genellikle içe aktarılan işlevlerin açıklamalarını (örnek olarak stdlib.mqh veya WinUser32.mqh dosyalarına bakın) veya yaygın sabitlerin ve değişkenlerin açıklamalarını (stderror.mqh ve WinUser32.mqh) içerir. mqh türündeki dosyalar genellikle Terminal_directory\experts\include dizininde depolanır.

Dahil etme dosyaları, derleme zamanında #include yönergesi kullanılarak ana kaynak dosyaya genellikle "dahil edildikleri" için bu şekilde adlandırılır. mqh türündeki dosyaların programın kaynak kodunu içermesine ve MetaEditor'un bunları derlemesine rağmen, bağımsız ve kendi kendine yeterli değillerdir, yani. ex4 tipi yürütülebilir dosyalar elde etmek için derleme gerektirmez. mq4 dosyaları ayrıca Terminal_directory\experts\include dizininde saklanması gereken içerme dosyaları olarak da kullanılabilir.

İstemci terminalinin gezgininde, "Uzman Danışmanlar", "Özel göstergeler" ve "Komut Dosyaları" bölümlerinde yalnızca ex4 uzantısına sahip olan ve ilgili dizinde bulunan dosya adları görüntülenir. Daha eski bir MetaEditor sürümüyle derlenen dosyalar çalışmaz ve grileşir.

Tam bir program oluşturmayan, ancak uygulama programlarının oluşturulmasında kullanılan başka dosya türleri de vardır. Örneğin, bir program birkaç ayrı dosyadan derlenebilir veya bu amaçla önceden oluşturulmuş bir kitaplık kullanılabilir. Kullanıcı, sık kullanılan kullanıcı programları bloklarını depolamak için tasarlanmış kullanıcı tanımlı işlev kitaplıkları oluşturabilir. Kitaplıkların Terminal_directory\experts\libraries dizininde saklanması önerilir. mq4 ve ex4 dosyaları kitaplık dosyaları olarak kullanılabilir. Kütüphaneler kendi başlarına çalışamazlar. Kitaplık işlevleri çağrılırken bilgi işlem kaynaklarının ek yükü nedeniyle, kitaplıkların kullanımına göre içerme dosyalarının kullanılması tercih edilir.

"MQL4 Programlamaya Giriş" öğreticisinin ilk bölümünde, mq4 program kaynak metin dosyaları ve derlenmiş ex4 program dosyaları ile ilgileneceğiz.

 
grafikte değiştirmek için nereye koymalıyım?
 
Las-tochka :


Başka bir şaka buldum, bir robot, MT4 terminallerinde farklı brokerlerle test edildiğinde, hem biri hem de diğeri için tekliflerin bir kısmının olmaması nedeniyle farklı test sonuçları veriyor!? Ancak tüm bunlarla, hiçbir uyumsuzluk hatası yok ??? Şok oldum !?!?!?

Yüzdeki kelebek etkisi

Kim ne düşünüyor?

Test edenin hiçbir şekilde potansiyel kar/zararı güvenilir bir şekilde göstermek zorunda olmadığını düşünüyorum, sadece danışmanın mantığının doğru çalışıp çalışmadığını, koddaki matematik ve mantıksal hatalarla her şeyin yolunda olup olmadığını görmek içindir.
 

BeerGod :
Думаю что тестер никоем образом не обязан достоверно показывать потенциальную прибыль/убытки, он лишь для того чтобы увидеть правильно ли рабоает логика советника, всё ли в порядке с математикой и логическими ошибками в коде.

Sorunun esası hakkında herhangi bir bilgi var mı?

Mesele kâr değil. Ve test cihazının ne için olduğu, bence bu bir araçtır ve nasıl kullanılacağı her birimizin kararıdır.


 
Myth63 :
grafikte değiştirmek için nereye koymalıyım?


Grafikte bir uzman veya gösterge veya komut dosyası başlatmanız gerekiyorsa, araç çubuğundaki gezginden, ilgili programı farenin sol düğmesiyle grafiğe aktarın.

Ancak öğreticiyi sayfanın sol alt kısmındaki https://book.mql4.com/ru/ adresinden indirmek daha iyidir) İyi şanslar!

 

Güzel gün!

Diğer dönemlerden MA gösteren bir gösterge kullanıyorum.

Pencereye birkaç parça asıyorum, terminal çok yavaşlamaya başlıyor!.

Uzmanlar, göstergenin yavaşlığı ile ilgili sorun nedir, sadece 15 satırı var mı?

Anlayan düzeltsin.

Şimdiden teşekkürler.

#property indicator_chart_window
#property indicator_buffers 1

extern double tf = 240; // Тф с какого береть МА
extern int period = 34; // Период МА
extern string _МА_ = "0--SMA 1--EMA 2--SMMA 3--LWMA";
extern int method = 2; // Метод МА
extern int price = 4; //
extern int shift = 0; //

extern string _LINE_ = "ЦВЕТ ТОЛЩИНА СТИЛЬ БАР";
extern color clr = Yellow; // Цвет линии
extern int width = 2; // Толщина линии
extern int style = 2; // Стиль линии
extern int CountBars = 500; // Количество баров отрисовки МА

datetime time_0;
double ma[];
//+------------------------------------------------------------------+
int init() {
//----
SetIndexBuffer(0, ma);
SetIndexStyle(0, DRAW_LINE, style, width, clr);
SetIndexLabel(0, "MA " + tf);
IndicatorShortName("Moving Average (" + tf + ", " + period + ")");
if (CountBars >= Bars)
CountBars = Bars;
SetIndexDrawBegin(0, Bars - CountBars + 1);
return (0);
}
//+------------------------------------------------------------------+
int start() {
//----
int cb = IndicatorCounted();
SetIndexDrawBegin(0, Bars - CountBars + 1);
int i = Bars - cb - 1;
double ctf = Period();
double r = tf / ctf;
while(i >= 0) {
int k = MathFloor(i / r);
ma[i] = iMA(Symbol(), tf, period, shift, method, price, k);
i --;
}
if (Time[0] == time_0) return (0);
time_0 = Time[0];
return (0);
}
//+------------------------------------------------------------------+

 
Myth63 :
grafikte değiştirmek için nereye yerleştirmeliyim?
Uzmanlar klasöründeki uzmanlar ve diğer tüm türler ad olarak benzerdir. Terminali yeniden başlattıktan sonra, navigatörde mevcut olacaklar, kaynak kodlu olanların aksine sadece gri olacaklar.
 

Merhaba Lütfen söyle bana.Benim sorunum şu: danışmanda, bir ticaret için yalnızca bir sinyal olmalı (üç gösterge de belirtilen bölgelerini geçtiğinde)

if(SignalType_1 && (RSI >= 35 && Stoch >= 20 && CCI >= -100)) return(+1);

Soru. Bu sinyalin sadece BİR olması için bu satırı doğru bir şekilde nasıl yazılır. (Aksi takdirde, danışmanın aşağıdaki algoritmaya göre işlem yaptığı ortaya çıkar: RSI bölge 35'i geçti - ticaret; STOCH bölge 20'yi geçti - ticaret; CCI -100 bölgesini geçti - ticaret ve bu üç işlem olarak ortaya çıkıyor)

Üç göstergenin tümü bölgelerini geçtiğinde yalnızca BİR ticaret sinyali vardır.

 
artemka_1981 :

Merhaba Lütfen söyle bana.Benim sorunum şu: danışmanda, bir ticaret için yalnızca bir sinyal olmalı (üç gösterge de belirtilen bölgelerini geçtiğinde)

if(SignalType_1 && (RSI >= 35 && Stoch >= 20 && CCI >= -100)) return(+1);

Soru. Bu sinyalin sadece BİR olması için bu satırı doğru bir şekilde nasıl yazılır. (Aksi takdirde, danışmanın aşağıdaki algoritmaya göre alım satım yaptığı ortaya çıkar: RSI bölge 35'i geçti - ticaret; STOCH bölge 20'yi geçti - ticaret; CCI bölge -100'ü geçti - ticaret ve bu üç işlem olarak ortaya çıkıyor)

Üç göstergenin tümü bölgelerini geçtiğinde yalnızca BİR ticaret sinyali vardır.

Şu şekilde deneyin:

 bool GO = true ; // глобальная переменная
//---------------------

if (GO && SignalType_1 && RSI >= 35 && Stoch >= 20 && CCI >= - 100 ) {GO= false ; return (+ 1 );} //запретить повторный вход
//---------------
{OrderClose(.......); GO = true ; } //открыть семафор при закрытии позиции.