[ARŞİV!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 4. - sayfa 19

 
Herkese iyi günler. İşlemleri takip edecek bir robota ihtiyacımız var ve kapanırken, kapalı olanı kapatılanla aynı parametrelerle değiştirmek için bekleyen bir emir oluşturacak olan kar al. Böyle bir robotu uygulamak mümkün mü? Hiç robotlarla karşılaşmadım ve onlarla hiç çalışmadım. Bir yerde varsa, lütfen bir bağlantı sağlayın. Şimdiden teşekkürler.
 
Daha önce kâr kapanışı mevduat para birimindeydi ve aşağıdaki gibi kabul ediliyordu.
 double Lot = 0.1 ;
int KoffProfit = 10 ;
ProfitValue = Lot * KoffProfit * MarketInfo ( Symbol (), MODE_TICKVALUE); 
Bu formülü noktalara nasıl dönüştürebilirim?
 

Test cihazındaki baykuşun çalışmasını hızlandırmak için kodu nasıl optimize edeceğimi merak ediyorum. Lütfen bana döngünün ne kadar hızlı yürütüldüğünü söyle, şöyle:

 for ( int i = OrdersTotal () - 1 ; i >= 0 ; i--) {
   if (! OrderSelect (i, SELECT_BY_POS, MODE_TRADES))   continue ; 
   if ( OrderSymbol () != Symbol ())                     continue ;    
   if ( OrderMagicNumber () != Magic)                   continue ;
   
   // работаем с ордерами      
}

veya bunun gibi:

 for ( int i = OrdersTotal () - 1 ; i >= 0 ; i--) {
   if ( OrderSelect (i, SELECT_BY_POS)) {
       if ( OrderSymbol () == Symbol () && OrderMagicNumber () == Magic) {
       // работаем с ордерами
      }
   }
}

ve danışmanı hızlandırmak için başka ipuçları var mı?

 
TG : Daha önce kârla kapanış mevduat para birimindeydi ve öyle kabul ediliyordu.
Bu formülü noktalara nasıl dönüştürebilirim?
bu formülü yeniden yapmanın bir anlamı yok, gerekli sırayı (OrderSelect()) bulmak ve (OrderOpenPrice()-Bid)/Puan (veya OrderOpenPrice()-Ask) hesaplamak ve siparişin zaten kaç pips olduğunu bulmak daha kolay
TG : ve EA'yı hızlandırmak için başka ipuçları var mı?

mql4'te koşulların tam kontrolü vardır, yani. if() parantezlerindeki ifadenin tamamı sonuna kadar kontrol edilecektir, bu nedenle bazen karmaşık koşulları birkaç koşula ayırmanız önerilir:

if(a>b && c>d), if(a>b){ if (c>d)..... } ile değiştirilebilir

bu nedenle, sizin tarafınızdan önerilen kodun ilk sürümü biraz daha hızlı çalışacaktır, ancak uygulamadan - siparişlere göre sıralamak işlemciyi fazla yüklemez, matematiksel işlemler işlemciyi yoğun şekilde yükler, kod performansında bir artış aramak mantıklıdır - tüm hesaplamalar her keneyi gerçekleştirmek için mantıklı değil

 
IgorM :

mql4'te koşulların tam kontrolü vardır, yani. if() parantezlerindeki ifadenin tamamı sonuna kadar kontrol edilecektir, bu nedenle bazen karmaşık koşulları birkaç koşula ayırmanız önerilir:

if(a>b && c>d), if(a>b){ if (c>d)..... } ile değiştirilebilir

bu nedenle, sizin tarafınızdan önerilen kodun ilk sürümü biraz daha hızlı çalışacaktır, ancak uygulamadan - siparişlere göre sıralamak işlemciyi fazla yüklemez, matematiksel işlemler işlemciyi yoğun şekilde yükler, kod performansında bir artış aramak mantıklıdır - tüm hesaplamalar her keneyi gerçekleştirmek için mantıklı değil

anlaşılır bir şekilde. teşekkür etmek. ve örneğin siparişi kapattıktan sonra Yazdır deyin:

Rez = OrderClose ( OrderTicket (), OrderLots (), NormalizeDouble (Bid, Digits ), iSlippage, Blue );
if (Rez) Comment ( "Закрыт ордер # " , OrderTicket (), "  прибыль " , OrderProfit ());

veya koşullar altında aynı normalleştirme:

 if ( NormalizeDouble (dOrderOpenPriceBuyStop - StepTral * Point , Digits ) > NormalizeDouble (Ask + Step * Point , Digits ))

Uzman Danışmanları yürütme süreci yürütmeyi büyük ölçüde yavaşlatıyor mu?

 
TG : veya koşullar altında aynı normalleştirme:

Uzman Danışmanları yürütme süreci yürütmeyi büyük ölçüde yavaşlatıyor mu?

GetTickCount () ile kendiniz kontrol etmeye çalışın, bir komut dosyası oluşturun ve 10.000 kez normalize edin ve 2 kez 10.000 kez normalize edin, ardından normalleştirmenin sıklıkla yapıldığı kod bölümlerini aramanın sizin için ne kadar makul olduğuna karar verebilirsiniz. Print()'e gelince, cevap vermeyi bile zor buluyorum - gerçekten her tikte Prints yazdırıyor musunuz? Genellikle, para çekme işlemleri Uzman Danışmanın çalışmasını büyük ölçüde yavaşlatır, Comment() içeren komut dosyaları, geri çekilmeden 10 kat daha uzun süre yürütülür, ancak yine soru, uygunluktur - gerekirse, o zaman gereklidir.
 
TG :

anlaşılır bir şekilde. teşekkür etmek. ve örneğin siparişi kapattıktan sonra Yazdır deyin:

veya koşullar altında aynı normalleştirme:

Uzman Danışmanları yürütme süreci yürütmeyi büyük ölçüde yavaşlatıyor mu?

Print() işlemi bir dosya (bu durumda bir günlük dosyası) üzerinde yapılan bir işlemdir. Ve bu işlemler ÇOK yavaştır (bellekten veri işlemeye kıyasla). ÇIKIŞ: init() içinde başlatılan değişken yarat

 bool gb_VirtualTrade;
init()
{
    gb_VirtualTrade = ( IsOptimization () || ( IsTesting () && ! IsVisualMode ));
}

Ve bu değişkenin durumuna göre yazdırın (bu seçeneklerden BİRİDİR).

Seslendirilen görevlere (kodun optimizasyonu) dayalı olarak tarafınızdan verilen normalleştirme örneği mantıklı değil. DC sunucusunun teknik gereksinimlerine göre normalleştirme GEREKLİDİR, böylece SADECE fiyat ve STOP emirlerinin yürütülmesi kabul edilir.

 
Merhaba, soru şu ki, Uzman Danışman kendi kodunda çalışırken, bir pozisyon açmak için, bir emrin açıldığı veya finansal pencereye giden yolun sinyallerinde bir gösterge (koşul) kaydetmek gerekir. Expert Advisor'da belirtilmiştir. göstergelerin kurulu olduğu araç?
 

Sevgili spekülatörler, yardım edin! Bir pozisyon açarken otomatik olarak SL ve TP ayarlayan bir danışman arıyorum.

Şimdiden teşekkürler.

 
Tünaydın. Bilen varsa, yeni bir ışının göründüğü noktayı (örneğin, farklı bir renkte) işaretleyen ZIGZAG göstergesini nereden indirebileceğinizi söyleyin. Böyle bir şey varsa...