MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 1477

 
MakarFX :

Önemli değil, her onay işaretini kontrol eder

ve düşük hesaplama yanlış gider... iki bar geri al

Asgari hesabım, resminizde olduğu gibi yoldan çıktı. Ama sonra LoY1 değişkenini ekledim ve bu devrilmeyi durdurdu. Sonuç olarak tüm siparişler aynı şekilde (zamana, miktara ve fiyata göre) orijinal kodumda olduğu gibi (yani ihtiyacım olduğu gibi) açılır. Kodu başka bir yerde karıştırdım .... ama burayı da düzelttim .


 double LoU,LoY1,Pr;
int x;
void OnTick ()
{
if (Low[ 1 ]>Low[ 2 ] &&Time[ 2 ]>x &&Low[ 2 ]<LoY1)
{
LoU=Low[ 2 ];
LoY1=Low[ 2 ];
}
//**************************************************************
if (Bid-LoU>= 0.0030 &&Pr!=LoU)
{
OrderSend ( Symbol (),OP_SELL, 0.1 ,Bid, 3 , 0 , 0 , "300" , 0 );
Pr=LoU;
LoU=Bid;
LoY1=Bid;
x= TimeCurrent ();
}
}

Ayrıca, piyasaya açılmak yerine 30 puandan sonra LoU'dan bekleyen bir emir verebilirsiniz. Ve sonra her bir onay için Teklifi kontrol etmeye gerek kalmayacak. Ancak bekleyen bir emir durumunda, LoU her değiştiğinde , eski bekleyen emri silip yeni bir tane yerleştirmeniz veya mevcut bekleyen emrin parametrelerini silmeden değiştirmeniz gerekecektir. Ve tüm bunların, her Teklif onayında kontrol etmekten çok daha az sıklıkta yapılması gerekecektir .

Benim durumumla ilgili olarak hangi seçeneğin kodu yürütmek için en az zaman aldığını söyle?

1. Teklifin LoU'dan 30 pip uzakta olup olmadığını kontrol edin  

2. Her LoU değişikliğinde eski geciktiriciyi silin ve yenisini ayarlayın

3. LoU'daki her değişiklikle, mevcut mevduatın parametrelerini değiştirin

Yardım için teşekkürler.

 
ANDREY :

Asgari hesabım, resminizde olduğu gibi yoldan çıktı. Ama sonra LoY1 değişkenini ekledim ve bu devrilmeyi durdurdu.

iLowest ve iHighest standart işlevleri vardır.

 
ANDREY :

Asgari hesabım, resminizde olduğu gibi yoldan çıktı. Ama sonra LoY1 değişkenini ekledim ve bu devrilmeyi durdurdu. Sonuç olarak tüm siparişler aynı şekilde (zamana, miktara ve fiyata göre) orijinal kodumda olduğu gibi (yani ihtiyacım olduğu gibi) açılır. Kodu başka bir yerde karıştırdım .... ama burayı da düzelttim .


Ayrıca, piyasaya açılmak yerine 30 puandan sonra LoU'dan bekleyen bir emir verebilirsiniz. Ve sonra her bir onay için Teklifi kontrol etmeye gerek kalmayacak. Ancak bekleyen bir emir durumunda, LoU her değiştiğinde , eski bekleyen emri silip yeni bir tane yerleştirmeniz veya mevcut bekleyen emrin parametrelerini silmeden değiştirmeniz gerekecektir. Ve tüm bunların, her bir Teklif onayını kontrol etmekten çok daha az sıklıkta yapılması gerekecektir .

Benim durumumla ilgili olarak hangi seçeneğin kodu yürütmek için en az zaman aldığını söyle?

1. Teklifin LoU'dan 30 pip uzakta olup olmadığını kontrol edin  

2. Her LoU değişikliğinde eski geciktiriciyi silin ve yenisini ayarlayın

3. LoU'daki her değişiklikle, mevcut mevduatın parametrelerini değiştirin

Yardım için teşekkürler.

1) x bir int değil, bir tarih saatidir (gelecek için yararlıdır)

2) orijinal kodunuzda bekleyen sipariş yoktu

3) şimdi kodunuz her kene üzerinde daha fazla işlem yapıyor

PM'yi kontrol et

 
Taras Slobodyanik :

iLowest ve iHighest standart işlevleri vardır.

Uygun değil... zaman serisi öğelerinin sayısı sabit değil
 
MakarFX :
Uygun değil... zaman serisi öğelerinin sayısı sabit değil

uh... ama bu senin yüksek/düşük bulmanı engelliyor mu?

 
Taras Slobodyanik :

uh... ama bu senin yüksek/düşük bulmanı engelliyor mu?

iLowest ve iHighest işlevleri, belirli sayıda çubuk ( zaman serisi öğelerinin sayısı) arasında arama yapılması anlamına gelir.

bu durumda bu sayı bilinmiyor, her seferinde değişiyor

 
MakarFX :

1) x bir int değil, bir tarih saatidir (gelecek için yararlıdır)

2) orijinal kodunuzda bekleyen sipariş yoktu

3) şimdi kodunuz her kene üzerinde daha fazla işlem yapıyor

PM'yi kontrol et

Bu benim eski kodum

Bu, eskisiyle aynı zaman dilimi için yeni kodum

Tik başına işlem sayısı, bu sayı için harcanan zamandan çok daha az endişelendiriyor beni. Ve yeni kodda, harcanan zaman %25 daha az... yanılmıyorsam.

Yardım için teşekkürler.

 
Aleksei Stepanenko :
Burada bir incelik var. Önce boyutu ayarlıyoruz ve ardından sıfıra sıfırlayarak boyut değişmezken sabitlemeyi serbest bırakıyoruz. Başka yol yok.
Çok teşekkürler!
 
MakarFX :

Önemli değil, her onay işaretini kontrol eder

ve düşük hesaplama yanlış gider... iki bar geri al

Aşağıda, eklemeleriniz olmadan orijinal kodum var.

En son yükseltmelerinizle alt katta



Belki if(TimeSeconds(TimeCurrent())==0) sadece emirlerin açılmadığı, ancak bir sonraki minimumun arandığı bölümlerde kullanılmalıdır?

Yanılmıyorsam, fonksiyonunuz sayesinde kodum sadece her dakika mumunun başında çalışmaya başladı, bu yüzden emirleri doğru açmıyor.


Yardım için teşekkürler.

 
ANDREY :

Aşağıda, eklemeleriniz olmadan orijinal kodum var.

En son yükseltmelerinizle alt katta



Belki if(TimeSeconds(TimeCurrent())==0) sadece emirlerin açılmadığı, ancak bir sonraki minimumun arandığı bölümlerde kullanılmalıdır?

Yanılmıyorsam, fonksiyonunuz sayesinde kodum sadece her dakika mumunun başında çalışmaya başladı, bu yüzden emirleri doğru açmıyor.


Yardım için teşekkürler.

Evet