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

 

Arkadaşlar, OrderSend fonksiyon hatası için parametre 10 olarak geçersiz tamsayı ne anlama geliyor ve nasıl düzeltilir?

 
Pyxlik2009 :

Arkadaşlar, OrderSend fonksiyon hatası için parametre 10 olarak geçersiz tamsayı ne anlama geliyor ve nasıl düzeltilir?

Lütfen gerçekleştiği yerde kod satırını sağlayın.

 
Pyxlik2009 :

Arkadaşlar, OrderSend fonksiyon hatası için parametre 10 olarak geçersiz tamsayı ne anlama geliyor ve nasıl düzeltilir?


Son kullanma süresi d.b. bütün sayı.
 
Roll :

Son kullanma süresi e.b. bütün sayı.
Evet, ayarlarda kesirli bir şeyim bile yok
 
sergey_r :
evet, sadece barı kapatmak için bir emrim var ve buna şu anki fiyattan ihtiyacım var. cari fiyat bir öncekinin en düşük seviyesinin altına düşerse, o zaman ... Ve burada sadece fiyat bir öncekinin en düşük seviyesinin altında kapanırsa, o zaman bir emir verilir

böyle dene

 if (Bid< iLow ( NULL , 0 , 1 )


 
Pyxlik2009 :
Evet, ayarlarda kesirli bir şeyim bile yok

Belirtilen işlevin 10. parametresine bakın. 0'a ayarlayın.
 
paukas :
Böyle bir şey var - bir senaryo. İhtiyacınız olduğunda, onu başlatırsınız.


Evet, mesele eylemi 1 kez yapmak değil. Mesele şu ki, bu betiği çalıştırarak, tetiklenen geciktiricinin tetiklenme zamanını değil, ayarının zamanını okuyacaktır.

Buna göre, terminal aracılığıyla bekleyen tetiklemenin bu zamanı hiçbir yere kaydedilmez. Sadece bu sefer bilmem gerekiyor, eğer varsa yerleşik MQL4 işlevini PendingOrderFilledTime() kullanmak ideal olurdu. Bu durumda, MT4'ün kendisi bekleyen siparişleri izleyecek ve bitmiş sonucu verecektir.

Bu yüzden şimdilik, bir Uzman Danışman veya döngülü bir komut dosyası asmaktan başka bir şey görmüyorum. neden buraya sordun Belki birinin benzer bir sorunu vardı ve bir uzman veya komut dosyası olmadan, yalnızca mevcut MQ4 araçlarıyla zarif bir şekilde çözüldü.


LazarevDenis :

Danışmandan neden memnun olmadığınızı biraz anlamıyorum, çünkü kendi kendini optimize eden sinir ağlarında karmaşık bir ticaret sistemi yapmayacaksınız, sadece bekleyen her onayın varlığını ve ne zaman olduğunu kontrol etmeniz gerekiyor. ekran veya ses veya her ikisi birden bir metin mesajı alırsınız çalışır, hesap makinesi bu görevle başa çıkacak, bilgisayar için endişelenecek bir şey yok mu yoksa yazma ile ilgili sorunlarınız mı var?

Danışman yazarken sorun yok. Terminalin vermesi gereken bilgileri elde etmek için doğaçlama bir araç kullanmak istemiyorum. Uzman Danışman, bir soruna kafa kafaya bir çözümdür.

Standart MQ4 işlevi olmayan her görev bir danışman tarafından çözülürse, bu tür danışmanlar terminalde asılı kalırdı.. Ve bu iyi değil - zincirde ek zayıf halkalar oluşturmak. Çok sayıda açık terminaliniz olduğunda ve her biri için bir Uzman Danışmana ihtiyacınız olduğunda ve orada olup olmadığını kontrol etmenin uygunsuz ve aptalca olduğunu kabul edeceksiniz. Bir uzman ek kontrolü yazmak ve onu orada çalıştırmaya zorlamak aynı şeydir, belki de sadece belki de birileri mevcut MQL4 işlevlerinin bir kombinasyonunu kullanarak benzer bir sorunu çözmüşse neden bunu karmaşıklaştırıyor?

 
Starting :
... belki birileri mevcut MQL4 işlevlerini birleştirerek benzer bir sorunu çözmüştür.
Okudum ve mantığını anlamadım. Peki, diyelim ki ihtiyacınız olan bir fonksiyon var, nasıl kullanacaksınız? Yine de bir danışmana veya bir komut dosyasına eklemeniz gerekir.
Yani soru, özel bir işlevin yokluğunda değil (ve her hapşırık için kutsanmayacaksınız), ancak gereksinimlerinizi karşılayan kod yazmanın karmaşıklığında.
 
granit77 :
Okudum ve mantığını anlamadım. Peki, diyelim ki ihtiyacınız olan bir fonksiyon var, nasıl kullanacaksınız? Yine de onu bir danışmana veya bir komut dosyasına eklemeniz gerekiyor.
Yani soru, özel bir işlevin yokluğunda değil (ve her hapşırık için kutsanmayacaksınız), ancak gereksinimlerinizi karşılayan kod yazmanın karmaşıklığında.

Kullanımı basit - Senaryoyu çalıştırıyorum, kedi. en erken açılış saati ile son kapatılan işlem hakkında veri yazar. Tetiklenen geciktiriciler, kapalı emirlerin saflarına kafa karışıklığı getirir. Komut dosyası başlatıldığı anda, bekleyenlerin tetiklenmesiyle ilgili verileri alacak yeri yoktur. tarihte, serbest bırakıldıkları tarihe göre değil, ayarlandığı tarihe göre kaydedilirler.


Basit bir örnek.

1 Ocak 2011'de bekleyen bir sipariş 1 verildi.

2 Ocak 2011'de piyasa emri 2 açıldı.

01/03/2011 tarihinde, bekleyen emir 1 tetiklendi ve 01/03/2011 tarihinde bir piyasa emri olmasına rağmen, OrderOpenTime()'ın 01/01/2011 tarihinde yayınlayacağı piyasa emri 1 oldu.

01/04/2011 piyasa emri 2 kapandı.

01/05/2011 piyasa emri 1 kapandı.

Tarihte, piyasa emri 2'nin 02.01.2011 tarihi, en son açılış tarihi olan son kapanan emrin açılış tarihi olarak verilecektir.

Aslında, son kapatılan emrin en son açılış (çalışma) tarihi - 1 - 01/03/2011 bekleyen emri tetikledi.

Soru bu, hesabı izleyen bir uzman olmadan, kapatılan emirleri açıldıkları zamana kadar doğru bir şekilde sıralamak için emrin geçerli tarihini almak mümkün müdür?


Durumu hayal edin, ticaret yapıyorsunuz, uzun zaman önce ayarlanmış bekleyen emirleriniz var. Ve görüyorsunuz, bazıları çalışıyor, sonra bir süre sonra kapanıyorlar. Ama bir yıl önce sahnelenmiş olsalar bile "tüylü" üretim zamanına göre dikkate alınacaklar, ancak bugün çalıştılar ve kapandılar. Bu gereklidir - pazarda en son ne açıldıysa veya ne çalıştıysa, o zaman en son verilecek ve bir zamanlar kurulan her şey, son zamanlarda gerçekten açılan pazarlarla karıştırılmamalı. Soruma gösterdiğiniz ilgi için teşekkür ederim.

 

Beyler, bu zamana dayalı işlevi EA koduma eklediğimde nerede hata yaptığımı söylemeyin:

 int init()
  {
  
bool isTradeTimeInt ( int hb=05, int mb=50, int he=23, int me=00) 
    {
   datetime db, de;           // Время начала и окончания работы
   int       hc;               // Часы текущего времени торгового сервера

  db= StrToTime ( TimeToStr ( TimeCurrent (), TIME_MINUTES)+ " " +hb+ ":" +mb);
  de= StrToTime ( TimeToStr ( TimeCurrent (), TIME_MINUTES)+ " " +he+ ":" +me);
  hc= TimeHour ( TimeCurrent ());
   if (db>=de) {
     if (hc>=he) de+= 24 * 60 * 60 ; else db-= 24 * 60 * 60 ;
  

   if ( TimeCurrent ()>=db && TimeCurrent ()<=de) return (True);
   else return (False);
}
   return ( 0 );
  }

Derleyici bana hatalar verdi.