Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 97
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Fikir sizin, kod değil. Kod programcı tarafından yazılmıştır, sizin tarafınızdan değil, TK'yi siz yazdınız.
Hayal edin - Windows kullanıcıları açık kaynak talep ediyor - saçma değil mi?
Anladığım kadarıyla uzmanların yazdığı kod MetaQuotes şirketine mi, yoksa şahsen size mi ait?
Ve burada Windows, öncelikle, kullanıcıların bunu talep etme hakları yoktur. bu ürün macrosoftware'e ait, burada biraz daha farklı söylemek lazım, macrosoftware onu yazan programcılardan ürününün açık kaynak kodunu istemeye başlayacak ve parmaklarını büküp vermeyecekler.
AAA :-=) yani kaynak hala savunmadan önce orada mı? o zaman başka ne istiyorsun Ayrıca kimsenin size korumalı bir Uzman Danışmanın açık kaynak kodunu vermeyeceği söylendi, ben de vermeyeceğim. Ve bir talep olsaydı tamamlandıktan sonra talep, ürününüzün kaynağı.
Görevi reddederdim.
O zaman başka neye ihtiyacın var? Korumadan önce bir kaynak kodu vardır, yani korumalı bir danışmanla aynıdır. aynı şekilde çalışmalıdırlar.
Expert Advisor'ın çalışması sırasında iyileştirmeler yapıldı, çeşitli fonksiyonlar eklendi vb. ve şimdi bu iyileştirmelerle birlikte açık kod yok.
o zaman bence gerçek senin tarafında.
Anladığım kadarıyla uzmanların yazdığı kod MetaQuotes şirketine mi, yoksa şahsen size mi ait?
Kod yazarsam, kişisel olarak bana. MetaQuotes programlama diline sahiptir.
her şey dürüst.
Expert Advisor'da açık siparişin nasıl kapatılacağını anlatır mısınız? Zararı durdur veya kar al ile bir pozisyonun nasıl kapatıldığı açıktır. Ve manuel olarak nasıl yapılır?
Expert Advisor'da açık siparişin nasıl kapatılacağını anlatır mısınız? Zararı durdur veya kar al ile bir pozisyonun nasıl kapatıldığı açıktır. Ve manuel olarak nasıl yapılır?
Veya CTrade sınıfını kullanın, bir işlev var
trade.PositionClose( _Symbol );
bunun gibi bir şey
https://www.mql5.com/en/docs/standardlibrary/tradeclasses/ctrade/ctradepositionclose
lazarev-dm : Veya CTrade sınıfını kullanın, bir işlev var
CTrade sınıfının PositionClose() yöntemi de zıt emirlere sahip bir pozisyonu kapatır .
Sevgili programcılar, lütfen bana aşağıdaki durumun çözüm yöntemini veya nedenini söyleyin. Son zamanlarda MQL5 üzerinde çalışıyorum ve henüz yeterli deneyimim yok.
Sınıfları kullanmadan normal bir Expert Advisor'dan çok para birimli Expert Advisor yapmaya çalıştım. Ne yazık ki, çoklu para birimi hakkında ayrıntılı makaleler bulamadım.
Programın bir sonraki parçasını yazdı.
int sayı_instr; // bu, para birimi adları dizisindeki para biriminin sıra sayısıdır
string İsim_sembol[6] = { "AUDUSD", "EURUSD", "GBPUSD", "USDCAD", "USDCHF", "USDJPY" } ; //para birimi adlarının metin dizisi: [0]-"AUDUSD", 1-"EURUSD", 2-"GBPUSD", 3-"USDCAD" vb.
double Close_buf[], Open_buf[], High_buf[], Low_buf[]; // mum parametreleri için temel diziler
tarihsaat Time_buf[]; // bar açılış zamanlarının temel dizisi
double Close_H1[6][150], Open_H1[6][150], High_H1[6][150], Low_H1[6][150]; // H1 zaman çerçevesi için çok para birimli Uzman Danışmanın şamdan parametreleri için diziler
// dizideki satır sayısı, analiz edilen para birimlerinin sayısına karşılık gelir
tarihsaat Saat_H1[6]][150]; // bar açılış zamanları dizisi
double Close_H4[6][150], Open_H4[6][150], High_H4[6][150], Low_H4[6][150]; // H4 zaman çerçevesi için çok para birimli Uzman Danışmanın mum çubuklarının parametreleri için diziler
// dizideki satır sayısı, analiz edilen para birimlerinin sayısına karşılık gelir
tarihsaat Saat_H4[6]][150]; // bar açılış zamanları dizisi
int OnInit()
{
}
geçersiz OnDeinit(const int nedeni)
{
//---
ArrayFree(Zaman_tampon);
ArrayFree(Close_buf);
ArrayFree(open_buf);
ArrayFree(yüksek_tampon);
ArrayFree(Düşük_tampon);
}
geçersiz OnTick()
{
//------------------------------------------------ ------------------------------
İşte yeni bir barın açılış saatinin meydana geldiği anı belirlemek için programın bir parçası Nev_Time[0]
ve işlenen çubuğun seri numarası, test etme veya Schetchik_svech ticareti sürecinde tutulur
//------------------------------------------------ -------------------------------------------------- ----------------------
ArraySetAsSeries(Close_buf, true); // close_array dizisi için indekslemeyi zaman serilerinde olduğu gibi ayarla
ArraySetAsSeries(Open_buf, true); // open_array dizisi için indekslemeyi zaman serilerinde olduğu gibi ayarla
ArraySetAsSeries(Yüksek_tampon, doğru); // high_array dizisi için indekslemeyi zaman serilerinde olduğu gibi ayarla
ArraySetAsSeries(Low_buf, true); // low_array dizisi için indekslemeyi zaman serilerinde olduğu gibi ayarla
ArraySetAsSeries(Time_buf, true); // time_array dizisi için indekslemeyi zaman serilerinde olduğu gibi ayarla
for( nomer_instr=0; nomer_instr<=5; nomer_instr++ )
{
//============================================== ========================
CopyTime( Name_symbol[nomer_instr], PERIOD_H1,0,160,Time_buf); // her çubuk için geçmiş zaman verilerini ara belleğe kopyalayın
CopyClose( Name_symbol[nomer_instr], PERIOD_H1,0,160,Close_buf); // her çubuk için geçmiş verileri arabellek kapanışına kopyalayın
CopyOpen( Name_symbol[nomer_instr], PERIOD_H1,0,160,Open_buf); // her çubuk için açık geçmiş verilerini arabelleğe kopyala
CopyHigh( Name_symbol[nomer_instr], PERIOD_H1,0,160,High_buf); // her çubuk için yüksek geçmiş verilerini arabelleğe kopyalayın
CopyLow( Name_symbol[nomer_instr], PERIOD_H1,0,160,Low_buf); // her çubuk için düşük geçmiş verileri arabelleğe kopyala
//============================================== ========================
for( i=1; i<=145; i++ )
{
Time_H1[nomer_instr][i]=Time_buf[i];
Close_H1[nomer_instr][i]=Close_buf[i];
Open_H1[nomer_instr][i]=Open_buf[i];
High_H1[nomer_instr][i]=Yüksek_buf[i];
Low_H1[nomer_instr][i]=Low_buf[i];
}
//============================================== ===================================
// saatlik zaman çerçevesinin şamdan parametrelerinin oluşturulan verilerinin zaman kaymasını kontrol etme
if( Schetchik_svech > 8 && Schetchik_svech < 15 )
{
if( sayı_instr == 5 )
{
Uyarı("============================================ =" );
Alert(" çubuk numarası = ",Schetchik_svech,", çubuğun açılma zamanı Nev_Time[0]=",Nev_Time[0]);
Alert(" alet numarası: nomer_instr=",nomer_instr,", alet: Name_symbol[nomer_instr]=",Name_symbol[nomer_instr]);
Uyarı("---------------------------------------------- - ---------");
for( i=1; i<=5; i++ )
{
Alert( "i=",i,", Time_H1[nomer_instr][i]=",Time_H1[nomer_instr][i],", Close_H1[nomer_instr][i]=",Close_H1[nomer_instr][i]);
}
}
}
//============================================== ===================================
} // H1 zaman diliminde kullanılan para birimleri için döngünün sonu
//############################################
H4 zaman dilimi için programın benzer bir parçası burada
//##########################################
} // OnTick() fonksiyonunun sonu
Programın bu parçasının performansını kontrol etmek benim için beklenmedik bir sonuç ortaya çıkardı:
- H1 durumunda, danışmanın bulunduğu çizelge için çubuk parametrelerinin sonuçlandırılması durumunda, sıfırın açılması ile ilk çubukların bir saat içinde açılması arasında bir zaman farkı var.
Örneğin, EA EURUSD grafiğindedir ve sıfır çubuğunun açılma anı Nev_Time[0]= 2011.01.03 13:00:00, o zaman 1. çubuğun açılış zamanı Time_H1[1][1]'dir. = 2011.01.03 12:00:00
Sonuç sağduyu ile uyumludur.
- Şimdi danışman aynı grafikte ve AUDUSD gibi diğer para birimlerinin verilerini analiz ediyoruz . Sahibiz:
sıfır çubuğunun açılma anı Nev_Time[0]= 2011.01.03 13:00:00, ardından 1. çubuğun açılış zamanı Time_H1[1][1]= 2011.01.03 11:00:00
Bu sonuç zaten kabul edilemez, ancak makalelerde bu etkinin ortaya çıkmasının nedenlerini bulamadım.
Lütfen bana bu talihsizlikten nasıl kurtulacağımı söyleyin, peki, her para birimi için aynı danışmanı yazmayın.
İlginiz için teşekkür ederim.
Time_H1[1][0] ne döndürür?
Dizinin bu öğesini kullanmıyorum, çünkü gelecekte, son 5 çubukta hemen fraktal arama algoritmasına dönüyorum. Ve Time_H1[1][0], bu çubuğun parametrelerinin henüz oluşturulmadığı sıfır çubuğunun açılış zamanıdır. Belki yanılıyorum, ama kendi deneyimlerime göre zaman serileri oluşturmak için sıfır çubuk parametresi kullanmanın bunların bozulmasına yol açtığını gördüm.