![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret 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
Muhtemelen bu başlığı gözden kaçırmıştır. KimV'nin Sipariş Verme Doğrulama özelliğini nerede bulabilirim?
4-ki içindir ama bakabilirsin işine yarayabilir. Web sitesinde "ücretsiz kütüphaneler" bölümünde bulabilirsiniz, sipariş vermek için bir kütüphane.
dörtten itibaren çalışmayacak. Pozisyonu belirlemek için kullanıyorum
KonumSeçimi
Onunla daha fazla çalışmak için açık bir pozisyon seçer. İşlev başarıyla tamamlandıysa true döndürür. İşlev başarısız olursa false döndürür. Hata hakkında bilgi almak için GetLastError() işlevini çağırmanız gerekir.
bool PositionSelect (
sicim semboller // araç adı
);
Seçenekler
semboller
[içinde] Finansal aracın adı.
Geri dönüş değeri
bool değeri.
Not
Her sembol için, bir veya daha fazla işlemin sonucu olarak, herhangi bir zamanda yalnızca bir pozisyon açılabilir. Müşteri terminalinin "Araçlar" panelindeki "Ticaret" sekmesinde de görüntülenen pozisyonlar ve aktif bekleyen emirler birbiriyle karıştırılmamalıdır.
PositionSelect() işlevi, konum verilerini ortama kopyalar ve ardından PositionGetDouble() , PositionGetInteger() ve PositionGetString() öğelerine yapılan çağrılar önceden kopyalanan verileri döndürür. Bu, pozisyonun kendisinin artık mevcut olmayabileceği (veya hacim, yön vb. olarak değiştiği) ve bu pozisyonun verilerinin hala alınabileceği anlamına gelir. Yeni konum verilerinin elde edildiğinden emin olmak için, talep edilmeden hemen önce PositionSelect() işlevinin çağrılması önerilir.
dörtten itibaren çalışmayacak. Pozisyonu belirlemek için PositionSelect'i kullanıyorum
Bu durumları tek bir tik içinde mi yoksa farklı keneler üzerinde mi analiz ediyorsunuz?
Yani, aşağıdakilerden başlıyorum:
Kene, bir enstrümanın fiyatındaki bir değişikliktir. Bu tür değişikliklerin sıklığı tahmin edilemez: saniyede birkaç ila saatte birkaç. Buna göre, OrderSend() ve PositionSelect() işlevlerinin çalışması, kenelerin ömrüne bağlı olmamalıdır. Ve eğer öyleyse, o zaman siparişlerin tekrarının önlenmesi (ve ilgili durumların analizi) üzerindeki kontrolün, kenelerin davranışından (sıklığından) bağımsız olarak yapılması gerektiğini düşünüyorum.
Yani soruyu tam olarak cevaplamak zor :/
Sorumu sorduğumda, başka bir şey demek istedim. Bir sonraki onay geldiğinde OnTick() olay işleyicisi tetiklenir. Bunu akılda tutarak, sorumu yeniden ifade edeceğim:
Bu durumları bir OnTick() çağrısı içinde mi yoksa farklı çağrılar içinde mi analiz ediyorsunuz?
Yine de tek tıkla cevap alamıyorum.OrderSend() ve PositionSelect() yapıyor musunuz?
Bu istekleri tek bir tıklama (OnTick() tetiklemesinin) içinde değil, iki tıklama içinde gerçekleştirmenizi önermek istiyorum:
- ilk tikte
onlar. istek başarıyla yanıtlanırsa, pozisyon açma bayrağını buy=true olarak ayarlarsınız ve bir sonraki tick (Optick() tetiklenir) return deyimine kadar OnTick() yürütmesini durdurursunuz.
- ikinci tikte - PositionSelect().
Bu seçenekte, açılış pozisyonlarının tekrarı olmaz.
Pozisyonun bir sonraki tıklamada zaten açılacağının garantisi yoktur, manuel olarak sipariş verirken bir pozisyonun açılmasının ne kadar sürdüğünü ölçün,
Emir yürütme kontrolünü OnTrade()'e aktarmanızı tavsiye ederim, bu olay sadece sunucudan alım satım işlemlerinin tamamlanmasıyla ilgili bir yanıt olarak oluşturulur.
Benim için çok net olmasa da neden sipariş başına 4 OnTrade() olayı var?
Yine de tek tıkla cevap alamıyorum.OrderSend() ve PositionSelect() yapıyor musunuz?
Terminolojinize göre, OrderSend() ve PositionSelect() işlevlerimin "tek bir işaret içinde" yürütüldüğü ortaya çıktı.
...Bu istekleri tek bir tıklama (OnTick() tetiklemesinin) içinde değil, iki tıklama içinde gerçekleştirmenizi önermek istiyorum:
- ilk tikte
onlar. istek başarıyla yanıtlanırsa, pozisyon açma bayrağını buy=true olarak ayarlarsınız ve OnTick()'in yürütülmesini bir sonraki tik (OnTick()'in çalışması) return deyimine kadar durdurursunuz.
- ikinci tikte - PositionSelect().
Bu seçenekte, açılış pozisyonlarının tekrarı olmaz.
Önceki mesajdan biraz önce, OrderSend() ve PositionSelect() işlevlerinin yürütülmesinin kenelerin varması/gelmemesi ile hiçbir ilgisi olmadığını yazmıştım. Ve kısaca nedenini açıkladı. Bu nedenle, "ikinci tikte - PositionSelect()" kontrolü, sizi olası tüm durumlarda tekrar sipariş vermekten kesinlikle kurtarmamalıdır.
Benim için çok net olmasa da neden sipariş başına 4 OnTrade() olayı var?
OnTrade() hakkında bununla ilgili bir makale vardı.
Bir sonraki tikte pozisyonun zaten açılacağının garantisi yoktur...
Yine de tek tıkla cevap alamıyorum.OrderSend() ve PositionSelect() yapıyor musunuz?
Bu istekleri tek bir tıklama (OnTick() tetiklemesinin) içinde değil, iki tıklama içinde gerçekleştirmenizi önermek istiyorum:
- ilk tikte
onlar. istek başarıyla yanıtlanırsa, pozisyon açma bayrağını buy=true olarak ayarlarsınız ve OnTick()'in yürütülmesini bir sonraki tik (OnTick()'in çalışması) return deyimine kadar durdurursunuz.
- ikinci tikte - PositionSelect().
Bu seçenekte, açılış pozisyonlarının tekrarı olmaz.
Hayır - tik değil. 1. saniyede.
Burada basitleştirilmiş:
yani - duraklama olmadan arka arkaya 2 sipariş açacaktır. Ama ben 3 saniyeye ayarladım - ve pişman değilim))) Yine de bu bir emrin açılışı.
MT5'te sipariş muhasebesi tam bir bilimdir: OnTrade() işlevini kullanarak bir Uzman Danışmanda ticaret olaylarını işlemek
Hiçbir duraklama sizi yeniden açılmaktan kurtaramaz, her zaman emrin 1 saniye daha yürütüleceği bir durum olabilir.
ps: ve sihri unutma.