[Arşivle!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 2. - sayfa 155

 
todem :
eğilimi belirlemede?

bir süre boyunca bir trend değişikliğinde ... Bkz. https://www.mql5.com/ru/forum/131277/page148 ve https://www.mql5.com/ru/forum/131277/page149
 

Böyle bir biletle (silinmiş) herhangi bir sipariş olmadığında bile OrderSelect'in bana neden DOĞRU döndüğünü söyleyin?


   if ( OrderSelect (tickethigh1, SELECT_BY_TICKET, MODE_TRADES)==false)
 
100yan :

zamanla değişen bir trend içinde...


Lütfen söyleyin, Tp ve Slossa kurma işlevi burada çalışıyor

if (toplam > 0) OrtalamaFiyat = NormalizeDouble (OrtalamaFiyat / Sayı, Basamak);
if (YeniSipariş Verildi) {
for (cnt = OrdersTotal() - 1; cnt >= 0; cnt--) {
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
eğer (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) devam ediyorsa;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
if (OrderType() == OP_BUY) {
PriceTarget = OrtalamaFiyat + Kâr Al * Puan;
BuyTarget = FiyatTarget;
Stoper = OrtalamaFiyat - Stoploss * Puan;
bayrak = DOĞRU;
}
}
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
if (OrderType() == OP_SEL) {
PriceTarget = OrtalamaFiyat - Kâr Al * Puan;
SellTarget = FiyatTarget;
Stoper = OrtalamaFiyat + Stoploss * Puan;
bayrak = DOĞRU;

 
todem :
iyi derledim

Maalesef Gösterge çalışıyor - başlangıçta böyleydi, ancak hata .txt dosyasında - derlenmiyor.

Dosyalar:
 

ve init'ten gösterge arabelleği için hesaplamalar yapmak imkansız mı?

Başlangıçta sıfır ve başlangıçta sıfır dışındaki tüm çubukları yeniden hesaplamak istedim - bunlar dikkate alınmıyor..

 
Pyro :

Böyle bir biletle (silinmiş) herhangi bir sipariş olmadığında bile OrderSelect'in bana neden DOĞRU döndüğünü söyleyin?

Kullanım kılavuzunu iyi okudunuz mu?

Tekrar okuyalım:

-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ---------

bool OrderSelect ( int dizini, int seçimi, int havuzu=MODE_TRADES)
İşlev, onunla daha fazla çalışmak için bir sipariş seçer. İşlev başarıyla tamamlandığında TRUE döndürür. İşlev başarısız olduğunda YANLIŞ döndürür. Bir hata hakkında bilgi almak için GetLastError() işlevini çağırmanız gerekir.
Sipariş, bilet numarasına göre seçilirse havuz parametresi yok sayılır. Bilet numarası benzersiz bir sipariş tanımlayıcıdır. Bir siparişin hangi listeden seçildiğini belirlemek için kapanış saatini analiz etmek gerekir. Emir kapanış zamanı 0 ise emir açık veya beklemededir ve terminaldeki açık pozisyonlar listesinden alınır. Açık bir pozisyonu bekleyen bir emirden emir tipine göre ayırt edebilirsiniz. Emir kapanış zamanı 0'a eşit değilse, emir kapatılır veya beklemede silinir ve terminal geçmişinden seçilir. Ayrıca, kapatılmış bir emir ile silinmiş bekleyen bir emir arasında emir türüne göre ayrım yapabilirsiniz.
Seçenekler:
dizin - İkinci parametreye bağlı olarak sipariş pozisyonu veya sipariş numarası.
seçme - Seçim modu bayrağı. Aşağıdaki değerlerden biri olabilir:
SELECT_BY_POS - index parametresinde, listedeki pozisyonun seri numarası iletilir,
SELECT_BY_TICKET - bilet numarası indeks parametresinde iletilir.
havuz - Aralarından seçim yapabileceğiniz veri kaynağı. Select parametresi SELECT_BY_POS olduğunda kullanılır. Aşağıdaki değerlerden biri olabilir:
MODE_TRADES (varsayılan) - emir, açık ve bekleyen emirler arasından seçilir,
MODE_HISTORY - sipariş, kapatılan ve silinen siparişlerden seçilir.


-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ---------

Bu:

Sipariş, bilet numarasına göre seçilirse havuz parametresi yok sayılır. Bilet numarası benzersiz bir sipariş tanımlayıcıdır. Bir siparişin hangi listeden seçildiğini belirlemek için kapanış saatini analiz etmek gerekir . Emir kapanış zamanı 0 ise emir açık veya beklemededir ve terminalin açık pozisyonlar listesinden alınır .

Ne yapıyorsun?

 if ( OrderSelect (tickethigh1, SELECT_BY_TICKET, MODE_TRADES )==false)

Bilet tarafından seçildiğinde yok sayılan havuz parametresini kırmızı ile vurguladım ve terminalin pozisyonlarının herhangi bir listesinden (açık veya kapalı) bir sipariş seçiliyor. Bu yüzden size gerçeği döndürür. Ne de olsa böyle bir bilet var ve sipariş seçiliyor, ancak kapatılan siparişler listesinden...

Böyle gerekir:

   if ( OrderSelect (tickethigh1,SELECT_BY_TICKET))
   if (OrderOpenTime()== 0 ) {
       // ... код при успешном выборе ордера по тикету в списке рыночных ордеров
   }

... veya:

 if ( OrderSelect (tickethigh1,SELECT_BY_TICKET))
   if (OrderOpenTime()> 0 ) {
       // ... код при успешном выборе ордера по тикету в списке закрытых ордеров
   }

... öyle veya:

   if ( OrderSelect (tickethigh1,SELECT_BY_TICKET)) {
       if (OrderOpenTime()> 0 ) {
         // ... код при успешном выборе ордера по тикету в списке закрытых ордеров
      }
       if (OrderOpenTime()== 0 ) {
         // ... код при успешном выборе ордера по тикету в списке рыночных ордеров
      }
   }

Sanırım anlatabildim... :)

 

artmedia70


Bu kadar ayrıntılı kapsamlı bir cevap için teşekkür ederiz. Gerçekten olabildiğince net :) THX!!!

 
Pyro :

artmedia70


Bu kadar ayrıntılı kapsamlı bir cevap için teşekkür ederiz. Gerçekten olabildiğince net :) THX!!!

:) Teşekkürler. Benim için zevkti.

Açık pozisyonları biletlerine göre seçmenin bazı "sinsilikleri" konusunda sizi uyarmak istiyorum. Gerçek şu ki, işlem gününün sonunda, pozisyonu bir sonraki güne aktarırken DC, emri yeniden açar. Onlar. mevcut pozisyon kapatılır ve aynı hacimde ancak takas dikkate alınarak yeni bir biletle başka bir pozisyon açılır. Bu nedenle, danışmanınız yeni biletlerini hatırlayarak siparişlerin yeniden açılmasını izlemelidir, aksi takdirde her şey "yüzer" - eski biletle verilen sipariş, kapatılan siparişler listesinde olacak ve taşınan mevcut bir pozisyonu seçemeyeceksiniz. eski bileti kullanarak yeni bir işlem günü. Kısmen kapalı pozisyonları da aynı kader bekliyor - onlara yeni bir bilet de veriliyor.

Bu nedenle, danışmanın tüm siparişlerini sıkı bir şekilde kaydedin ve zaman içindeki bu tür "sinsi" değişiklikleri takip edin.

 
artmedia70 :


Açık pozisyonları biletlerine göre seçmenin bazı "sinsilikleri" konusunda sizi uyarmak istiyorum. Gerçek şu ki, işlem gününün sonunda, pozisyonu bir sonraki güne aktarırken DC, emri yeniden açar.

bu, bazı DC'lerde yapılır, ancak büyük çoğunluğu bu tür çöplerden muzdarip değildir.
 
sergeev :
bu, bazı DC'lerde yapılır, ancak büyük çoğunluğu bu tür çöplerden muzdarip değildir.

DC'nin bu tür davranışlarını hesaba katmak bir "iyi biçim" kuralı değil midir? Sonuçta ... evet, önemli değil ... Sadece her şeyi hesaba katmaya çalışıyorum, şey ... ya da ne bildiğimi.

Forewarned, önceden silahlanmış demektir, değil mi? ;)