Hatalar, hatalar, sorular - sayfa 1669

 

Bir MQ5 programı, yürütme tamamlandıktan sonra oluşturduğu tüm tanıtıcıların her zaman otomatik olarak bir IndicatorRelease yapar mı?

Veya göstergeyi bir komut dosyası aracılığıyla IndicatorCreate aracılığıyla çalıştırmak, ardından göstergeyle daha fazla çalışmak için tutamağını global değişkenler aracılığıyla iletmek mümkün müdür?

 

https://www.mql5.com/ru/docs/basis/preprosessor/compilation

Devamlı

Tip

Tanım

tester_indicator

sicim

" Gösterge_adı.ex5" biçimindeki özel göstergenin adı . Test için gerekli göstergeler, karşılık gelen parametre sabit bir dize olarak ayarlanmışsa, iCustom() işlev çağrısından otomatik olarak belirlenir. Diğer durumlar için ( IndicatorCreate() işlevinin kullanılması veya göstergenin adını belirten parametrede sabit olmayan bir dize kullanılması), bu özellik gereklidir

IndicatorCreate - neredeyse (giriş parametrelerinin sayısında sınır yok) ilke?

Документация по MQL5: Основы языка / Препроцессор / Свойства программ (#property)
Документация по MQL5: Основы языка / Препроцессор / Свойства программ (#property)
  • www.mql5.com
Основы языка / Препроцессор / Свойства программ (#property) - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
IndicatrorRelease, iCustom+ChartIndicatorAdd bağlamasından sonra çağrılırsa hatalı olarak true döndürür. Düzelt.
 
fxsaber :
Sayaç ne?
Dün 1687. sayfada tartışmıştık. :) Ama 1686.sayfadaki şu mesajdan okumak daha iyi: https://www.mql5.com/ru/forum/1111/page1686#comment_2790746 Bu arada, kişi sorunuzu yanıtladı. . Bu sadece desen olur. Göstergeyi arama talebi Terminale gider. Onlar. danışman veya komut dosyası göstergeyi doğrudan aramaz, terminal bir aracı görevi görür. Terminal, belirtilen parametrelerle böyle bir göstergenin mevcut olup olmadığını kontrol eder. Evet ise, göstergeyi zaten var olan bir göstergeye bir tanıtıcı (referans) olarak adlandıran programa döner. Ve uç derinliklerinde, sayaçta bu göstergeye başka bir çağrı olduğunu işaret ediyor. Onlar. bu göstergeye kaç tane tutamaç döndüğünü takip eder. Birisi bir IndicatorRelease yaptığında, aynı göstergeyi aynı parametrelerle çağıran diğerlerinin artık o göstergeye ihtiyacı olmadığı anlamına gelmez. Bu nedenle, Terminal sayacı bir azaltır, ancak göstergeyi başka biri kullandığı için aktif bırakır. Bu, sayaç sıfırlanana kadar devam eder. Ancak sıfırlandığında, Terminal bu göstergeyi kalıcı olarak ve geri alınamaz bir şekilde RAM'den siler.
IndicatorRelease içerecek, ancak göstergenin kendisine bir çağrı içermeyecek bir kod oluşturmaya çalışırsanız, o zaman basitçe derlemeyeceğinizi düşünüyorum, çünkü tanıtıcıyı IndicatorRelease'e geçirmeniz gerekir ve gösterge değilse programdan çağrılırsanız, tanıtıcıyı da tanımazsınız.
Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • incelemeler: 8
  • www.mql5.com
Форум трейдеров MQL5.community
 

BlackTomcat :
Вчера обсуждали, страница 1687. :) Но читать лучше вот с этого сообщения на 1686-й странице: https://www.mql5.com/ru/forum/1111/page1686#comment_2790746 Кстати, человек на Ваш же вопрос отвечал. Просто получается, что схема такая. Запрос на вызов индикатора попадает в Терминал. Т.е. советник или скрипт не вызывают индикатор напрямую, терминал выступает посредником. В терминале происходит проверка, существует ли уже такой индикатор с указанными параметрами. Если да, то он возвращает программе, вызвавшей индикатор, хэндл (ссылку) на уже существующий индикатор. А в своих терминальных недрах помечает в счётчике, что был ещё один вызов на данный индикатор. Т.е. он ведёт учёт, сколько хэндлов на данный индикатор вернул. Когда кто-то делает IndicatorRelease, это не значит, что остальным, кто вызвал этот же индикатор с такими же параметрами, этот индикатор больше не нужен. Поэтому Терминал уменьшает счётчик на единицу, но оставляет индикатор активным, потому-что им ещё кто-то пользуется.

Teşekkür ederim! Büyük tasarruf sağlar.

IndicatorRelease içerecek, ancak göstergenin kendisine bir çağrı içermeyecek bir kod oluşturmaya çalışırsanız, o zaman basitçe derlemeyeceğinizi düşünüyorum, çünkü tanıtıcıyı IndicatorRelease'e geçirmeniz gerekir ve gösterge değilse programdan çağrılırsanız, tanıtıcıyı da tanımazsınız.

Aktarabileceğim global değişkenler aracılığıyla idare edin. Bu nedenle, bunları kullanmak oldukça mümkündür.
 
fxsaber :


Aktarabileceğim global değişkenler aracılığıyla işleyebilirim. Bu nedenle, bunları kullanmak oldukça mümkündür.
Ve bunu aktarmıyorsun. :) Ya da en azından bu şekilde elde edilen tanıtıcı üzerinde IndicatorRelease() çağırmayın . Bunu yaparsanız, o zaman bir dil hatası değil, sizin hatanız olur, katılıyor musunuz?
 
Sergei Vladimirov :
Ve bunu aktarmıyorsun. :) Ya da en azından bu şekilde elde edilen tanıtıcı üzerinde IndicatorRelease() çağırmayın . Bunu yaparsanız, o zaman bir dil hatası değil, sizin hatanız olur, katılıyor musunuz?

Ve bir noktada tüm pozitif int aralığından geçecek ve her biri için IndicatorRelease'i deneyecek olan serbest Piyasa için kötü bir yer imi yazacağım.

Böyle bir komut dosyası, ChartIndicatorAdd olmadan iCustom tarafından kullanılan terminalin tüm Uzman Danışmanlarını ve göstergelerini kapsayacaktır.

 

Bu, yine, bir dil hatası değil, kasıtlı eylemleriniz olacaktır. Bunu neden yazdın?

Bu arada, bu konuşma, bir göstergeyi kullanmadan önce tutacağının nasıl kontrol edileceğine ilişkin sorunuzla başladı. Bu nedenle, tanıtıcı kontrol edilemez, ancak kapalı bir göstergenin tutamağını kullanmaya çalıştığınızda 4807 hatası alırsınız - bu nedenle, -1 döndürürse CopyBuffer()'a yapılan her çağrıdan sonra onu izleyin.

 
fxsaber :
Aktarabileceğim global değişkenler aracılığıyla idare edin. Bu nedenle, bunları kullanmak oldukça mümkündür.
Umm... Neyin global değişkenleri ? Terminal mi yoksa danışman mı? Terminal değişkenleriyle hiç çalışmadım, bu yüzden bu konuyu tartışmayacağım. Danışmanın global değişkenlerine gelince, buradaki ana yöntem budur. Göstergeler OnInit'te başlatılırsa ve IndicatorRelease OnDeinit'te gerçekleşirse, yalnızca global değişkenler (EA) tanıtıcılardan geçirilebilir.
 
A100 :
Çalışma Zamanı Hatası: 'geçersiz işaretçi erişimi' (*)
A::a burada neyi işaret ediyor?
Neden: