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

 
Anatoliy Markov # :

Katıldığınız için teşekkürler. Görev ifadesi benim için açık. Uygulamanın durmasıyla...

Yorumlarla denedim. İkinci gruba kadar olan sayılar doğru. Üçüncüsü, ilk grup hala piyasada olmasına rağmen, yorum için bir tane döndürür. Mesele sayıları çoğaltmak değil, boşları doldurmaktır. Umarım açıkça anlatabilmişimdir).

Tamamen net değil, ancak yine de kodu yapıştırmak için düğmeyi kullanın


veya ALT+s klavye kısayolu

 
void OnTick()
{
  //---
    
    for(int a=1; a<10; a++)
     {
       comment="";
       for(int i=0; i<OrdersTotal(); i++)
         {
          if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
            {
             if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic)
               {    
                  if (OrderComment()==IntegerToString(a)) continue; 
                  else
                  {
                   comment=IntegerToString(a);
                   break;                  
                  } 
               }
            } 
         } 
        if(comment!="") break; 
     }
    if (CountOfBuy(magic)<1 && CountOfSell(magic)<1) comment="1";
  //---
}
Да, так более информативно. Т.е. этот незамысловатый модуль должен давать коммент для 
последующего присвоения ордеру. Когда открыта группа с комментом 1, он дает коммент 2 (это правильно). 
Когда открыта 2-я группа, опять дает 1. Не могу понять.
 

Herkese iyi akşamlar!

Önceden ayarlanmış bir bekleyen siparişin varlığını belirleyen bir işlev yazdım, ancak nedense işlev çalışmıyor. Söyle bana, lütfen, hata nerede? Saygılarımla, Vladimir.

 //+------------------------------------------------------------------+
//| Функция IsMainPendingOrder (установлен отложенный ордер):        |
//| возвращает истину, если в советнике уже установлен отложенный    |
//| ордер, в противном случае возвращает ложь.                       |
//| Применим для функции с типом данных bool, чтобы хранить          |
//| логические значения true (истина) или false (ложь).              |
//+------------------------------------------------------------------+
bool IsMainPendingOrder()
  {
   int orders_total= OrdersTotal (); // количество установленных отложенных ордеров
//--- перебираем все установленные отложенные ордера
   for ( int i=orders_total- 1 ; i>= 0 ; i--)
     {
       ulong   order_ticket= OrderGetTicket (i); // тикет ордера
       /* если отложенного ордера нет, значит и у нашего советника отложенного ордера нет */
       if ( OrderSelect (i)== false )
         return false ; // поэтому возвращаем ложь
     }
   /* если отложенный ордер уже есть и его мэджик совпадает с мэджиком нашего советника */
   if ( OrderGetInteger ( ORDER_MAGIC )==Magic_Number)
       return true ;   // то возвращаем истину
   /* в противном случае, если отложенный ордер уже есть, но его мэджик не совпадает с мэджиком нашего советника */
   else
       return false ; // значит это чья-то чужая позиция, поэтому возвращаем ложь
  }
 
MrBrooklin ayarlanmış bir bekleyen siparişin varlığını belirleyen bir işlev yazdım, ancak nedense işlev çalışmıyor. Söyle bana, lütfen, hata nerede? Saygılarımla, Vladimir.

KENDİNİZE BULDUĞUNUZ HATA!!!

İşte iyi çalışan kod. Belki birileri işine yarar. Saygılarımla, Vladimir.

 //+------------------------------------------------------------------+
//| Функция IsMainPendingOrder (установлен отложенный ордер):        |
//| возвращает истину, если в советнике не установлен отложенный     |
//| ордер, в противном случае возвращает ложь.                       |
//| Применим для функции тип данных bool, чтобы хранить              |
//| логические значения true (истина) или false (ложь).              |
//+------------------------------------------------------------------+
bool IsMainPendingOrder()
  {
   int orders_total= OrdersTotal (); // количество установленных отложенных ордеров
//--- перебираем все установленные отложенные ордера
   for ( int i=orders_total- 1 ; i>= 0 ; i--)
     {
       ulong   order_ticket= OrderGetTicket (i); // тикет ордера
       /* если отложенного ордера нет, значит и у нашего советника отложенного ордера нет */
       if ( OrderSelect (i)== false )
         return true ; // поэтому возвращаем значение истина
       else // в противном случае
         return false ; // возвращаем значение ложь
     }
   /* если отложенный ордер уже есть и его мэджик совпадает с мэджиком нашего советника */
   if ( OrderGetInteger ( ORDER_MAGIC )==Magic_Number)
       return true ;   // то возвращаем истину
   /* в противном случае, если отложенный ордер уже есть, но его мэджик не совпадает с мэджиком нашего советника */
   else
       return false ; // значит это чужой ордер, поэтому возвращаем значение ложь
 

Lütfen nasıl organize edeceğimi veya hangi yöne bakacağımı söyle:

Burada çubukları hesaplamamak için tamponları bulduk. Her yeni onay işaretiyle yalnızca son çubuk kontrol edilir (anladığım kadarıyla). Yeni bir çubuk göründüğünde, hesaplama yalnızca onunla başlar.

Tampon sayesinde çizgiler tarih boyunca yeniden çizilmez ve son kenarına ek bir segment eklenir. Toplamda 8 tampon vardır.

Ve eğer yüzlerce kez bir hesaplama yapmam gerekirse (örneğin, sadece bir değişkeni değiştirerek 100 kez bir çizgi çizin) ve sonra en iyi sonucu çizin. Ve yeni bir onay işareti veya zamanlayıcı ile aynı şeyi yapın, ancak sonuçların (oluşturmaların) mevcut "geçmişi" ile. Daha sonra bu hesaplamaları tarih boyunca yeni bir temelde yapmak zorunda kalmamak için bu bilgileri nerede ve nasıl saklayabilirim?

Veya daha basit bir şekilde ifade etmek gerekirse, göstergedeki arabellek sayısı nasıl artırılır? Bir dosyaya ayrı olarak yazılabilir mi? ne kadar iyi
 
Ivan Butko # :

Lütfen nasıl organize edeceğimi veya hangi yöne bakacağımı söyle:

Burada çubukları hesaplamamak için tamponları bulduk. Her yeni onay işaretiyle yalnızca son çubuk kontrol edilir (anladığım kadarıyla). Yeni bir çubuk göründüğünde, hesaplama yalnızca onunla başlar.

Tampon sayesinde çizgiler tarih boyunca yeniden çizilmez ve son kenarına ek bir segment eklenir. Toplamda 8 tampon vardır.

Ve eğer yüzlerce kez bir hesaplama yapmam gerekirse (örneğin, sadece bir değişkeni değiştirerek 100 kez bir çizgi çizin) ve sonra en iyi sonucu çizin. Ve yeni bir onay işareti veya zamanlayıcı ile aynı şeyi yapın, ancak mevcut sonuçların (çizimler) "geçmişi" ile. Daha sonra bu hesaplamaları tarih boyunca yeni bir temelde yapmak zorunda kalmamak için bu bilgileri nerede ve nasıl saklayabilirim?

Veya daha basit bir şekilde ifade etmek gerekirse, göstergedeki arabellek sayısı nasıl artırılır? Bir dosyaya ayrı olarak yazılabilir mi? ne kadar iyi

Göstergeler 512 arabelleğe sahiptir.

 
Artyom Trishkin # :

Göstergeler 512 arabelleğe sahiptir.

Vay canına. Muhtemelen oraya bakmadım. yapmaya çalışacağım

 
MrBrooklin # :

KENDİNİZE BULDUĞUNUZ HATA!!!

İşte iyi çalışan kod. Belki birileri işine yarar. Saygılarımla, Vladimir.

Kimse faydalı olmayacak. Kodunuzda büyük hatalar var. Ve onları düzeltmek anlamsız.

Dilin temellerini öğrenme zahmetine bile girmedin ama bir şeyler yazmaya çalışıyorsun.

Ya ciddiye alırsın ya da bırakırsın.

 
Koldun Zloy # :

Kimse faydalı olmayacak. Kodunuzda büyük hatalar var. Ve onları düzeltmek anlamsız.

Dilin temellerini öğrenme zahmetine bile girmedin ama bir şeyler yazmaya çalışıyorsun.

Ya ciddiye alırsın ya da bırakırsın.

Günaydın! Evet, kesinlikle haklısın. Bu anlamsız işten vazgeçmek, yani bölüme dönmek gerekiyor.

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

ve yardım için burada bekleyin.

Saygılarımla, Vladimir.

 
MrBrooklin # :
Günaydın! Evet, kesinlikle haklısın. Bu anlamsız işten vazgeçmek, yani bölüme dönmek gerekiyor.

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

ve yardım için burada bekleyin.

Saygılarımla, Vladimir.

Bu doğru, bırak onu.

Sana Rusça yazdığımı bile anlamadın.

Neden programlamaya girmek istiyorsun?