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

 
solnce600 :

Her şeyi doğru yapmış gibi görünüyor .... hala açılmıyor (test cihazında)

Ayrıca http://clip2net.com/s/5aLodh günlüğünde hata bilgisi yok

Anlayamıyorum - sorun nedir?

Fiyatı normalleştirmemiz gerekiyor.

 double Price= NormalizeDouble ( 0.9022 , Digits );
 
PapaYozh :

Fiyatı normalleştirmemiz gerekiyor.

Baba! Çok teşekkür ederim..... ve bir küçük soru daha....

Sadece eğer bir sipariş açmak istiyorum

1. N 30 mumun açılış fiyatı ile N 1 mumun maksimum açılış fiyatı arasındaki mesafe 150 p'den fazladır.


2. N 30 mumunun açılış zamanı - HERHANGİ BİR ZAMAN, HERHANGİ BİR TARİH'e eşittir, AMA DAKİKA DEĞERİ 15'E EŞİT OLMALIDIR ( yani 0:15;1:15;...23:15)

if ((Yüksek[1]-Açık[30])> 1500*Nokta) && (??????????????????)

// sipariş aç

İkinci koşulu Zaman [30] işlevini kullanarak yayınlamak istedim, ancak bu işlev yalnızca dakikaların değerini değil, aynı zamanda saat, gün, yıl değerini de döndürüyor ve yalnızca dakikaları döndürmem gerekiyor

ihtiyacım olan mum için. Minute() işlevi de bana uymuyor çünkü yalnızca bir sıfır mum için dakika değerini döndürüyor.

Lütfen bana bu anı kodlamanın en iyi yolunu söyle.



 
solnce600 :

Baba! Çok teşekkür ederim..... ve bir küçük soru daha....

Sadece eğer bir sipariş açmak istiyorum

1. N 30 mumun açılış fiyatı ile N 1 mumun maksimum açılış fiyatı arasındaki mesafe 150 p'den fazladır.


2. N 30 mumunun açılış zamanı - HERHANGİ BİR ZAMAN, HERHANGİ BİR TARİH'e eşittir, AMA DAKİKA DEĞERİ 15'E EŞİT OLMALIDIR ( yani 0:15; 1:15; .... 23:15)

if ((Yüksek[1]-Açık[30])> 1500*Nokta) && (??????????????????)

// sipariş aç

İkinci koşulu Zaman [30] işlevini kullanarak yayınlamak istedim, ancak bu işlev yalnızca dakikaların değerini değil, aynı zamanda saat, gün, yıl değerini de döndürüyor ve yalnızca dakikaları döndürmem gerekiyor

ihtiyacım olan mum için. Minute() işlevi de bana uymuyor çünkü yalnızca bir sıfır mum için dakika değerini döndürüyor.

Lütfen bana bu anı kodlamanın en iyi yolunu söyle.

https://docs.mql4.com/ru/dateandtime/TimeMinute

 
PapaYozh :

Fiyatı normalleştirmemiz gerekiyor.

Normalleştirildi Hala açılmıyor ...

Diğer kodlarda normalizasyon olmadan açılmasına rağmen ....

 int start()
 {
 double Price= NormalizeDouble ( 0.9022 , Digits ); 
 if   ((iTime( NULL , 0 , 0 ) )== D'14.08.2000 14 00' )
 if (Bid == Price)
if ( NormalizeDouble ( MathAbs (Bid - Price ), Digits ) <= 0.0005 )  
 int Ticket= OrderSend ( Symbol (),OP_SELL, 0.1 ,Bid, 1 ,Ask+ 1490 * Point ,Ask- 110 * Point , "jfh" , 123 );
}
return ( 0 );
 
Teşekkür ederim.
 
solnce600 :

Normalleştirildi Hala açılmıyor ...

Başka bir kodda olmasına rağmen normalleştirme olmadan açılıyor ....

Print() işlevini kullanın ve hangi koşulun başarısız olduğunu görün.
 
Hepinize iyi günler. Lütfen bu göstergeye bir göz atın. Hiç düzgün çalışmasını sağlamak mümkün mü.
Fiyat düştüğünde, kırmızı çizgiye ek olarak, zaten bir mavi çizgi vardır (kırmızı olanlar eklenir, eklere bakın). Sonra bir trend değişikliği ve sonra her şey doğru - sadece mavi.

şimdiden teşekkürler


/* Decompiler kaldırıldı */


 
solnce600 :

Baba! Çok teşekkür ederim..... ve bir küçük soru daha....

Sadece eğer bir sipariş açmak istiyorum

1. N 30 mumun açılış fiyatı ile N 1 mumun maksimum açılış fiyatı arasındaki mesafe 150 p'den fazladır.


2. N 30 mumunun açılış zamanı - HERHANGİ BİR ZAMAN, HERHANGİ BİR TARİH'e eşittir, AMA DAKİKA DEĞERİ 15'E EŞİT OLMALIDIR ( yani 0:15; 1:15; .... 23:15)

if ((Yüksek[1]-Açık[30])> 1500*Nokta) && (??????????????????)

// sipariş aç

İkinci koşulu Zaman [30] işlevini kullanarak yayınlamak istedim, ancak bu işlev yalnızca dakikaların değerini değil, aynı zamanda saat, gün, yıl değerini de döndürüyor ve yalnızca dakikaları döndürmem gerekiyor

ihtiyacım olan mum için. Minute() işlevi de bana uymuyor çünkü yalnızca bir sıfır mum için dakika değerini döndürüyor.

Lütfen bana bu anı kodlamanın en iyi yolunu söyle.

(HERHANGİ BİR mumun) başlangıcından itibaren zamanı düzeltmek (hesaplamalarda dikkate almak) için iBarShift (Symbol(), 1, Referans Noktası) kullanmak uygundur. Ve Başlangıç Noktası, takip ettiğimiz dönemin çubuğunun başlangıcıdır. Senin durumunda:

     if (iBarShift ( Symbol (), 1 , iOpen ( Symbol (), PERIOD_M30 , 0) ) == 15 ) //что-то делаем

Kodunuzun bir kısmına kısaca göz atarak, yazdıklarınızı hiç düşünmediğinizi söyleyebilirim. Ve bunun hakkında düşünmeye çalışın (alıntı):

 if ((Minute( ) == 45 )&&(Minute( ) < 50 ))

...

 
TarasBY :


Kodunuzun bir kısmına kısaca göz atarak, yazdıklarınızı hiç düşünmediğinizi söyleyebilirim. Ve bunun hakkında düşünmeye çalışın (alıntı):

...


Cevabınız için teşekkürler. Kodu yorumsuz gönderdiğim için özür dilerim.

Sana anlamsız gelen şeyde işe yarayan bir anlam var

if(Bid==Price) // eğer zaman mumun açılış saatine eşitse , yani. yeni mum oluştu

if((Dakika( ) ==45)&&(Dakika( ) <50)) // yeni bir mumun açıldığı andaki dakikanın değeri 45 ile 50 arasındaysa (gerçek şu ki, bazı mumlar 45 dakika tam 45 dakikada değil gecikmeli olarak açılıyor ve resmen 45 dakikada açılan mumları kaçırmamak için aslında daha sonra 1,2,3,4 dakika sonra &&(Minute( ) kullandım <50))

int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,1,Bid-1500*Point,Bid+150*Point,"jfh",123 );

}

dönüş;

Böylece sipariş, resmi olarak 45 dakikada açılan her 15 veya 5 veya 1 dakikalık mumun başında açılır.(+ en fazla 4 dakika, yani geç)
 
solnce600 :

Seni biraz getirmeye çalışıyorum. AMA çok ÖNEMLİ bir düşünce: "reçete etmek istediklerin" ve "yazdıkların" tamamen FARKLI şeyler!!! Durumda ise:

 if ((Minute( ) == 45 )&&(Minute( ) < 50 ))

Minute() == 46, o zaman GENEL koşul ÇALIŞMAZ!!! Belki bu yüzden:

 if ((Minute() >= 45 ) && (Minute() < 50 ))

??? :-[