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

 
Andrey Barinov :

Bu şekilde derlenir:


Teşekkür ederim. Bir düzine derleme hatasını düzeltmenin, çalışan mql4 kodunu bir mql5 göstergesine dönüştüreceğini saf bir şekilde düşündüm)

Günün maksimumunu, minimumunu göstermek istemiyor. Hedeften ne kadar uzakta?

 
bij :

Teşekkür ederim. Bir düzine derleme hatasını düzeltmenin, çalışan mql4 kodunu bir mql5 göstergesine dönüştüreceğini saf bir şekilde düşündüm)

Günün maksimum minimumunu göstermek istemiyor. Hedeften ne kadar uzakta?

Bilmiyorum :)

ArraySetAsSeries kullanarak OnCalculate'in en başında arabellek dizilerini genişletmeyi deneyin

 
bij :

Teşekkür ederim. Bir düzine derleme hatasını düzeltmenin, çalışan mql4 kodunu bir mql5 göstergesine dönüştüreceğini saf bir şekilde düşündüm)

Günün maksimumunu, minimumunu göstermek istemiyor. Hedeften ne kadar uzakta?

İşte sadece günün maksimum ve minimumunu göstermek için çok sayıda kod satırı ???
 
Alexey Viktorov :
İşte sadece günün maksimum ve minimumunu göstermek için çok sayıda kod satırı ???
Evet, günün kapanışı da var ama bu sadece son gün değil, tarihte de var. Zorluk budur.
 
bij :
Evet, günün kapanışı da var ama bu sadece son gün değil, tarihte de var. Zorluk budur.

Bu senin kodun mu? Yoksa sipariş üzerine mi yazıldı?

MT4'te nasıl göründüğüne dair bir resim göster?

 
Alexey Viktorov :

Bu senin kodun mu? Yoksa sipariş üzerine mi yazıldı?

MT4'te nasıl göründüğüne dair bir resim göster?

Ağ göstergesi. MT4 elimde değil, kelimelerle söyleyeceğim. Her günün başlangıcından sonuna kadar hatlar, günün Yüksek, Düşük ve Kapanış fiyatlarında. Ancak günün kapanış fiyatına bir satır yerine, barın 21:00'deki kapanış fiyatına bir satır koymak istiyorum.

Belki, gerçekten, bu fanteziden daha kolay yapılabilir.

 

Aynı anda 4 pozisyonu kapatıyorum, art arda kayıpları hesaplama işlevinde onları bir için nasıl sayabilirim?

Kapanış, kayma nedeniyle aynı fiyatta olmayabilir ve zaman muhtemelen farklıdır

Teşebbüs:

 int CountLOS()
  {
   double priceold= 0 ;
   datetime datold;
   int count= 0 ;
   for ( int trade= OrdersHistoryTotal ()- 1 ;trade>= 0 ; trade--)
     {
       OrderSelect (trade, SELECT_BY_POS , MODE_HISTORY );
       if ( OrderSymbol ()== Symbol ())
        {
         if ( OrderType ()== OP_BUY || OrderType ()== OP_SELL )
           {
             if ( OrderMagicNumber ()==_MagicNumber)
              {
               if ( OrderProfit ()<= 0 &&datold != OrderCloseTime ()) {count++; datold = OrderCloseTime ();}
               //if(OrderProfit()<=0&&priceold !=OrderClosePrice()) {count++; priceold =OrderClosePrice();}
               else    break ;
              }
           }
        }
     }
   return (count);
  }
 
lil_lil :

Aynı anda 4 pozisyonu kapatıyorum, art arda kayıpları hesaplama işlevinde onları bir için nasıl sayabilirim?

Kapanış, kayma nedeniyle aynı fiyatta olmayabilir ve zaman muhtemelen farklıdır

Kayma nedeniyle fiyat farklıdır, zaman da farklıdır - biri saniyenin sonunda, diğeri bir sonrakinin başında kapanır. Kapanış sırasında sipariş biletlerini hatırlamaya çalışın. Bunları bir dosyaya yazabilirsiniz...

 
lil_lil :

Aynı anda 4 pozisyonu kapatıyorum, art arda kayıpları hesaplama işlevinde onları bir için nasıl sayabilirim?

Kapanış, kayma nedeniyle aynı fiyatta olmayabilir ve zaman muhtemelen farklıdır

Teşebbüs:

Son kapatılanlar arasında dolaşıyorum. Son kapatılanın eksi varsa, tüm kapalı olanlara 120 saniye (2 dakika) bakarım ve toplam karı hesaplarım

 
lil_lil :

Aynı anda 4 pozisyonu kapatıyorum, art arda kayıpları hesaplama işlevinde onları bir için nasıl sayabilirim?

Kapanış, kayma nedeniyle aynı fiyatta olmayabilir ve zaman muhtemelen farklıdır

Teşebbüs:

Bunun gibi bir şey:

 datetime _oct= 0 ,time= 0 ,_pt= 0 ;
 int _cnt= 0 ;
   for ( int i= OrdersHistoryTotal ()- 1 ; i>= 0 ; i--) {
   if ( OrderSelect (i, SELECT_BY_POS , MODE_HISTORY )) {
     if ( OrderSymbol ()==symb && OrderMagicNumber ()==mg) {
     int OrdersType= OrderType ();
     // BUY && SELL
     if (OrdersType<= 1 ) {
       CopyTime ( OrderSymbol (), PERIOD_D1 , 0 , 1 ,itime);
       if (( OrderCloseTime ()>=itime[ 0 ] && OrderCloseTime ()<itime[ 0 ]+ 86400 )) {
         _Get.Hist.BS._ProfitDaily+= OrderProfit ()+ OrderCommission ()+ OrderSwap (); // Profit за сегодня
       }
       // 120 секунд разницы между закрытием первой и последней в сетке
       _oct= OrderCloseTime ();
       if (_cnt== 0 && _oct!= 0 ) time=_oct;
         if (_oct+ 120 >=time) {
          _Get.Hist.BS._ProfitOldClose+= OrderProfit ()+ OrderSwap ()+ OrderCommission (); // Profit последнего трейда
          _cnt++;
        }
     }
  }}}