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

 
ilunga :
Çünkü bunlar zaten ikinci kene üzerinde bir bilet yerine çöp depolayan yerel değişkenler.

Çok teşekkürler! Dürüst olmak gerekirse, her zaman düşündüm!
 
Roman. :


Fragmana bakın. İçeriğini terminalin Uzmanlar klasörüne yerleştirin. İlgilendiğiniz işlem gören enstrümanın zaman dilimini seçin, grafiğine bir baykuş bırakın,

aynı zamanda, uzmanın harici değişkenlerinde bir sipariş açma parametrelerini ayarlayın:

Ardından, enstrümanın seçtiğiniz zaman diliminde yeni bir çubuk oluşmasını bekleyin...

Bir uzman piyasadan bir sipariş açtığında, onun açılış saatiyle yeni bir barın açılış saatini karşılaştırırsınız.

Roman, söz verdiğim gibi, "açılışta açılış" danışmanıyla çalışırken gerçekte ne olduğunu anlatıyorum. İlk olarak, danışman 1 saatlik grafiğe yerleştirildikten sonra bir sonraki tik üzerinde hemen çalışır ve bir sonraki mumun açılışında ikinci ticareti açar. Neden, hala çözemedim. İkincisi , bir anlaşma açmanın fiyatı, yeni bir mum açmanın fiyatıyla hala örtüşmüyor:

2012.02.24.12:00,1.3392.1.3405,1.3383.1.3387.768 - mum 1.3392'de açılır ve sipariş 1.3390'da tetiklenir. Ayarlarda 1 puanlık bir kayma belirtiyorum. 0 puan belirtirseniz, danışman hiç çalışmaz, doğru anladım mı?

Günlüğü ekledim. Benim için, açılış emrinin mumun açılış fiyatıyla çakışması hala önemli.

 

Merhaba beyler. Bir açıklama yaparsanız sevinirim.

Doğru anlıyor muyum, eğer kodda sırayla OrderDelete komutları yazıldı ve OrderSend ve eğer danışman, 1 numaralı onay işaretinde her iki komutu da (kaldır + yükle) yürütmek için bir sinyal alır, ardından :

- bu iki komut aynı 1 numaralı tik üzerinde yürütülemez ve yürütmeleri en az 3 tik ile uzatılır ve

- 1 numaralı tikte OrderDelete komutu verilir;

- bir OrderDelete gönderdikten sonra, sonuç yalnızca bir sonraki tik # 2 ile döndürülür ve yalnızca şimdi aynı tik # 2'de OrderSend komutu gönderilebilir;

- OrderSend komutunun sonucu sadece 3 numaralı kene ile bilinecektir.

Öyle mi?


Ve aynı tik üzerinde MT'ye iki komut gönderme imkanının olmadığı doğru mu?

MT4'te bir danışman yazıyorum.

Sayesinde.

 
Les :

Merhaba beyler. Bir açıklama yaparsanız sevinirim.

Doğru anlıyor muyum, eğer kodda sırayla OrderDelete komutları yazıldı ve OrderSend ve eğer danışman, 1 numaralı onay işaretinde her iki komutu da (kaldır + yükle) yürütmek için bir sinyal alır, ardından :

- bu iki komut aynı 1 numaralı tik üzerinde yürütülemez ve yürütmeleri en az 3 tik ile uzatılır ve

- 1 numaralı tikte OrderDelete komutu verilir;

- bir OrderDelete gönderdikten sonra, sonuç yalnızca bir sonraki tik # 2 ile döndürülür ve yalnızca şimdi aynı tik # 2'de OrderSend komutu gönderilebilir;

- OrderSend komutunun sonucu sadece 3 numaralı kene ile bilinecektir.

Öyle mi?


Ve aynı tik üzerinde MT'ye iki komut gönderme imkanının olmadığı doğru mu?

MT4'te bir danışman yazıyorum.

Sayesinde.

kene yeni bir alıntıdır. Ve OrderDelete ve OrderSend komutlarının yürütme süresi ile hiçbir bağlantısı yoktur.

Haber varsa, evet + kayma, o zaman basit bir OrderSend çalışırken, yaklaşık bir düzine onay alır. Ve piyasada bir gecelik daire varsa, o zaman iki takım da bir tık ile geçebilir.

 
Les :

Her şey tiklerin ne kadar hızlı gittiğine bağlı. Genel olarak, bir değer döndüren işlevler, OrderDelete, OrderSend, vb. eşzamansız olarak yürütülmez, yani. tüm işlem tamamlanana ve bir hata kodu verilene kadar (veya başarılı olursa NO_ERROR), sonraki ifade yürütülmez. Başka bir şey de, bu süre boyunca birkaç kene çalışabilir, ancak bunlar start() işlevi tarafından işlenmez.


Örneğin, bir sipariş için bir stop loss tetiklendiğinde ve diğerini aynı tik üzerinde bir EA ile açmaya/kapatmaya çalıştığınızda bir çarpışma da mümkündür. Daha sonra sunucu bazı durumlarda işlemin yapılmasına izin vermeyebilir.


Onlar. Sorularınızın cevabı hayır, değil.

 
ilunga :

kene yeni bir alıntıdır. Ve OrderDelete ve OrderSend komutlarının yürütme süresi ile hiçbir bağlantısı yoktur.

Haber varsa, evet + kayma, o zaman basit bir OrderSend çalışırken, yaklaşık bir düzine onay alır. Ve piyasada bir gecelik daire varsa, o zaman her iki takım da bir tık ile geçebilir.

MT, anladığım kadarıyla sunucudan tık tık bilgi çekiyor (ve sunucu sırayla komutlara yeni tikler göndererek yanıt veriyor, bu da zaman maliyetlerini optimize ediyor). Ve yeni kene gelmeden önce hiçbir şey bilinmiyor. onu kastetmiştim. Ama belki bu varsayımda yanılıyorum? Soru, bir düzine kene ile ilgili değil, kene yavaş olduğunda belirttiğiniz ikinci seçeneğe ilişkindir.

Sizi doğru mu anladım, öyle ki, 1 numaralı komuta yanıt almak, 2 numaralı komuta gidip onu tamamen işlemek için bir ön koşul değil mi?

Komut yanıtı, komutun "gerekli olmayan" bir parçası mı? Bir sonraki komuta geçmek için varlığı kritik değil mi?

Aşağıda alsu ile bir tartışmaya girdik ve sanırım ben de onunla aynı şeyi varsayıyordum: bir yanıt almanın kritik olduğunu. Bir tik üzerinde iki komutun işlenebileceğini yazıyorsunuz. Sunucudan gelen bilgilerin, alıntı akışıyla hiçbir bağlantısı olmadan geldiği ortaya çıktı?


Teşekkür ederim.

 
alsu :
Her şey tiklerin ne kadar hızlı gittiğine bağlı. Genel olarak, bir değer döndüren işlevler, OrderDelete, OrderSend, vb. eşzamansız olarak yürütülmez, yani. tüm işlem tamamlanana ve bir hata kodu verilene kadar (veya başarılı olursa NO_ERROR), sonraki ifade yürütülmez. Başka bir şey de, bu süre boyunca birkaç kene çalışabilir, ancak bunlar start() işlevi tarafından işlenmez.


Örneğin, bir sipariş için bir stop loss tetiklendiğinde ve diğerini aynı tik üzerinde bir EA ile açmaya/kapamaya çalıştığınızda bir çarpışma da mümkündür. Daha sonra sunucu bazı durumlarda işlemin yapılmasına izin vermeyebilir.


Onlar. Sorularınızın cevabı hayır, değil.

Kendi sözlerinle "öyle" olduğu ortaya çıkarsa, bu nasıl olmaz? )) Yoksa yine bir şey anlamadım? Bana yanıt olarak, işlevlerin, bir sonraki ifadenin yalnızca bir öncekinin hata kodu işlendikten sonra yürütüleceği şekilde yürütüldüğünü yazıyorsunuz. Bana öyle geliyor ki, şunu varsaydım: " iki komut aynı tik numarası 1 üzerinde yürütülemez", çünkü yanıt - aynı yanıt veya hata kodu - en erken yeni bir onay işaretiyle ortaya çıkıyor. Ya da değil? Veya komutlara verilen yanıtlar, alıntı akışıyla bağlantılı olmayan ayrı bir zaman akışında mı gidiyor? Belki de benim hatam, komutları çalıştırmanın sonuçlarının yeni bir alıntı ile döndürüldüğünü varsaymamdır?

Tabii ki, her şeyden önce, tiklerin yavaş olduğu durumu kastettim.

 
Söyleyin bana, lütfen, gösterge sinyalinin işlemi kapatmasına ve bir sonraki gösterge sinyallerinde kâra geçtiğinde kapatmasına rağmen danışmanın yalnızca olumlu işlemleri kapatmasını sağlamak mümkün müdür?
 
Les :

MT, anladığım kadarıyla sunucudan tık tık bilgi çekiyor (ve sunucu sırayla komutlara yeni tikler göndererek yanıt veriyor, bu da zaman maliyetlerini optimize ediyor). Ve yeni kene gelmeden önce hiçbir şey bilinmiyor. onu kastetmiştim. Ama belki bu varsayımda yanılıyorum? Soru, bir düzine kene ile ilgili değil, kene yavaş olduğunda belirttiğiniz ikinci seçeneğe ilişkindir.

Sizi doğru mu anladım, öyle ki, 1 numaralı komuta yanıt almak, 2 numaralı komuta gidip onu tamamen işlemek için bir ön koşul değil mi?

Komut yanıtı, komutun "gerekli olmayan" bir parçası mı? Bir sonraki komuta geçmek için varlığı kritik değil mi?

Aşağıda alsu ile bir tartışmaya girdik ve sanırım ben de onunla aynı şeyi varsayıyordum: bir yanıt almanın kritik olduğunu. Bir tik üzerinde iki komutun işlenebileceğini yazıyorsunuz. Sunucudan gelen bilgilerin, alıntı akışıyla hiçbir bağlantısı olmadan geldiği ortaya çıktı?


Teşekkür ederim.

Komut yanıtları ve işaretler ayrı ve ilgisizdir. Ölü bir daire varsa, o zaman tek bir tıklamayla birkaç siparişi açmak/kapatmak için "zamanınız" olabilir.
 

Merhaba. Programlamada kesinlikle iyi değilim. Bu nedenle, yardım istiyorum - StopLoss ve TrailingStop tarafından koda pozisyon kapatma eklememe yardım edin. Danışman benim değil, ancak strateji kötü değil, bu nedenle, deneme yanılma yoluyla danışmanı kendim için yeniden yapıyorum - ve dürüst olmak gerekirse, kuleyi havaya uçuruyor ve hatta yeterli zaman yok - iş. İlgilenenler için, danışmanı orijinal ambalajında tabiri caizse tam olarak gönderiyorum. Ve işte onunla ne yapıyorum:


 //+------------------------------------------------------------------+
//|                                             stohastic_system.mq4 |
//|                                                    Анатолий      |                                                                  |
//+------------------------------------------------------------------+

extern double Lots= 0.4 ;
extern int TakeProfit= 50 ;
extern int NWave= 2 ;
extern int K= 9 ;
extern int D= 3 ;
extern int slowing= 5 ;
extern int Average_method= 2 ;
extern int price_field= 0 ;

int K_level= 0 ;
int down= 0 ;
int up= 0 ;


int init()
  {

   return ( 0 );
  }

int deinit()
  {

   return ( 0 );
  }

int start()
  {
     int ticket= 0 ;
     double stoch_1= iStochastic ( NULL , 0 ,K,D,slowing,Average_method,price_field,MODE_MAIN, 1 );
     double stoch_2= iStochastic ( NULL , 0 ,K,D,slowing,Average_method,price_field,MODE_MAIN, 2 );
     double stoch_3= iStochastic ( NULL , 0 ,K,D,slowing,Average_method,price_field,MODE_MAIN, 3 );
     int Hour_curr= TimeHour ( TimeCurrent ());
    
     if ((stoch_1> 90 )&&(stoch_2> 70 )) K_level= 90 ;
     if ((stoch_1< 10 )&&(stoch_2< 30 )) K_level= 10 ;  
     if ( OrdersTotal ()< 1 )
      {        
         if ((Hour_curr>= 1 )&&(Hour_curr< 24 )) //проверка сигналов только в этот промежуток времени
          {
             if ((K_level== 10 )&&(stoch_1> 10 )) //сигнал на покупку
              {
                 RefreshRates ();
                 Print ( "Сигнал на покупку. stoch_1=" ,stoch_1, " stoch_2=" ,stoch_2);
                ticket= OrderSend ( Symbol (),OP_BUY,Lots,Ask, 10 , 0 ,Ask+TakeProfit* Point , "buy_order1" , 1 , 0 , Blue );
                
                K_level= 10 ; 
                down= 0 ;               
              }
             if ((K_level== 90 )&&(stoch_1< 90 )) //сигнал на продажу
              {
                 RefreshRates ();
                 Print ( "Сигнал на продажу. stoch_1=" ,stoch_1, " stoch_2=" ,stoch_2);
                ticket= OrderSend ( Symbol (),OP_SELL,Lots,Bid, 10 , 0 ,Ask-TakeProfit* Point , "sell_order1" , 1 , 0 , Red );
               
                K_level= 90 ;
                up= 0 ; 
              }
          }
      }
    
   
   
     return ( 0 );
  }
   
Dosyalar: