Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 353
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
bu (aşağıda) çalışmıyor, explorer'a F_Path yazdım, enter'a tıkladım, dosya açılıyor... WinApi'deki bilgiler böyle mi görünüyor?
Yazarken ve okurken FILE_COMMON bayrağının kullanılmasını kim engeller? Dosya, sistemde kurulu tüm terminaller tarafından kullanılabilir olacaktır. Tüm terminallerin paylaşımlı klasöründe yer alacaktır.
ME Dosyası --> Paylaşılan Veri Klasörünü Aç
Yazarken ve okurken FILE_COMMON bayrağının kullanılmasını kim engeller? Dosya, sistemde kurulu tüm terminaller tarafından kullanılabilir olacaktır. Tüm terminallerin paylaşımlı klasöründe yer alacaktır.
ME Dosyası --> Paylaşılan Veri Klasörünü Aç
Merhaba, parametrelerle ticaret talebi oluştururken böyle bir sorunla karşılaşan var mı:
bu parametreleri ayarlarsanız:
mrequest.action=TİCARET_ACTION_DEAL;mrequest.type_filling=ORDER_FILLING_FOK;
mrequest.type=ORDER_TYPE_BUY;
terminal, mrequest.type_filling=ORDER_FILLING_RETURN belirtirsem, geçersiz bir mrequest.type_filling yöntemi ( sipariş yürütme politikası ) belirttiğimi bildiriyor; sonra sipariş açılır, ancak programlı olarak kapatmak imkansızdır, terminal geçersiz bir yöntemin kullanıldığını bildirir. BCS Forex sunucusunda Expert Advisor'ı çalıştırıyorum, diğer sunucularda her şey yolunda. Belirli bir komisyoncu için ticaret robotları geliştirirken kullanılabilecek bir yürütme politikası yazabilen var mı? Teşekkür ederim.Uyarı işlevine sahip bir mq4 göstergesi vardır.
Örneğin:
Alt pencerenin sol üst köşesinde ( göstergenin adı ve parametrelerinin genellikle görüntülendiği yer) veya başka bir şekilde uyarının açık olup olmadığını gösterecek şekilde nasıl yapabilirim ( extern bool AlertMode= true ;) yoksa kapalı mı?Uyarı işlevine sahip bir mq4 göstergesi vardır.
Örneğin:
Alt pencerenin sol üst köşesinde ( göstergenin adı ve parametrelerinin genellikle görüntülendiği yer) veya başka bir şekilde uyarının açık olup olmadığını gösterecek şekilde nasıl yapabilirim ( extern bool AlertMode= true ;) yoksa kapalı mı?Belgeler şunları söylüyor:
При тестировании в эксперте можно обрабатывать пользовательские события с помощью функции OnChartEvent() , но в индикаторах эта функция в тестере не вызывается. Даже если индикатор имеет обработчик OnChartEvent() и этот индикатор используется в тестируемом эксперте, то сам индикатор не будет получать никаких пользовательских событий.
Şu anda, bu ifade ilgili değildir - göstergelerde bu işlev test cihazında çağrılır, en az bir gösterge, test cihazında başka bir gösterge tarafından oluşturulan olayları alabilir.
Sorun şu ki, bu işleve bir çağrı alındığında, göstergenin küresel düzeyde bildirilen değişkenlerde depolanan verilere erişimi yoktur ve bunun tersi de geçerlidir - bu işlevde yapılan tüm değişiklikler küresel erişim düzeyinin değişkenlerine kaydedilmez. .
Örnekler:
1. Nesne, genel düzeyde bildirilir ve OnInit işlevinde başlatılır. OnCalculate işlevinden erişilebilir, ancak OnChartEvent işlevinde bir hata mesajı alıyoruz - geçersiz işaretçi
2. Bir değişkenin içeriğini kaydeden bir fonksiyon vardır (değişken global düzeyde bildirilir). OnCalculate'den bu fonksiyonu çağırırken beklenen değeri alıyoruz, aynı fonksiyonu OnChartEvent'ten çağırırken saçma sapan alıyoruz.
Güzel gün!
Olayları, özellikle bir göstergedeki OnChartEvent() işlevini kullanırken bir sorunla karşılaştım. Bir Expert Advisor'da kullanırken herhangi bir sorun olmadıysa, göstergedeki bir olay üzerinde doğru şekilde çalışmak mümkün değildir. Yani olay gelir ama üzerinde var olan alanları değiştirmez. Misal:
//------------------------------------------------ --------------------------------------------------
int k;
int OnInit ()
{
k = 0;
ihandleDE = iCustom(_Symbol, _Period, "DrawExtremums");
//< ... >
dönüş(INIT_SUCCESSED);
}
int OnCalculate (const int oranları_toplam,
const int önceki_hesaplanmış,
const tarihsaat &saat[],
const double &aç[],
const çift &yüksek[],
const çift &düşük[],
const double &kapat[],
const uzun &tick_volume[],
const uzun &hacim[],
const int &spread[])
{
Print("OnCalculate() Üzerinde: k =", k);
//< ... >
dönüş(oranlar_toplam);
}
void OnChartEvent (const int id,
const uzun &lparam,
const double &dparam,
const string &sparam)
{
string nameEv = "EXTR_UP";
if (sparam == isimEv)
{
Print("OnChartEvent() Üzerinde: k = ", k);
k++;
}
}
//------------------------------------------------ --------------------------------------------------
Sonuç olarak şunları elde ederiz:
"OnCalculate()'de: k = 0" - her zaman.
"OnChartEvent() On: k = 0,...,123332" - 0'dan ...'a kadar sayar
Bu nasıl olabilir ve neden?!? Bu bir şekilde düzeltilebilir mi? Birisi anlarsa, cevap için çok minnettar olurum.
Not: Bu tür adaletsizlik yalnızca strateji test cihazında gerçekleşir, gerçek zamanlı olarak her şey düzgün çalışır.
Güzel gün!
Olayları, özellikle bir göstergedeki OnChartEvent() işlevini kullanırken bir sorunla karşılaştım. Bir Expert Advisor'da kullanırken herhangi bir sorun olmadıysa, göstergedeki bir olay üzerinde doğru şekilde çalışmak mümkün değildir. Yani olay gelir ama üzerinde var olan alanları değiştirmez. Misal:
//------------------------------------------------ --------------------------------------------------
int k;
int OnInit ()
{
k = 0;
ihandleDE = iCustom(_Symbol, _Period, "DrawExtremums");
//< ... >
dönüş(INIT_SUCCESSED);
}
int OnCalculate (const int oranları_toplam,
const int önceki_hesaplanmış,
const tarihsaat &saat[],
const double &aç[],
const çift &yüksek[],
const çift &düşük[],
const double &kapat[],
const uzun &tick_volume[],
const uzun &hacim[],
const int &spread[])
{
Print("OnCalculate() Üzerinde: k =", k);
//< ... >
dönüş(oranlar_toplam);
}
void OnChartEvent (const int id,
const uzun &lparam,
const double &dparam,
const string &sparam)
{
string nameEv = "EXTR_UP";
if (sparam == isimEv)
{
Print("OnChartEvent() Üzerinde: k = ", k);
k++;
}
}
//------------------------------------------------ --------------------------------------------------
Sonuç olarak şunları elde ederiz:
"OnCalculate()'de: k = 0" - her zaman.
"OnChartEvent() On: k = 0,...,123332" - 0'dan ...'a kadar sayar
Bu nasıl olabilir ve neden?!? Bu bir şekilde düzeltilebilir mi? Birisi anlarsa, cevap için çok minnettar olurum.
Not: Bu tür adaletsizlik yalnızca strateji test cihazında gerçekleşir, gerçek zamanlı olarak her şey düzgün çalışır.
İyi akşamlar. Bir zamanlar hizmet masası buna oldukça kesin bir cevap verdi: terminal ve strateji test cihazı iki farklı programdır ve test cihazındaki ve terminaldeki danışmanların / göstergelerin çalışmaları önemli ölçüde farklılık gösterebilir. Genellikle terminalde çalışan test cihazında çalışmaz. Servis masasına yazın, kanıt sağlayın ve düzeltmelerine izin verin.