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

 
wishmast :

OrdersTotal() işleviyle siparişleri sıralarken neden -1 yazdıklarını söyleyin.

Örnek: for (i=OrdersTotal()-1 ;i>=0; i--)

neden sadece OrdersTotal() değil?

Bu fonksiyondaki emir sayısı 0'dan mı yoksa 1'den mi başlıyor? Yani, bir sipariş varsa, OrdersTotal() 0'a mı yoksa 1'e mi eşit?

sıfırdan hesap
 
wishmast :

OrdersTotal() işleviyle siparişleri sıralarken neden -1 yazdıklarını söyleyin.

Örnek: for (i=OrdersTotal()-1 ;i>=0; i--)

neden sadece OrdersTotal() değil?

Bu fonksiyondaki emir sayısı 0'dan mı yoksa 1'den mi başlıyor? Yani, bir sipariş varsa, OrdersTotal() 0'a mı yoksa 1'e mi eşit?

OrdersTotal() miktarı gösterir, yani bir sipariş varsa, OrdersTotal() bire eşit olacaktır, ancak sipariş listesinde rapor sıfırdan başlar.

0 - ilk sipariş

1 - ikinci sıra

2 - üçüncü

vb.

Bu nedenle, numaralandırmaya listenin sonundan başlarsak, toplam OrdersTotal() sipariş sayısından bir çıkarmamız gerekir.

 
Sergey Gritsay :

OrdersTotal() miktarı gösterir, yani bir sipariş varsa, OrdersTotal() bire eşit olacaktır, ancak sipariş listesinde rapor sıfırdan başlar.

0 - ilk sipariş

1 - ikinci sıra

2 - üçüncü

vb.

Bu nedenle, numaralandırmaya listenin sonundan başlarsak, toplam OrdersTotal() sipariş sayısından bir çıkarmamız gerekir.

ama ilk ifadede bir çıkarmazsak bu bir hata olmayacak, bir sıramız varsa iki iterasyon gerçekleşecek. Tek seferde yapılması gereken her şey yapılabiliyorken gerçekten iki tekrar yapmaya gerek yok mu yani -1, doğru mu anladım?
 
wishmast :
ama ilk ifadede bir çıkarmazsak bu bir hata olmayacak, bir sıramız varsa iki iterasyon gerçekleşecek. Tek seferde yapılması gereken her şey yapılabiliyorken gerçekten iki tekrar yapmaya gerek yok mu yani -1, doğru mu anladım?
Evet doğru
 
Sergey Gritsay :
Evet doğru

Tam olarak doğru değil.

Önek azaltma kullanabilirsiniz.

for ( int i = OrdersTotal (); i >= 0 ; --i)
 
trader781 :
Madem bir sürü siparişimiz var, neden doğru olanı alıp hemen çekemiyoruz? (gerekli) ve onlarla ne istersen yap? örneğin sipariş (i-4)
Çünkü sadece MT4 test cihazında çalışacaktır. Veya yalnızca bir sembol ve bu danışmandan yalnızca biri ile işlem yaparken.
 
Vitalie Postolache :
Çünkü sadece MT4 test cihazında çalışacaktır. Veya yalnızca bir sembol ve bu danışmandan yalnızca biri ile işlem yaparken.

Peki, düşünürseniz, danışman her çift için aynıdır, sadece hesap bakiyesi ortaktır (geçiş en son olacaktır)

filtre, danışman tarafından açılan piyasa türü koşulunu karşılayan tüm siparişlerden geçer - sembol eşleşirse

ne öyle değil mi

 
trader781 :

Peki, düşünürseniz, danışman her çift için aynıdır, sadece hesap bakiyesi ortaktır (geçiş en son olacaktır)

filtre, danışman tarafından açılan piyasa türü koşulunu karşılayan tüm siparişlerden geçer - sembol eşleşirse

ne öyle değil mi

Eh, neyin yanlış olduğunu zaten yukarıda açıkladınız. Yalnızca kendi siparişlerinizi sayın ve toplam sayı için dizi dizinlerini alın - boş hücreler içeren bir dizi elde edersiniz. Ve neden gerekli? Ve dizi boş değilse, o zaman "ekstra" alanlarda - gereksiz çöpler, hatalara yol açar, ancak paradan bahsediyoruz.
 
Vitalie Postolache :
Eh, neyin yanlış olduğunu zaten yukarıda açıkladınız. Yalnızca kendi siparişlerinizi sayın ve toplam sayı için dizi dizinlerini alın - boş hücreler içeren bir dizi elde edersiniz. Ve neden gerekli? Ve dizi boş değilse, o zaman "ekstra" alanlarda - gereksiz çöpler, hatalara yol açar, ancak paradan bahsediyoruz.

tamam hadi yapalım

struct myorder
{
int     Ticket;
double orderopenprice;
int    ordertype;
double profit;
double stoploss;
double   lot;
};

myorder orders[];

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


Sağ?

 
Durumu not edin: Hesaptaki ücretsiz fon miktarı yatırılan tutarın %50'sinden azsa, {action} MT5