Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 645
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Zamandaki son sıranın listedeki son sıra olmadığını varsayarsak, ilk sırayı (No. 0) hesaba katmadığı için örneğiniz doğru değildir.
İlk olarak, zamana göre son siparişin bileti bulunur ve ardından modifikasyonlu bir döngü yapılır. Döngüde son siparişin daha önce bulunan bir bileti ile karşılaşıldığında atlanır.
Son siparişin biletini aramak için, tüm siparişlerin tüm geçmişini çalıştırmanız gerekmez - istediğiniz geçmişin boyutunu ayarlayabilirsiniz - bir gün, iki, üç, bir hafta ... "yerinde" daha kısa ve arama aralığından daha erken bir zamana sahip tüm siparişleri atlayın. Örneğin: arama geçmişinin boyutu 1 gün olarak ayarlanır - şu anki zamandan daha eski olan tüm siparişler - bir gün atlanır. Ancak döngüye hala ihtiyaç var. Listedeki yalnızca sonuncuyu alırsak, Satın Al olabilir ve Satmaya ihtiyacımız var. Ve sondan bir önceki kişidir. Bu nedenle, artık verilerini almayacağız.
İlk olarak, zamana göre son siparişin bileti bulunur ve ardından modifikasyonlu bir döngü yapılır. Döngüde son siparişin daha önce bulunan bir bileti ile karşılaşıldığında atlanır.
Son siparişin biletini aramak için, tüm siparişlerin tüm geçmişini çalıştırmanız gerekmez - istediğiniz geçmişin boyutunu ayarlayabilirsiniz - bir gün, iki, üç, bir hafta ... "yerinde" daha kısa ve arama aralığından daha erken bir zamana sahip tüm siparişleri atlayın. Örneğin: arama geçmişinin boyutu 1 gün olarak ayarlanır - şu anki zamandan daha eski olan tüm siparişler - bir gün atlanır. Ancak döngüye hala ihtiyaç var. Listedeki yalnızca sonuncuyu alırsak, Satın Al olabilir ve Satmaya ihtiyacımız var. Ve sondan bir önceki kişidir. Bu nedenle, artık verilerini almayacağız.
Artem, açıklamalar için teşekkürler elbette ama listedeki sırayı nasıl bulacağımı biliyorum. Ve cevabım size değil, örneğindeki Alexei'ye (özellikle, "> 0" koşulunun işe yaramayacağı gerçeği üzerine).
Mila.com'a doğru yazsan iyi olur (sadece kod ile). Tembelim :)
Zamandaki son sıranın listedeki son sıra olmadığını varsayarsak, ilk sırayı (No. 0) hesaba katmadığı için örneğiniz doğru değildir.
Peki, nasıl dikkate almıyor?
Alexey Viktorov :
Ekle. seçenek: Döngüden önce, _1 değişkenine bir bilet yazın, örneğin sıfır sipariş ve ardından
void OnStart ()
{
int i, t1, t2, modTicket , total = OrdersTotal ();
datetime d1, d2;
if ( OrderSelect ( 0 , SELECT_BY_POS ))
{
t1 = OrderTicket ();
d1 = OrderOpenTime ();
}
for (i = 1 ; i < total; i++)
{
if ( OrderSelect (i, SELECT_BY_POS ))
{
t2 = OrderTicket ();
d2 = OrderOpenTime ();
modOrder((d1 < d2) ? t1 : t2);
t1 = d1 < d2 ? t2 : t1;
d1 = d1 < d2 ? t2 : t1;
}
}
} /********************************************************************/
void modOrder( int ticket);
{
// здесь код модификации ордера.
} /********************************************************************/
Peki, nasıl dikkate almıyor?
void OnStart ()
{
int i, t1, t2, modTicket , total = OrdersTotal ();
datetime d1, d2;
if ( OrderSelect ( 0 , SELECT_BY_POS ))
{
t1 = OrderTicket ();
d1 = OrderOpenTime ();
}
for (i = 1 ; i < total; i++)
{
if ( OrderSelect (i, SELECT_BY_POS ))
{
t2 = OrderTicket ();
d2 = OrderOpenTime ();
modOrder((d1 < d2) ? t1 : t2);
t1 = d1 < d2 ? t2 : t1;
d1 = d1 < d2 ? t2 : t1;
}
}
} /********************************************************************/
void modOrder( int ticket);
{
// здесь код модификации ордера.
} /********************************************************************/
Başlangıç olarak alırsanız, işe yarayacaktır, ancak bunu sondan yapmak daha iyidir ... ancak siparişleri silmeden de normaldir.
Aslında, birkaç emri değiştirmek için, ne derse desin, bir döngü içinde sıralanmaları gerekir. Böylece, yalnızca siparişin açılış zamanını karşılaştırmak için ek mikrosaniye harcanacağı ortaya çıktı. En iyi seçenek bu olurdu.
Ve döngünün yönü ... ama hiç önemli değil, siparişlerin kapanması değil. Önceki versiyonda, ben kandırdım ve bir kapanış yazdım, bu yüzden döngü orada uygundu ...
Günün iyi zamanı!
Bir gösterge yazarken elimi deniyorum. Görünüşe göre almak istediğim şey - görsel olarak aldım, ancak göstergenin gerekli bilgileri, bilgileri, örneğin metin bilgilerini veya int türünde iletmesini istiyorum. Hangi satırların üzerine kurulu 10 arabelleğim olduğu göz önüne alındığında, bunu nasıl yapacağımı söyle? Teşekkür ederim!
Tünaydın ! Beni çok fazla zorlama, ama bu bölümü buldum ve birkaç soru sormaya karar verdim .. terminalimi kullanarak .. bir broker MT4 (1) 'den indirildi .. bir demo çalıştırdı ... bir süre sonra başka birine kaydolduktan sonra, ayrıca
terminali indirmeyi teklif etti. MT4'ten çok daha iyi yapıldı .. Soru, aynı terminalde farklı brokerlerin hesaplarını açmanın mümkün olup olmadığıdır? ve hepsini MT5'e aktarabilir miyim? ve göstergeler MT4'ten 5'e uygun mu?
Teşekkür ederim ...
Böyle aktif bir yardım, çok teşekkür ederim.
Zaten yeni bir problemle savaşıyorum)
Lütfen yeni bir ZigZag topunun görünümünün gerçeğini bulmama yardım edin.
Bir değişkende ilk tepenin fiyatını hatırlamaya çalıştım, sonra karşılaştırdım, fiyat değiştiyse bayrağı kaldır, yeni bir tepe var.{
newZZH1_PR=GetExtremumZZPrice( Symbol (),T_F_, 1 );
newZZH1= true ;
}
Ancak, fonksiyonun zaman içinde rastgele, sonra ilk üst fiyatın, sonra ikincisinin fiyatının geri döndüğü ortaya çıktı.
Yeni zirvenin oluşmadığı, ancak bayrağın kaldırıldığı ortaya çıktı.{
if (sy== "" || sy== "0" ) sy= Symbol ();
double zz;
int i, k= iBars (sy, tf), ke= 0 ;
for (i= 1 ; i<k; i++) {
zz= iCustom (sy, tf, "ZigZag" , ExtDepth,ExtDeviation,ExtBackstep, 0 , i);
if (zz!= 0 ) {
ke++;
if (ke>ne) return (zz);
}
}
Print ( "GetExtremumZZPrice(): Экстремум ЗигЗага номер " ,ne, " не найден" );
return ( 0 );
}
Böyle aktif yardım, çok teşekkür ederim.
Zaten yeni bir problemle savaşıyorum)
Lütfen yeni bir ZigZag topunun görünümünün gerçeğini bulmama yardım edin.
Bir değişkende ilk tepenin fiyatını hatırlamaya çalıştım, sonra karşılaştırdım, fiyat değiştiyse bayrağı kaldır, yeni bir tepe var.{
newZZH1_PR=GetExtremumZZPrice( Symbol (),T_F_, 1 );
newZZH1= true ;
}
Ancak, fonksiyonun zaman içinde rastgele, sonra ilk üst fiyatın, sonra ikincisinin fiyatının geri döndüğü ortaya çıktı.
Yeni zirvenin oluşmadığı, ancak bayrağın kaldırıldığı ortaya çıktı.{
if (sy== "" || sy== "0" ) sy= Symbol ();
double zz;
int i, k= iBars (sy, tf), ke= 0 ;
for (i= 1 ; i<k; i++) {
zz= iCustom (sy, tf, "ZigZag" , ExtDepth,ExtDeviation,ExtBackstep, 0 , i);
if (zz!= 0 ) {
ke++;
if (ke>ne) return (zz);
}
}
Print ( "GetExtremumZZPrice(): Экстремум ЗигЗага номер " ,ne, " не найден" );
return ( 0 );
}
Zigzag'ın aslında üç tamponu vardır - 0 yaygındır, 1 üst ekstremumdur, 2 alt kısımdır
Sıfır çubuğunda, tamponlardan birinde her zaman bir değer vardır - ya birincide (diz yukarı doğru yönlendirilirse) veya ikincisinde (aşağı doğruysa). Buna göre, mevcut mumdaki sıfır tamponunda her zaman bir değer vardır - ya ilk tampondan ya da ikinciden.
Kesin olarak üst sabit bir ekstremum bulmak için, ilk tamponun ilk boş olmayan değerini, çubuk 1'den başlayarak aramanız gerekir. Alt ekstremum için, ikinci tamponun ilk boş olmayan değerini bulmanız gerekir. , 1. çubuktan başlayarak.
Bunun yeni bir üst veya alt olduğunu anlamak için, en son bulunan üst / alt zamanını hatırlamanız ve o anda bulduklarınızla karşılaştırmanız gerekir.
Karışık oldu ama umarım anlarsın...