Hatalar, hatalar, sorular - sayfa 2634

 

Merhaba!

Bir toplu iş dosyasıyla birden çok MT4 çalıştırmak istiyorum.

Lütfen bana bunu nasıl yapacağımı ve kodumun neden çalışmadığını söyleyin:

SET MY_PATH=C:\ "Program Files (x86)"
%MY_PATH%\ 001 \terminal.exe
TIMEOUT /T 160
%MY_PATH%\ 002 \terminal.exe
TIMEOUT /T 160
%MY_PATH%\ 003 \terminal.exe
TIMEOUT /T 160
%MY_PATH%\ 004 \terminal.exe
TIMEOUT /T 160
%MY_PATH%\ 005 \terminal.exe
TIMEOUT /T 160
%MY_PATH%\ 006 \terminal.exe
TIMEOUT /T 160
%MY_PATH%\ 007 \terminal.exe
TIMEOUT /T 160
%MY_PATH%\ 008 \terminal.exe
TIMEOUT /T 160
%MY_PATH%\ 009 \terminal.exe
TIMEOUT /T 160
%MY_PATH%\ 010 \terminal.exe
TIMEOUT /T 160
%MY_PATH%\ 011 \terminal.exe
TIMEOUT /T 160
%MY_PATH%\ 012 \terminal.exe
TIMEOUT /T 160

En iyi ihtimalle, birkaç MT4 başlatılır, ardından donar.

Tabii ki, RAM sıkıntısı yok.

Ayrıca farklı bilgisayarlarda denedim.

 
Igor Zakharov :

hayır, çalışmıyor.

Bu arada sunucu saati Cumartesi günü durmuyor. burada bunun tersi geçerlidir: terminalde, sunucu zamanı yeni bir teklifin gelmesiyle güncellenir. örneğin, Market Watch'ta açık olan yalnızca bir sembolünüz var (yalnızca test cihazında değil, gerçekte de). ve beş saniye boyunca tık yok - tüm bu süre boyunca sunucu zamanlayıcısı hareket etmeyecek. Cumartesi için bu şekilde geçerlidir: sunucuda zaman geçiyor, ancak terminal bunu bilmiyor çünkü. kene yok. test eden kişi bu süreyi atlayacaktır.

Ben zaten kontrol ettim. Test cihazında TimeLocal, hafta sonları ve TimeTradeServer üzerinde çalışır . ve TimeCurrent doğal olarak mevcut değil. Kene yok, ancak sunucu süresi buna değer.

 int OnInit ()
{
   Print ( __FUNCTION__ , " TimeCurrent     " , TimeCurrent ());
   Print ( __FUNCTION__ , " TimeLocal       " , TimeLocal ());
   Print ( __FUNCTION__ , " TimeTradeServer " , TimeTradeServer ());

     EventSetTimer ( 3 * 3600 );
 return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
void OnTimer ()
{
   Print ( "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" );
   Print ( __FUNCTION__ , " TimeCurrent     " , TimeCurrent ());
   Print ( __FUNCTION__ , " TimeLocal       " , TimeLocal ());
   Print ( __FUNCTION__ , " TimeTradeServer " , TimeTradeServer ());
}
 
Igor Zakharov :

https://www.mql5.com/ru/forum/328008/page2#comment_14166682

Her zaman olduğu gibi bisikletler.

Burada soru, böyle bir rekorun neden geçmediğidir.
Sonuçta, parametrelerden gelen değişkenlerin başlangıç değerleri vardır.

 void MxResize( int row= 1 , int col= 1 )
{
   int A[row][col];    
      
}

Ve ölçümlerin boyutu sayılarla belirtilirse

 void MxSize( int row= 1 , int col= 1 )
{
   int A[ 1 ][ 1 ];    
      
}

Derleyicinin atlaması, sorun nedir?

Geliştirici nasıl yorum yapacak?

 
Andrey Khatimlianskii :

Ne amaçla? Hafta sonu otomatik optimizasyon çalıştırılsın mı? Ardından, OnTik'ten birkaç dakikalık bir zamanlayıcı ayarlamak uygundur. Çalışırsa, keneler durmuştur ve optimize edebilirsiniz.

Başka amaçlar için ise, bunları belirtin.

Hayır, başka amaçlar için değil.

TimeLocal'ın hafta sonları çalıştığını düşünmedim ve şunu yaptım: TimeCurrent'a birkaç saat ekledim ve haftanın gününü kontrol ettim. Cumartesiyse, optimizasyona başlayın.

Bununla, elbette, pazar Cuma günü veya tatil günlerinde farklı şekillerde kapandığından, Cumartesi gününün başlangıcını doğru bir şekilde belirlemek imkansızdır.

Ayrıca, piyasanın kapalı olup olmadığını belirlemek için hiçbir yerde bir araç bulamadım.

 
Petros Shatakhtsyan :

Hayır, başka amaçlar için değil.

TimeLocal'ın hafta sonları çalıştığını düşünmedim ve şunu yaptım: TimeCurrent'a birkaç saat ekledim ve haftanın gününü kontrol ettim. Cumartesiyse, optimizasyona başlayın.

Bununla, elbette, pazar Cuma günü veya tatil günlerinde farklı şekillerde kapandığından, Cumartesi gününün başlangıcını doğru bir şekilde belirlemek imkansızdır.

Ayrıca, piyasanın kapalı olup olmadığını belirlemek için hiçbir yerde bir araç bulamadım.

Sınanmış?

SembolBilgiOturumuTicaret

veya

SymbolInfoInteger( SYMBOL_TRADE_MODE )

Hatırladığım bazıları iyi olmalı

 
Aleksey Mavrin :

Sınanmış?

SembolBilgiOturumuTicaret

veya

SymbolInfoInteger( SYMBOL_TRADE_MODE )

Hatırladığım bazıları iyi olmalı

Hayır, yapmadım. Kılavuz, piyasanın açık olup olmadığının nasıl belirleneceğini özel olarak söylemiyor.

Gerçek şu ki, örneğin pazar Pazartesi günü "açıldığında", örneğin bir komisyoncu için teklifler 02:05'te gelmeye başlar, ancak işlemler birkaç dakika daha kabul edilmez, "Piyasa kapalı" olarak görüntülenir.

Bunun yardımcı olup olmayacağını bilmiyorum.

SYMBOL_START_TIME

Enstrümanda alım satımın başlangıç tarihi (genellikle vadeli işlemler için kullanılır)

 
Petros Shatakhtsyan :

Hayır, yapmadım. Kılavuz, piyasanın açık olup olmadığının nasıl belirleneceğini özel olarak söylemiyor.

Gerçek şu ki, örneğin pazar Pazartesi günü "açıldığında", örneğin bir komisyoncu için teklifler 02:05'te gelmeye başlar, ancak işlemler birkaç dakika daha kabul edilmez, "Piyasa kapalı" olarak görüntülenir.

Bunun yardımcı olup olmayacağını bilmiyorum.

SYMBOL_START_TIME

Enstrümanda alım satımın başlangıç tarihi (genellikle vadeli işlemler için kullanılır)

hayır, bu değil, SymbolInfoSessionTrade ayrıca alım satım zamanını ve SymbolInfoSessionQuote'u teklifler geldiğinde gösterir. tatillerde sadece kontrol etmek gerekir, kontrol etmedi.

ap: bu yardımcı olur

bool Ticarete İzin Verilir (
const dize sembolü         // sembol
   tarih saat    test edilmiş_zaman    // zaman
);

Документация по MQL5: Получение рыночной информации / SymbolInfoSessionQuote
Документация по MQL5: Получение рыночной информации / SymbolInfoSessionQuote
  • www.mql5.com
Получение рыночной информации / SymbolInfoSessionQuote - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Roman :

Her zaman olduğu gibi bisikletler.

Burada soru, böyle bir rekorun neden geçmediğidir.
Sonuçta, parametrelerden gelen değişkenlerin başlangıç değerleri vardır.

Ve ölçümlerin boyutu sayılarla belirtilirse

Derleyicinin atlaması, sorun nedir?

Geliştirici nasıl yorum yapacak?

Roman, ikinci kez belgeleri okumak için temel isteksizliğe başlıyorsunuz.

Bir dizi dizini yalnızca bir tamsayı olabilir . Dört boyutlu dizilerden fazlasına izin verilmez. Dizi elemanlarının numaralandırılması 0'dan başlar. Tek boyutlu bir dizinin son elemanı dizinin boyutundan 1 daha küçük bir sayıya sahiptir, yani 50 tam sayıdan oluşan bir dizinin son elemanına erişim [49] gibi görünecektir. . Aynısı çok boyutlu diziler için de geçerlidir - bir boyut 0'dan boyut-1'e indekslenir. Örnekteki iki boyutlu dizinin son elemanı m[6][49] gibi görünecektir.

Statik diziler zaman serisi olarak temsil edilemez, yani dizinin sonundan başlangıcına kadar dizi öğelerine erişim sağlayan ArraySetAsSeries() işlevi onlara uygulanamaz. Zaman serilerinde olduğu gibi bir diziye erişim sağlamak istiyorsanız, dinamik bir dizi nesnesi kullanın.

Dizinin ötesine erişirken, yürütme alt sistemi kritik bir hata üretecek ve program yürütmesi durdurulacaktır.

Ve mql4 belgelerinde, eğer hafızam beni tamamen değiştirmediyse, bir dizinin boyutu olarak değişkenlerin kullanılmasının kabul edilemez olduğu açıkça belirtilmiştir.

Документация по MQL5: Основы языка / Переменные
Документация по MQL5: Основы языка / Переменные
  • www.mql5.com
Переменные должны быть объявлены перед их использованием. Для идентификации переменных используются уникальные имена. Описания переменных используются для их определения и объявления типов. Описание не является оператором. Индексом массива может быть только целое число. Допускаются не более чем четырехмерные массивы. Нумерация элементов...
 
Roman :

Her zaman olduğu gibi bisikletler.

Burada soru, böyle bir rekorun neden geçmediğidir.
Sonuçta, parametrelerden gelen değişkenlerin başlangıç değerleri vardır.

Ve ölçümlerin boyutu sayılarla belirtilirse

Derleyicinin atlaması, sorun nedir?

Geliştirici nasıl yorum yapacak?

Ben bir geliştirici değilim, ama yorum yapacağım.

Statik bir dizi için, derleyici zaten derleme sırasında bellekte belirli sayıda bayt tahsis etmelidir.

Derleme zamanında satır ve sütun bilinmiyorsa, derleyici ne kadar bellek ayırmalıdır?

İlk değerler, yalnızca çağrıldığında parametreler atlanırsa kullanılır. Gerçek parametreler yalnızca çalışma zamanında bilinir.

Yani, şaka yok, dili öğrenin.

 
Aleksey Mavrin :

hayır, bu değil, SymbolInfoSessionTrade ayrıca alım satım zamanını ve SymbolInfoSessionQuote'u teklifler geldiğinde gösterir. tatillerde sadece kontrol etmek gerekir, kontrol etmedi.

ap: bu yardımcı olur

bool Ticarete İzin Verilir (
const dize sembolü         // sembol
   tarih saat    test edilmiş_zaman    // zaman
);

Bence bu değil. Burada özel bir konu var: https://www.mql5.com/en/forum/40295

Özellikle MQL4 için olduğu için sonuna kadar bakmadım.

Piyasa kapalıysa sunucunun sembol teklifleri göndermemesi gerektiğini düşünüyorum .

Bu, robotumu gerçekten etkilemiyor, çünkü piyasanın "açılmasından" sonra, keneler geldiğinde, trendi, geri dönüşlerini analiz ediyor ve bu biraz zaman alıyor. Bu süre zarfında piyasa açılır.

Ancak bu, şu anda bazı işlemleri manuel olarak yapmak istiyorsak müdahale ediyor. Ve yürütme piyasa ise, talep piyasa açılana kadar askıda kalır ve doğal olarak mevcut fiyattan yürütülür.

Açıkçası, sembolün adını alacak ve doğru/yanlış döndürecek doğrudan bir işlev eksikliği var (piyasa açık/kapalı).

Как правильно выяснить, что рынок закрыт? (mql4)
Как правильно выяснить, что рынок закрыт? (mql4)
  • 2015.01.31
  • www.mql5.com
Перевел советника в режим работы OnTimer() теперь когда рынок закрыт он этого не понимает и пытается торговать, в общем обращается к серверу и естественно получает ошибки и забивает логи журнала.