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

 
Alexey Viktorov :

Bu yüzden hatırlamıyorum, kontrol etmek gerekiyor ama isteksizlik. Mql4'te, zaten var olan bir nesnenin adıyla bir nesne oluşturmaya çalışırken, basitçe bir hata döndürülürken, mql5'te artık bir hata değil, koordinatlar farklıysa parametrelerin değiştirilmesi mümkündür .

Artyom'un dediği gibi - bir nesnenin varlığını kontrol edin

Evet evet.

 
Maxim Kuznetsov :

aniden (ama her zamanki gibi) ObjectGetInteger(0,objectName,OBJPROP_TYPE) daha hızlıdır.

ObjectFind eşzamanlı bir komuttur, yani grafik nesnelerinin tam bir güncellemesini (ve kullanılabilirliğini) bekler.Kullanım önemli gecikmelerle doludur.

Kendi nesnelerinizle (yani, uygulamanızda oluşturulanlarla) çalışıyorsanız, ObjectFind kullanmamalısınız - nesnenin hangi pencerede oluşturulduğunu ve büyük olasılıkla var olduğunu ve istenen türde olduğunu zaten biliyorsunuzdur.
Maksimum sorun - kullanıcının nesneyi silmiş veya özelliği değiştirmiş olması

Teşekkür ederim. İlginç.

 

Hepinize iyi günler.
Kovalev'in ders kitabı, dizi indekslerine sabitler, değişkenler veya ifadeler şeklinde tamsayı değerleri verilebileceğini söylüyor.
mql4'te değişken şeklinde bir indeks ayarladığımda derleyici tek bir hata veriyor

Dizini şu şekilde ayarladım
intW =1000;

çift T_P[ W ]={0};

geçersiz OnTick()

{

kod

}
Lütfen bana neyi yanlış yaptığımı söyle.
Teşekkür ederim.

 
ANDREY :

Hepinize iyi günler.
Kovalev'in ders kitabı, dizi indekslerine sabitler, değişkenler veya ifadeler şeklinde tamsayı değerleri verilebileceğini söylüyor.
mql4'te değişken şeklinde bir indeks ayarladığımda derleyici tek bir hata veriyor

Dizini şu şekilde ayarladım
intW =1000;

çift T_P[ W ]={0};

geçersiz OnTick()

{

kod

}
Lütfen bana neyi yanlış yaptığımı söyle.
Teşekkür ederim.

Bir dizinin dizini dizinin boyutu değildir.
 
Alexey Viktorov :
Bir dizinin dizini dizinin boyutu değildir.

Anladım teşekkürler. Bir değişken kullanarak bir dizinin boyutunu bir şekilde ayarlamak mümkün müdür?

 
ANDREY :

Anladım teşekkürler. Bir değişken kullanarak bir dizinin boyutunu bir şekilde ayarlamak mümkün müdür?

Dizinin ilk boyutunda yeni boyutu ayarlar

int ArrayResize (
    geçersiz&    dizi[] , // başvuruya göre geçirilen dizi
    int      new_size , // yeni dizi boyutu
    int      rezerv_boyutu=0        // yedek boyut değeri (yedek)
);

 
Aleksey Vyazmikin :

Dizinin ilk boyutunda yeni boyutu ayarlar

int ArrayResize (
    geçersiz&    dizi[] , // başvuruya göre geçirilen dizi
    int      new_size , // yeni dizi boyutu
    int      rezerv_boyutu=0        // yedek boyut değeri (yedek)
);

Değerli bilgi için teşekkürler.

 

Merhaba! Lütfen bu basit kodu anlamama yardım edin.

Şimdi emir açma/kapama mekanizmalarını çözüyorum ve açık pozisyonları kapatma problemiyle karşılaştım.

Kod basit. Algoritmanın özü, 100 periyodu ile grafikte MA (hareketli ortalama) çizmektir. Eğer önceki mum [1] ise   yukarıda açıldı   MA ve   aşağıda kapalı   MA, ardından bir sonraki mum çubuğundan [0] bir SATIŞ emri açılır.

//(Satın alma koşulları tam tersi, ben boyamıyorum)

Bir emri kapatmak için, aşağıdaki koşullar - mevcut fiyat emrin açılış fiyatından, örneğin 40 puanın set değerinden geçmiştir.

Örnek: Bid=1.20045'te açılan bir atış, Ask=1.20005'te kapanmalıdır.

Eh, kısacası, benim için bir şey çalışmıyor, yeni bir emir açmak ve zaten açık olan pozisyonları kapatmak için koşullar, ama aslında fiyat belirtilen puan değerini geçebilir (kapanış seviyesini geçebilir) ve emir olmaz. kapalı olmak.

Neyin yanlış olduğunu anlayamıyorum.

p/s/ Ekran görüntüleri ve kod ekli.

Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Приказы на проведение торговых операций оформляются ордерами. Каждый ордер имеет множество свойств для чтения, информацию по ним можно получать с помощью функций Идентификатор позиции, который ставится на ордере при его исполнении. Каждый исполненный ордер порождает сделку, которая открывает новую или изменяет уже существующую позицию...
 
4elovechishe :

Merhaba! Lütfen bu basit kodu anlamama yardım edin.

Şimdi emir açma/kapama mekanizmalarını çözüyorum ve açık pozisyonları kapatma problemiyle karşılaştım.

Kod basit. Algoritmanın özü, 100 periyodu ile grafikte MA (hareketli ortalama) çizmektir. Eğer önceki mum [1] ise   yukarıda açıldı   MA ve   aşağıda kapalı   MA, ardından bir sonraki mum çubuğundan [0] bir SATIŞ emri açılır.

//(Satın alma koşulları tam tersi, ben boyamıyorum)

Bir emri kapatmak için, aşağıdaki koşullar - mevcut fiyat emrin açılış fiyatından, örneğin 40 puanın set değerinden geçmiştir.

Örnek: Bid=1.20045'te açılan bir atış, Ask=1.20005'te kapanmalıdır.

Eh, kısacası, benim için bir şey çalışmıyor, yeni bir emir açmak ve zaten açık olan pozisyonları kapatmak için koşullar, ama aslında fiyat belirtilen puan değerini geçebilir (kapanış seviyesini geçebilir) ve emir olmaz. kapalı olmak.

Neyin yanlış olduğunu anlayamıyorum.

p/s/ Ekran görüntüleri ve kod ekli.

CheckForOpen() doğrudan OnTick'te değil, kendi kendine yazılmış bir OnBar'da (OnTick'te denir) - bar açılışında çağrılmalıdır. Ama bu küçük

Aç[1], Kapat[1] (önceki mum MA100'den kırıldı) değil, Aç[1], Aç[0] (önceki bir tarafta MA açıldı, diğer tarafta mevcut mum) izlemelisiniz. Aksi takdirde, mumlar ve veda mantığı arasında küçük bir boşluk.

0. çubukta Medyan'dan SMA değişir, yani sabit değildir. Onunla kıyaslayamazsın. Algoritmayı düzeltin.

 
Aleksey Vyazmikin :

Dizinin ilk boyutunda yeni boyutu ayarlar

int ArrayResize (
    geçersiz&    dizi[] , // başvuruya göre geçirilen dizi
    int      new_size , // yeni dizi boyutu
    int      rezerv_boyutu=0        // yedek boyut değeri (yedek)
);

İpucu için tekrar teşekkürler, ama..... El Kitabı bu işlevin yalnızca dinamik diziler için geçerli olduğunu söylüyor. Ve kodumda, dinamik bir dizi DEĞİL, normal bir dizi.

Sıradan bir dizinin boyutunun birinci boyutta nasıl değiştiğini bana söylerseniz (veya daha iyisi gösterirseniz) size çok minnettar olurum.
Yardımın için tekrar teşekkürler.

Neden: