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

 
trader781 :

844 nolu mesajı tekrar buraya kod yazmamak için yeniden düzenledim

peki, sıfır boyutlu bir diziyle ilgili olarak - 0 bir tamsayı olabilir, bir boolean false değerine eşdeğer olabilir, boş olabilir veya belki de başlangıç noktası olabilir.

Sıfırdan ne anladığınızın bir önemi yok. Bir dizinin boyutunu sıfıra ayarlarsanız - en azından zencefilli kurabiye sıfır olarak adlandırın - sıfır olur. Bu, dizinin boş olacağı anlamına gelir.
 
trader781 :

844 nolu mesajı tekrar buraya kod yazmamak için yeniden düzenledim

peki, sıfır boyutlu bir diziyle ilgili olarak - 0 bir tamsayı olabilir, bir boolean false'nin eşdeğeri olabilir, boş olabilir veya belki de başlangıç noktası olabilir.

Ve lütfen beni sizin için doğru gönderiye doğru kodu koymaya zorlamayın:

//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property strict
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
struct myorder
  {
   int                Ticket;
   double             orderopenprice;
   int                ordertype;
   double             profit;
   double             stoploss;
   double             lot;
  };
myorder orders[];

int     i;
int     Magic= 444 ;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---

//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
   CalcOrders();

  }
//+------------------------------------------------------------------+
void CalcOrders()
  {
   int count1= 0 ;

   for (i= OrdersTotal ()- 1 ; i>= 0 ; i--)
     {
       if (( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) && ( OrderSymbol ()== Symbol ())
         && ( OrderMagicNumber ()==Magic) && ( OrderType ()< 2 ))
        {
         count1++;
         ArrayResize (orders,count1);
         orders[count1- 1 ].Ticket= OrderTicket ();
         orders[count1- 1 ].lot= OrderLots ();
         orders[count1- 1 ].orderopenprice= OrderOpenPrice ();
         orders[count1- 1 ].ordertype= OrderType ();
         orders[count1- 1 ].profit= OrderProfit ();
         orders[count1- 1 ].stoploss= OrderStopLoss ();
        }
     }
   ArraySort (orders, WHOLE_ARRAY , 0 , MODE_ASCEND );

  }
//+------------------------------------------------------------------+

Şimdi hangi diziyi doldurduğunuza ve hangi alana göre sıraladığınıza bir bakın. Ve en önemlisi - neden bu sıralamaya ihtiyacımız var? Bunun anlamı nedir?

 
Artyom Trishkin :

Ve lütfen beni sizin için doğru gönderiye doğru kodu koymaya zorlamayın:

А теперь поглядите какой массив вы заполняете и по какому полю его сортируете. И, главное - зачем нужна эта сортировка? Какой в ней смысл?

sıfırdan başlayarak sipariş dizisini sıralama

örneğin, 20 siparişimiz varsa ve 18'i yanlışlıkla birkaç puan artı gitti ve hemen elimle kapattım

 
trader781 :

sıfırdan başlayarak sipariş dizisini sıralama

örneğin, 20 siparişimiz varsa ve 18'i yanlışlıkla birkaç puan artı gitti ve hemen elimle kapattım

Kesinlikle bilete göre sıralamaya ihtiyacınız varsa, 2 dizi yapmanız gerekecektir. Biri bir yapılar dizisidir ve ikincisi iki boyutludur, birinci boyutta sipariş biletini ve ikinci boyutta döngü sayacının indeksini, yapı dizisinde siparişle ilgili bilgilerin altında saklandığı indeksi içerir. Ve bu dizileri aynı anda tek bir döngüde doldurun.

Bu soruyu o kadar uzun zamandır çözmeye çalışıyorsun ki, ulaşmak istediğin hedefi artık hatırlamıyorum. Evet ve muhtemelen herkes.

Hala doğru hatırlıyorsam, listedeki numaraya göre belirlenen siparişler listesinden seçim yapmanız gerekiyor. Peki bununla ilgili sorun ne??? Basit bir tek boyutlu dizi yapın, biletleri oraya koyun, sıralayın ve ardından OrderSelect( dizi[gerekli] , SELECT_BY_TICKET) ve bu kadar... o zaman bu siparişle ne istersen yap.

 
Alexey Viktorov :

Kesinlikle bilete göre sıralamaya ihtiyacınız varsa, 2 dizi yapmanız gerekecektir. Biri bir yapılar dizisidir ve ikincisi iki boyutludur, birinci boyutta sipariş biletini ve ikinci boyutta döngü sayacının indeksini, yapı dizisinde siparişle ilgili bilgilerin altında saklandığı indeksi içerir. Ve bu dizileri aynı anda tek bir döngüde doldurun.

Bu soruyu o kadar uzun zamandır çözmeye çalışıyorsun ki, ulaşmak istediğin hedefi artık hatırlamıyorum. Evet ve muhtemelen herkes.

Hala doğru hatırlıyorsam, listedeki numaraya göre belirlenen siparişler listesinden seçim yapmanız gerekiyor. Peki bununla ilgili sorun ne??? Basit bir tek boyutlu dizi yapın, biletleri oraya koyun, sıralayın ve ardından OrderSelect( array[gerekli] , SELECT_BY_TICKET) ve bu kadar... o zaman bu siparişle ne istersen onu yap.

Ben de neye ihtiyacım olduğunu hatırlamıyorum. Ama yaptığı şey onun için iyi.

Pekala, ondan özellikle önce bir şey yazmasını istiyorum ve sonra yazılanlara dikkatlice bakmasını istiyorum, böylece kendisi bunun işe yaramayacağını anlar - işlevde başka bir yerel diziye ihtiyacınız var, ihtiyacınız olan sıralayın ve ancak bundan sonra genel diziyi sıralanan diziden doldurun.

 
Alexey Viktorov :

Kesinlikle bilete göre sıralamaya ihtiyacınız varsa, 2 dizi yapmanız gerekecektir. Biri bir yapılar dizisidir ve ikincisi iki boyutludur, birinci boyutta sipariş biletini ve ikinci boyutta döngü sayacının indeksini, yapı dizisinde siparişle ilgili bilgilerin altında saklandığı indeksi içerir. Ve bu dizileri aynı anda tek bir döngüde doldurun.

Bu soruyu o kadar uzun zamandır çözmeye çalışıyorsun ki, ulaşmak istediğin hedefi artık hatırlamıyorum. Evet ve muhtemelen herkes.

Hala doğru hatırlıyorsam, listedeki numaraya göre belirlenen siparişler listesinden seçim yapmanız gerekiyor. Peki bununla ilgili sorun ne??? Basit bir tek boyutlu dizi yapın, biletleri oraya koyun, sıralayın ve ardından OrderSelect( dizi[gerekli] , SELECT_BY_TICKET) ve bu kadar... o zaman bu siparişle ne istersen yap.

Hayır, bunu farklı şekilde yapmanın ve diziler olmadan yapmanın birçok yolu olduğunu anlıyorum. Yapılardan biri varsa neden 2.
 
trader781 :
Hayır, bunu farklı şekilde yapmanın ve diziler olmadan yapmanın birçok yolu olduğunu anlıyorum. Yapılardan biri varsa neden 2.

Çünkü basit bir dizi dizinin ilk boyutundaki değerlere göre sıralanıyor ve yapıların diziliminin nasıl sıralandığı hakkında bir fikrim yok.

Soru ilginç olsa da ... Şimdi bir dizi yapıyı sıralamayı deneyeceğim.

 
Alexey Viktorov :

Çünkü basit bir dizi dizinin ilk boyutundaki değerlere göre sıralanıyor ve yapıların diziliminin nasıl sıralandığı hakkında bir fikrim yok .

Soru ilginç olsa da ... Şimdi bir dizi yapıyı sıralamayı deneyeceğim.

Bunun neden bir yapı şeklinde olduğu hakkında hiçbir fikrim yok. mq programı tek dosyaya yazılır, diziyle çalışma tek kaydırmalı kaydırmada gerçekleşir ve tek ekrana sığar. Spor adına bu durumda yapının anlamı nedir?
 
Alexey Viktorov :

Çünkü basit bir dizi, dizinin ilk boyutundaki değerlere göre sıralanıyor ve yapıların diziliminin nasıl sıralandığı hakkında hiçbir fikrim yok.

Soru ilginç olsa da ... Şimdi bir dizi yapıyı sıralamayı deneyeceğim.

yani ne olduğu ve neyle yendiği hakkında hiçbir fikrim yok

ama bu konu açıldığına göre çöpe atmak saçma. Bir de sınıf dizileri var.

 
Vitaly Muzichenko :
Bunun neden bir yapı biçiminde olduğu hakkında hiçbir fikrim yok. mq programı tek dosyaya yazılır, diziyle çalışma tek kaydırmalı kaydırmada gerçekleşir ve tek ekrana sığar. Spor adına bu durumda yapının anlamı nedir?

Evet, her şeyi spor ilgisi adına yazıyoruz. İlk önce neyin ve nasıl çalıştığını anlarız ve ancak o zaman nasıl daha verimli yazılacağını anlamaya başlarız.


Bir dizi yapıyı sıralamaya gelince: beklediğim gibi deney başarısız oldu. Derleme sırasında derleyici " ifadenin hiçbir etkisi yok " dedi.