Yeni başlayanlardan sorular MQL4 MT4 MetaTrader 4 - sayfa 14

 
Alexey Kozitsyn :
Haydi Yapalım şunu. Siparişler arasında dolaşan kodu, nasıl yapması gerektiğine dair bir açıklama ile gösterirsiniz ve ancak o zaman neyin doğru neyin yanlış olduğunu söylemek mümkün olacaktır. Sadece fonksiyonların isimleri sizi sonuca yaklaştırmayacaktır.

Merhaba ... bana yardım etmeyi kabul ettiğiniz için teşekkür ederim ... küçük bir girişim gibi görünüyor, siparişlerin kapatıldığını duyurmak, sadece gerekli olayı uygun klasöre ekleyerek mal olacak - o kadar basit olmadığı ortaya çıktı . .. işte MQL4 Referansından aldığım kodun bir örneği    Ticaret Fonksiyonları :

int OrdersHistoryTotal ();

// ticaret geçmişinden bilgi alma
   int i,accTotal= OrdersHistoryTotal ();
   ( i=0;i<accTotal;i++) için
{
      //---- seçim sonucunu kontrol et
      if ( OrderSelect (i,SELECT_BY_POS,MODE_HISTORY)== false )
{
         Print ( "Geçmiş veritabanına erişim hatası (" , GetLastError (), ")" );
         ara ;
}
      // siparişle çalış...

}

... işlev , müşteri terminaline yüklenen cari hesap geçmişindeki kapatılan ve silinen siparişlerin sayısını döndürür. Geçmiş listesinin boyutu, terminalin "Hesap Geçmişi" sekmesinin mevcut ayarlarına bağlıdır.

Onlardan nasıl geçecek ve bunun neden gerekli olduğunu anlamıyorum ... belki de hatırlamamak ve müdahale etmemek için atmak dışında?

Yeni kapatılan siparişleri, kapanış anında kısa bir sesli sinyal ile seslendirmesi gerekiyor. Müşteri terminalimdeki tüm kapatılmış siparişler yalnızca iki türdendir: TrailStopLoss ve TakeProfit ortalamasına göre. Bir emri (bir emir grubu) kapatırken, hangi yöne ( Sat veya Al ) olursa olsun, StopLoss'u kapatmak için bunları yalnızca komut türüne göre ayırmanız gerekir.   veya Kâr Al,   ve uygun PlaySound işlevine iletin.

Справочник MQL4
Справочник MQL4
  • docs.mql4.com
Справочник MQL4
 
bablusut :

Merhaba ... bana yardım etmeyi kabul ettiğiniz için teşekkür ederim ... küçük bir girişim gibi görünüyor, siparişlerin kapatıldığını duyurmak, sadece gerekli olayı uygun klasöre ekleyerek mal olacak - o kadar basit olmadığı ortaya çıktı . .. işte MQL4 Referansından aldığım kodun bir örneği    Ticaret Fonksiyonları :

int OrdersHistoryTotal ();

// ticaret geçmişinden bilgi alma
   int i,accTotal= OrdersHistoryTotal ();
   ( i=0;i<accTotal;i++) için
{
      //---- seçim sonucunu kontrol et
      if ( OrderSelect (i,SELECT_BY_POS,MODE_HISTORY)== false )
{
         Print ( "Geçmiş veritabanına erişim hatası (" , GetLastError (), ")" );
         ara ;
}
      // siparişle çalış...

}

... işlev , müşteri terminaline yüklenen cari hesap geçmişindeki kapatılan ve silinen siparişlerin sayısını döndürür. Geçmiş listesinin boyutu, terminalin "Hesap Geçmişi" sekmesinin mevcut ayarlarına bağlıdır.

Onları nasıl çözecek ve bunun neden gerekli olduğunu anlamıyorum ... belki hatırlamak ve müdahale etmemek için atmak dışında?

Yeni kapatılan siparişleri, kapanış anında kısa bir sesli sinyal ile seslendirmesi gerekiyor. Müşteri terminalimdeki tüm kapatılmış siparişler yalnızca iki türdendir: TrailStopLoss ve TakeProfit ortalamasına göre. Bir emri (bir emir grubu) kapatırken, hangi yöne (Sat veya Al) olursa olsun, StopLoss'u kapatmak için bunları yalnızca komut türüne göre ayırmak gerekir.   veya Kâr Al,   ve uygun PlaySound işlevine iletin.

Siparişleri tersten sıralamak gerekiyor çünkü. 0 ilkidir. accTotal-1 sonuncusu. Bu kodda, "// siparişle çalışma" dan sonraki yorumu hatırlayın ve SL veya TP ile bir kapanış yorumu içerip içermediğini kontrol edin.
 
Alexey Kozitsyn :
Siparişleri ters sırada sıralamak gerekir, çünkü 0 ilkidir. accTotal-1 sonuncusu. Bu kodda, "// siparişle çalışma" dan sonraki yorumu hatırlayın ve SL veya TP ile bir kapanış yorumu içerip içermediğini kontrol edin.

int OrdersHistoryTotal ();

// ticaret geçmişinden bilgi alma
   int i,accTotal= OrdersHistoryTotal ();
   ( i=0;i<accTotal;i++) için
{
      //---- seçim sonucunu kontrol et
      if ( OrderSelect (i,SELECT_BY_POS,MODE_HISTORY)== false )
{
         Print ( "Geçmiş veritabanına erişim hatası (" , GetLastError (), ")" );
         ara ;
}
      // siparişle çalış...

}

stringOrderComment ( );

sicim   yorum ;
   if ( OrderSelect (10,SELECT_BY_TICKET)== false )
{
      Print ( "OrderSelect() bir hata döndürdü - " , GetLastError ());
      dönüş (0);
}
   yorum = SiparişYorum ();

   // ...

Cevap için teşekkürler... OrderComment fonksiyon kodunu ekledikten sonra, ( MQL4 Reference    OrdersHistoryTotal fonksiyonu tarafından seçilen emrin bir yorumunu döndüren alım satım fonksiyonları ), genel kod aşağıdaki formu alır ... terminalin geçmişinde yeni kapatılmış emirleri takip etmek için bir fonksiyonumuz yok mu? ... " 0 - ilk. accTotal-1 - son" - terminal tarihinde "ilk kapalı" ve "son" anlamına gelir, zamana göre mi?... doğru anladım mı?


Справочник MQL4
Справочник MQL4
  • docs.mql4.com
Справочник MQL4
 
bablusut :

terminalin geçmişinde yeni kapanan siparişleri takip etme fonksiyonumuz yok mu?

Standart olanlar yok.

   int i,accTotal= OrdersHistoryTotal ();
   string comment;
   for (i=accTotal- 1 ;i>= 0 ;i++)
    {
     //---- check selection result
     if ( OrderSelect (i, SELECT_BY_POS , MODE_HISTORY )== false )
       {
         Print ( "Ошибка при доступе к исторической базе (" , GetLastError (), ")" );
         break ;
       }
     // работа с ордером ...
     comment = OrderComment ();
     // Проверяем, есть ли в комментарии признак закрытия ордера по ТП или СЛ
    }
Bir dizenin diğerinde varlığını belirlemek için - dizelerle çalışma işlevlerini kullanın.
 
Alexey Kozitsyn :

Standart olanlar yok.

   int i,accTotal= OrdersHistoryTotal ();
   string comment;
   for (i=accTotal- 1 ;i>= 0 ;i++)
    {
     //---- check selection result
     if ( OrderSelect (i, SELECT_BY_POS , MODE_HISTORY )== false )
       {
         Print ( "Ошибка при доступе к исторической базе (" , GetLastError (), ")" );
         break ;
       }
     // работа с ордером ...
     comment = OrderComment ();
     // Проверяем, есть ли в комментарии признак закрытия ордера по ТП или СЛ
    }
Bir dizenin diğerinde varlığını belirlemek için - dizelerle çalışma işlevlerini kullanın.

Teşekkürler... StringFind = Bir dizede alt dize ara işlevini kastediyorsunuz.

int StringFind(
string string_value, // içinde aradığımız string
string match_substring, // ne arıyoruz
int start_pos=0 // aramanın hangi konumdan başlatılacağı

);

Seçenekler
dize değeri
[içinde] Aranacak dize.
match_substring
[içinde] Aranacak alt dize.
start_pos=0
[içinde] Dizedeki aramanın başlaması gereken konum.
Geri dönüş değeri

Aranan alt dizenin başladığı dizedeki konum numarasını veya alt dize bulunamazsa -1 döndürür.

... veya StringCompare işlevi - İki dizeyi karşılaştırır mı?...


StringCompare - Строковые функции - Справочник MQL4
StringCompare - Строковые функции - Справочник MQL4
  • docs.mql4.com
StringCompare - Строковые функции - Справочник MQL4
 
bablusut :

Teşekkürler... StringFind = Bir dizede alt dize ara işlevini kastediyorsunuz.

int StringFind(
string string_value, // içinde aradığımız string
string match_substring, // ne arıyoruz
int start_pos=0 // aramanın hangi konumdan başlatılacağı

);

Seçenekler
dize değeri
[içinde] Aranacak dize.
match_substring
[içinde] Aranan alt dize.
start_pos=0
[içinde] Dizedeki aramanın başlaması gereken konum.
Geri dönüş değeri

Aranan alt dizenin başladığı dizedeki konum numarasını veya alt dize bulunamazsa -1 döndürür.

...


Doğru.
 
Alexey Kozitsyn :
Doğru.

Teşekkürler ... kod şöyle görünecek:

  int  i,accTotal= OrdersHistoryTotal ();
   string  comment;
   for (i=accTotal- 1 ;i>= 0 ;i++)
    {
      //---- check selection result
      if ( OrderSelect (i, SELECT_BY_POS , MODE_HISTORY )== false )
       {
         Print ( "Ошибка при доступе к исторической базе (" , GetLastError (), ")" );
         break ;
       }
      // работа с ордером ...
     comment =  OrderComment ();
      // Проверяем, есть ли в комментарии признак закрытия ордера по ТП или СЛ
    }

int   StringFind (
    string    string_value ,         // строка, в которой ищем
    string    match_substring ,     //  что ищем
    int       start_pos=0            // с какой позиции начинать поиск

   );  



 

 
bablusut :

Teşekkürler ... kod şöyle görünecek:

  int  i,accTotal= OrdersHistoryTotal ();
   string  comment;
   for (i=accTotal- 1 ;i>= 0 ;i++)
    {
      //---- check selection result
      if ( OrderSelect (i, SELECT_BY_POS , MODE_HISTORY )== false )
       {
         Print ( "Ошибка при доступе к исторической базе (" , GetLastError (), ")" );
         break ;
       }
      // работа с ордером ...
     comment =  OrderComment ();
      // Проверяем, есть ли в комментарии признак закрытия ордера по ТП или СЛ
    }

int   StringFind (
    string    string_value ,         // строка, в которой ищем
    string    match_substring ,     //  что ищем
    int       start_pos=0            // с какой позиции начинать поиск

   );  



 

Numara. Ne yaptığınızı anlamaya çalışın. Yazdıklarınız sadece bir fonksiyon prototipidir (yani, sadece açıklaması, ne yaptığı). Onlar. az önce belgelerden bir parça çıkardı. Kullanmanız gerekiyor. Onlar. argümanlar için kendi değerlerinizi değiştirin. Ve fonksiyon sonucu size döndürecektir. Ayrıca, bu sonucun işlenmesi gerekir.
 

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Yeni Başlayanlardan Sorular

A1exPit , 2016.11.30 22:14

SELECT_BY_POS ile Sipariş Seçimi Sonuncusu veya ilki hangi 0 sipariş? Ve bazen tam tersini deniyorum ve modifi #0 hatası çöküyor.

 
Vladimir Karputov :

hadi koda bakalım