Hatalar, hatalar, sorular - sayfa 148

 
EQU :

Ve yine - kod .. kod .. Kod iyidir .. ama aynı zamanda - taktikler, döngüler .. ;)

Peki, grafik yeni bir çubuğun oluşturulması hakkında bir mesaj almıyor mu? hayata inanmıyorum..

Bundan bir olay çıkarmak sorunlu mu? ve en azından önceden belirlenmiş bir değişken?

Ve genel olarak - olayları işlemek, kod dağlarını sarmaktan daha kolaydır .. Ve ayrıca - hatalarla (HATASIZ PROGRAMLAR - GERÇEKLEŞMEYİN!!!)))))

Yeni bir çubuğun bir olay olduğu ve burada olabileceği (ve programlanması gerektiği) konusunda kesinlikle size katılıyorum. uzun yıllar kafa patlatmak...

ZY Sanırım okuduktan sonra, yeni çubuğun TÜMÜNDE görünmeyebileceği sizin için netleşecek ... bir delik ...

Обсуждение статьи "Алгоритм генерации тиков в тестере стратегий терминала MetaTrader 5"
Обсуждение статьи "Алгоритм генерации тиков в тестере стратегий терминала MetaTrader 5"
  • www.mql5.com
Обсуждение статьи "Алгоритм генерации тиков в тестере стратегий терминала MetaTrader 5".
 
EQU :

Ve yine - kod .. kod .. Kod iyidir .. ama aynı zamanda - taktikler, döngüler .. ;)

Peki, grafik yeni bir çubuğun oluşturulması hakkında bir mesaj almıyor mu? hayata inanmıyorum..

Bundan bir olay çıkarmak sorunlu mu? ve en azından önceden belirlenmiş bir değişken?

Ve genel olarak - olayları işlemek, kod dağlarını sarmaktan daha kolaydır .. Ve ayrıca - hatalarla (HATASIZ PROGRAMLAR - YAPMAYIN!!!)))))

Genel olarak, nasıl hayal ediyorsunuz? 20 zaman dilimi x 'Piyasa Gözleminde' sembol sayısı ve her biri için bir OnNewBar olayı oluşturuluyor mu? Ve her birini işlemeniz, hangi sembole ve zaman dilimine ait olduğunu belirlemeniz mi gerekiyor? Şimdi bir seçeneğiniz var: kendi NewBar fonksiyonunuzu yazın ve ne tür yeni çubuklar almak istediğinizi tanımlayın: bir sembol için tüm periyotlar, mevcut periyot için tüm semboller veya bazı özel durumlar. Belirli bir basit işlev ortaya çıkıyor. Bu, birçok kontrol içeren genel OnNewBar işlevinden daha iyidir.
 

Test ederken hata veriyor

CTrade::PositionClose::OrderCheck: Geçersiz durdurma isteği
Danışmanın böyle hatları var

değişkenlerin beyanı (prosedürde)

CTrade m_trade;

.................

pozisyonu kapat

m_trade.PositionClose(_Symbol, eSlippage);

neden burada bir hata var? CTrade::PositionClose::OrderCheck: Geçersiz durdurma isteği

yanlış SL ve/veya TP
TRADE_RETCODE_INVALID_STOPS

bir pozisyonu kapatırken ne durur? yoksa bir şey anlamadım?

Документация по MQL5: Основы языка / Переменные
Документация по MQL5: Основы языка / Переменные
  • www.mql5.com
Основы языка / Переменные - Документация по MQL5
 
Prival :

Yeni bir çubuğun bir olay olduğu ve burada olabileceği (ve programlanması gerektiği) konusunda kesinlikle size katılıyorum. uzun yıllar kafa patlatmak...

ZY Sanırım okuduktan sonra, yeni çubuğun TÜMÜNDE görünmeyebileceği sizin için netleşecek ... bir delik ...

Bağlantıya bakmaya cesaret ettim .. Belki de bu gerçekten okunmalı .. boş zamanınızda ..;)

Z.Y.'de Böyle bir etkinliğin olmasını istememizin sebebi bu.. Bar yok - etkinlik yok

 
Valmars :
Genel olarak, nasıl hayal ediyorsunuz? 20 zaman dilimi x 'Piyasa Gözleminde' sembol sayısı ve her biri için bir OnNewBar olayı oluşturuluyor mu? Ve her birini işlemeniz, hangi sembole ve zaman dilimine ait olduğunu belirlemeniz mi gerekiyor? Şimdi bir seçeneğiniz var: kendi NewBar fonksiyonunuzu yazın ve ne tür yeni çubuklar almak istediğinizi tanımlayın: bir sembol için tüm periyotlar, mevcut periyot için tüm semboller veya bazı özel durumlar. Belirli bir basit işlev ortaya çıkıyor. Bu, birçok kontrol içeren genel OnNewBar işlevinden daha iyidir.

20 zaman dilimi.. ulong parametresi için - bu sınır değil.. dakikada bir tüm bir değişkeni doldurmak için - doğru, zor değil..

Ve ne, OnTik "'Market Watch'taki x adet sembole bakar ve her biri için bir olay oluşturulur.."?????

Ve parça parça kontrol edin - inan bana, oldukça hızlı bir şey ..

Ve bir olay olsa bile

- kimse beni işlemeye zorlayamaz - gereksiz yere ..

- hiçbir şey _ek olarak veya "kendi NewBar işlevinizi yazın ve tam olarak hangi çubukları yeni çubuklar almak istediğinizi tanımlayın" yerine _ engelleyemez - gerekirse..

 
Interesting :

Evet ve şimdi her şeyi yapmak elbette BECERİCİ olmadıkça kolayca yapılabilir. Geliştiriciler OnTrade()'i yeniden yazmaya ve gerekli parametreleri oraya eklemeye söz verdiler. eğer yaparlarsa, işlenmesi daha da kolay olacaktır.

Hiç kimse bu tür durumları OnTick() veya OnTime()'da - alım satım işleminin yapıldığı yerde - yerinde işlemekle uğraşmaz; veya OnTrade()'de, doğrudan koddan kontrol edilmeyen kullanıcı eylemlerini veya alım satım işlemlerini yakalamak gerekiyorsa.

Hafiflik göreceli bir kavramdır ve biri için gram cinsinden, diğeri için ton cinsinden ölçülür. Bunu Expert Advisor'da BECERİCİ yapmak zorunda kaldım (eğer koduma böyle denilebilirse), çünkü SIMPLY ile seçenekler şu anda dilde mevcut değil, ama çok iyi var olabilirler, IMHO. Ve kodun mecazi olarak yüz satır daha uzun olması ve daha karmaşık görünmeye başlaması gerçeğinden pek keyif almadım.

Temel olarak, sorun şudur:

bir onay işareti geliyor, gösterge kapatmanız gerektiğini gösteriyor, ben kapatıyorum

bir sonraki onay işareti geliyor, gösterge kapatmam gerektiğini gösteriyor ve artık ne yapacağımı bilmiyorum - pozisyon kilitleniyor ve elbette şu anda ona ne olduğunu öğrenebilirsiniz, ancak beşinci nokta.

Bu karmaşıklığın neden hala burada olduğunu anlamıyorum? OnTrade() olayında ne olduğunu anlamak için neden bir ton kod yazmamız istendiğini anlamıyorum?

Ben sadelikten yanayım ve olmadığında üzücü oluyor

 
Vladix :

Hafiflik göreceli bir kavramdır ve biri için gram, diğeri ton cinsinden ölçülür. Bunu Expert Advisor'da BECERİCİ yapmak zorunda kaldım (eğer koduma böyle denilebilirse), çünkü SIMPLY ile seçenekler şu anda dilde mevcut değil, ama çok iyi var olabilirler, IMHO. Ve kodun mecazi olarak yüz satır daha uzun olması ve daha karmaşık görünmeye başlaması gerçeğinden pek keyif almadım.

Temel olarak, sorun şudur:

bir onay işareti geliyor, gösterge kapatmanız gerektiğini gösteriyor, ben kapatıyorum

bir sonraki onay işareti geliyor, gösterge kapatmam gerektiğini gösteriyor ve artık ne yapacağımı bilmiyorum - pozisyon kilitleniyor ve elbette şu anda ona ne olduğunu öğrenebilirsiniz, ancak beşinci nokta.

Bu karmaşıklığın neden hala burada olduğunu anlamıyorum? Neden onTrade() olayında ne olduğunu anlamak için bir ton kod yazmamız istendiğini anlamıyorum?

Ben sadelikten yanayım ve olmadığında üzücü oluyor

Yüz satırdan daha az kodla yaptım... :) çözüm güvenilir ve birden çok para birimi için hemen

 //+----------------------------------------------------------------------------+
// Функция контроля открытия ордера на текущем баре               MQL5         |
//-----------------------------------------------------------------------------+
bool ЕстьОрдернаТекущемБаре( ENUM_ORDER_TYPE тип)
  {
   ulong тикет;
   HistorySelect ( SeriesInfoInteger (СИМВОЛ, Period (), SERIES_LASTBAR_DATE ), TimeCurrent ());
   for ( int i= 0 ;i< HistoryDealsTotal ();i=i+ 1 )
     {
      тикет= HistoryDealGetTicket (i);
       if ( HistoryDealGetString (тикет, DEAL_SYMBOL )!=СИМВОЛ || HistoryDealGetInteger (тикет, DEAL_ENTRY )== DEAL_ENTRY_STATE ) // || HistoryDealGetInteger(тикет,DEAL_MAGIC)!=MAGIC
         continue ;
       if ( HistoryDealGetInteger (тикет, DEAL_TYPE )==тип || HistoryDealGetInteger (тикет, DEAL_TYPE )== DEAL_ENTRY_INOUT )
         return (true);
     }
   return (false);
  }
Danışmanın askıda kaldığı süre yerine, istediğiniz herhangi birini belirtebilirsiniz. Yani, siparişler bir dönem içinde en fazla bir kez verilecektir.

Peki, herhangi bir takas talebinden sonra, 30 saniye boyunca (örneğin) takas talebini yasaklayan bir gecikme yapmanız gerekir. Aksi takdirde, bir sonraki tikte sipariş geçmişte görünmeyebilir.
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса - Документация по MQL5
 
Valmars :
Genel olarak, nasıl hayal ediyorsunuz? 20 zaman dilimi x 'Piyasa Gözlemindeki' sembol sayısı ve her biri için bir OnNewBar olayı oluşturuluyor mu? Ve her birini işlemeniz, hangi sembole ve zaman dilimine ait olduğunu belirlemeniz mi gerekiyor? Şimdi bir seçeneğiniz var: kendi NewBar fonksiyonunuzu yazın ve ne tür yeni çubuklar almak istediğinizi tanımlayın: bir sembol için tüm periyotlar, mevcut periyot için tüm semboller veya bazı özel durumlar. Belirli bir basit işlev ortaya çıkıyor. Bu, birçok kontrol içeren genel OnNewBar işlevinden daha iyidir.

Standart çözüm hakkında konuşursak, her şey şöyle görünmelidir.

1. Açık bir grafiğe, periyoduna ve sembolüne bir olay eklenir. Yeni bir çubuk göründüğünde olay başlatılmalıdır (delikler yok sayılır).

2. Anladığım kadarıyla olay işleme, ayrı bir terminal iş parçacığında (veya iş parçacığında) gerçekleşmelidir.

not

Bunun gibi bir şey. Tabii bu pek çok özelliği hesaba katmadan kabaca bir tahmin...

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - Документация по MQL5
 

Vladix :

Temel olarak, sorun şudur:

bir onay işareti geliyor, gösterge kapatmanız gerektiğini gösteriyor, ben kapatıyorum

bir sonraki onay işareti geliyor, gösterge kapatmam gerektiğini gösteriyor ve artık ne yapacağımı bilmiyorum - pozisyon kilitleniyor ve elbette şu anda ona ne olduğunu öğrenebilirsiniz, ancak beşinci nokta.

Bu karmaşıklığın neden hala burada olduğunu anlamıyorum? OnTrade() olayında ne olduğunu anlamak için neden bir ton kod yazmamız istendiğini anlamıyorum?

Ben sadelikten yanayım ve olmadığında üzücü oluyor

Belki geliştiriciler OnTrade()'e parametreler ekler, en azından bunu düşündüler. Bildiğim kadarıyla bununla ilgili bazı açıklamalar bile vardı.
 
Dmitriy2 :

Yüz satırdan daha az kodla yaptım... :) çözüm güvenilir ve birden çok para birimi için hemen

Danışmanın askıda kaldığı süre yerine, istediğiniz herhangi birini belirtebilirsiniz. Yani, siparişler bir dönem içinde en fazla bir kez verilecektir.

Peki, herhangi bir takas talebinden sonra, 30 saniye boyunca (örneğin) takas talebini yasaklayan bir gecikme yapmanız gerekir. Aksi takdirde, bir sonraki tikte sipariş geçmişte görünmeyebilir.

Bir gecikme ayarlayın - evet, kabul ediyorum, kaç satır kod alacak? Ve çoklu para biriminden bahsediyorsak, her biri için gecikmeyi hesaba katmak gerekir, değil mi?

Bunu çözen kodu yazdım. Sadece ondan hoşlanmıyorum, tıpkı senin gibi, üzgünüm ve seninki. Ve mesele önyargı değil, mesele şu ki, başka seçenek yok, basit ve zarif.