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

 
trader781 :
tüm dosyayı yükle
Alexey Viktorov :
1. Bir sipariş açarken, bileti global veya statik bir değişkene yazın ve ardından bu siparişi, OrderCloseTime() > 0'ı karşılaştırarak maviye dönene kadar, oh, izleyin. Kapanış zamanı sıfırdan büyükse, o zaman sipariş kapalı.

2. GOTO ifadesinin değiştirilmesi çok daha verimlidir. İşlevler için belgeleri okuyun.

Bir örnekle gösterebilir misin? Önceki işlemin kapanmasını nasıl bekleyebilirim.

double Lot = 0.1 ;      

double loss = 100 ;  



int start()

  {

   int order;

     if ( OrdersTotal ()== 0 )                            

    {                  

      order = OrderSend ( Symbol (), OP_BUY ,Lot, Ask , 1 * Point , Ask -loss* Point , Ask +loss* Point );   // Вверх

      order = OrderSend ( Symbol (), OP_SELL ,Lot, Bid , 1 * Point , Bid +loss* Point , Bid -loss* Point );     // Вниз

    }



   return ( 0 );

  }

//+------------------------------------------------------------------+

 
DenZell :

Bir örnekle gösterebilir misin? Önceki işlemin kapanmasını nasıl bekleyebilirim.

double Lot = 0.1 ;      

double loss = 100 ;  



int start()

  {

   int order;

     if ( OrdersTotal ()== 0 )                            

    {                  

      order = OrderSend ( Symbol (), OP_BUY ,Lot, Ask , 1 * Point , Ask -loss* Point , Ask +loss* Point );   // Вверх

      order = OrderSend ( Symbol (), OP_SELL ,Lot, Bid , 1 * Point , Bid +loss* Point , Bid -loss* Point );     // Вниз

    }



   return ( 0 );

  }

//+------------------------------------------------------------------+

Birkaç seçenek var.

En basit eylem sırasıdır. İlk önce zaten açık olan bir emirle bir şey yapmaya çalışıyoruz ve sonra açık emir olmaması şartıyla yerleştirmeye çalışacağız.

Ayrı pozisyon bakımı ve yeni bir siparişin iki ayrı özel fonksiyona açılması. Ardından, OnTick() işlevinde, açık siparişlerin varlığını kontrol edin ve sonuca göre bir veya başka bir işlevi çağırın.

Kelimelerde şöyle görünür:

void OnTick ()
{
if ( OrdersTotal () > 0 )
  открытие();
else
  сопровождение();
}

bool открытие()
{
// здесь код открытия
}

bool сопровождение()
{
// здесь код сопровождения
}
Daha da zoru OrderCloseTime() > 0 için belirli bir siparişi kontrol etmektir.

Bu, hesap sağlıyorsa ve çoğu zaman diğer danışmanların çalışması veya manuel olarak sipariş açılması durumunda geçerlidir.
 
Terminalde hesap geçmişinin başlangıç tarihini programlı olarak seçmek mümkün müdür?
 
Money_Maker :
Terminalde hesap geçmişinin başlangıç tarihini programlı olarak seçmek mümkün müdür?
Yapabilir. Bu, tip 6 - terazi operasyonu ile tarihteki ilk sipariş olacak. Bu siparişin açılış saati hesap geçmişinin başlangıcı olacaktır.
 
Artyom Trishkin :
Yapabilir. Bu, tip 6 - terazi operasyonu ile tarihteki ilk sipariş olacak.
Tarihte ilk sıraya ihtiyacım yok .. tarih maksimuma açılıyor, belirli bir tarihten itibaren tarihe ihtiyacım var .. programlı olarak ayarlayacağım (görünüşe göre soru ayrıntılar nedeniyle akıcı hale geldi)
 
Money_Maker :
Tarihte ilk sıraya ihtiyacım yok .. tarih maksimuma açılıyor, belirli bir tarihten itibaren tarihe ihtiyacım var .. programlı olarak ayarlayacağım (görünüşe göre soru ayrıntılar nedeniyle akıcı hale geldi)
Cevap da mümkündür.

Ama yine de, soru "düzenli" kalıyor, bu yüzden açılış zamanı bu "belirli tarihten" daha erken olan siparişleri atlamanız gerektiğini söyleyeceğim.
 
Artyom Trishkin :
Cevap da mümkündür.

Ama yine de, soru "düzenli" kalıyor, bu yüzden açılış zamanı bu "belirli tarihten" daha erken olan siparişleri atlamanız gerektiğini söyleyeceğim.
Tarihe göre filtre koymak tabii ki pek aklıma gelmedi..ama 7 yıldır çok sipariş alındı.
ekran görüntüsünde sorunun altı kırmızıyla çizilmiş, oraya belirli bir tarih eklemeniz gerekiyor .. yani soru akıcı değil mi?
 
Money_Maker :
Tarihe göre filtre koymak tabii ki pek aklıma gelmedi..ama 7 yıldır çok sipariş alındı.
ekran görüntüsünde sorunun altı kırmızıyla çizilmiş, oraya belirli bir tarih eklemeniz gerekiyor .. yani soru akıcı değil mi?
Sorunuz net değil :(

Programlı olarak tam olarak ne yapmak istiyorsunuz?
 
Artyom Trishkin :
Sorunuz net değil :(

Programlı olarak tam olarak ne yapmak istiyorsunuz?
kırmızıyla altı çiziliyse tarihi girin ve aslında tamam'a basın.. rapordaki tarihin derinliğini belirler
 
Money_Maker :
kırmızıyla altı çiziliyse tarihi girin ve aslında tamam'a basın.. rapordaki tarihin derinliğini belirler
Saf mql üzerinde programlı olarak imkansızdır. WinAPI aracılığıyla bu pencereyi ve tarihi aramanız gerekiyor sanırım.