Bir siparişin seçili olup olmadığı nasıl kontrol edilir - sayfa 9

 
Vinin :


Özellikle kimseyle iletişime geçmedim.

Ama görünüşe göre bunu kişisel alarak doğru olanı yapmışsın.

Sana aptal diyemem ama sağır olduğun kesin.

Başkalarını duymuyorsun. Sözlerimden değil, size verilen tavsiyelerden bahsediyorum.

Hiç birlikte çalışabilir programlar yazdınız mı?

Ant_TL'nin sorduğu şey "birlikte çalışabilirlik"tir, ancak bu MQL'de gerçekleştirilemez.

 
PapaYozh :

Hiç birlikte çalışabilir programlar yazdınız mı?

Ant_TL'nin sorduğu şey "birlikte çalışabilirlik"tir, ancak bu MQL'de gerçekleştirilemez.


Uygulanması zor değil. Ve prensipte bir çözüm var. Devamını okumak için çok tembel
 
Değişmeyecek kapalı pozisyonlar için de benzer bir çözüm uygulanabilir. Ve açık için - yapmayın
 
Vinin :

Uygulanması zor değil. Ve prensipte bir çözüm var. Devamını okumak için çok tembel

Emirlerle işlem yapamayacaksınız ve aynı zamanda çevreyi etkilememe garantiniz de var.

GetLastError() zaten söylendi, GetLastError() işlevinin döndürmesi gereken kodu kurtaramayacaksınız.

 
PapaYozh :

Emirlerle işlem yapamayacaksınız ve aynı zamanda çevreyi etkilememe garantiniz de var.

GetLastError() hakkında zaten söylendi, GetLastError() işlevinin döndürmesi gereken kodu kurtaramayacaksınız.


Dilerseniz sadece kendi işlevinize sahip olabilirsiniz ( GetLastError() 'dan bahsediyorum)
 

Çözüm şu şekilde görünebilir - sıraları dizine göre sıralayan işlevlerde kullanım için sarmalayıcı OrderSelect() - MySelect()

int last_select=0; // init'ten önce bir yere koy ve başla

// ...... program kodu

bool MySelect(int i,int mode=MODE_TRADES){ // İhtiyacımız olan siparişi seçmek - sipariş seçiliyse ve EA'ya aitse True, aksi takdirde False döndürür
if(OrderSelect(i,SELECT_BY_POS,mod)){
last_select=OrderTicket();
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
dönüş(doğru);
başka
dönüş(yanlış);
}
dönüş(yanlış);
}

bool TickSelect(int tick){ // Seçimi doğrudan biletle sipariş edin
if(SiparişSeç(işaretle,SELECT_BY_TICKET))
last_select=tick;
başka
dönüş(yanlış);
dönüş(doğru);
}

void SomeFunc(){ // Sıra seçimini ihlal edebilecek ve buna bağlı olarak mevcut sıra seçimine dikkat edilmezse program mantığını ihlal edebilecek bir fonksiyonun şablonu
int tik=last_select;

// ... gerekli işlemleri yap

if(kene>0)
TickSelect(tick);
}

 
Ant_TL :

Programda bu durumu kendiniz değiştirmediğiniz sürece olamaz.

MODE_TRADES olan siparişin durumunun MODE_HISTORY olarak değiştiği varsayılmıştır. Üstelik danışmanınız siparişle ilgili hiçbir şey yapmadı. Aynı düzen mi yoksa farklı bir düzen mi?

 
Mislaid :

MODE_TRADES olan emir durumunun MODE_HISTORY olarak değiştiği varsayılmıştır. Üstelik danışmanınız siparişle ilgili hiçbir şey yapmadı. Aynı düzen mi yoksa farklı bir düzen mi?

Aynı düzen.

 
Herhangi bir sorun görmüyorum. Ve yaygara boşandı ... Bir ana işlev A()'da bir sıra seçmeniz ve ana işlev A()'dan çağrılan başka bir işlev B()'de, işlev A()'da seçilen sırayı işlemeniz gerekir. Ve B() işlevinde, siparişin hala seçili olup olmadığından emin olmanız gerekir... Peki, A() işlevinde seçilen siparişin biletini B() işlevine iletin. B() işlevinde, siparişin hangi listeden seçildiğini kontrol edebilir ve ardından nereye gideceğinize ve A() işlevine neyin geri döneceğine karar verebilirsiniz...
 
Ant_TL :

Çözüm şu şekilde görünebilir - sıraları dizine göre sıralayan işlevlerde kullanım için sarmalayıcı OrderSelect() - MySelect()

int last_select=0; // init'ten önce bir yere koy ve başla

// ...... program kodu

bool MySelect(int i,int mode=MODE_TRADES){ // İhtiyacımız olan siparişi seçmek - sipariş seçiliyse ve EA'ya aitse True, aksi takdirde False döndürür
if(OrderSelect(i,SELECT_BY_POS,mod)){
last_select=OrderTicket();
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
dönüş(doğru);
başka
dönüş(yanlış);
}
dönüş(yanlış);
}

bool TickSelect(int tick){ // Seçimi doğrudan biletle sipariş edin
if(SiparişSeç(işaretle,SELECT_BY_TICKET))
last_select=tick;
başka
dönüş(yanlış);
dönüş(doğru);
}

void SomeFunc(){ // Sıra seçimini ihlal edebilecek ve buna bağlı olarak mevcut sıra seçimine dikkat edilmezse program mantığını ihlal edebilecek bir fonksiyonun şablonu
int tik=last_select;

// ... gerekli işlemleri yap

if(kene>0)
TickSelect(tick);
}

Şimdi terminali yeniden başlattıktan sonra last_select değişkenine ne olduğunu hayal edelim (kötü adamlar ışığı kapattı)