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

 
EVGENII SHELIPOV # :

İyi günler Programcılar!!!!

Sorumu yeniden ifade etmeye çalışacağım ama biraz yeniden ifade edeceğim.

Uzman Danışman ızgarasında, sondan bir önceki siparişin biletini bulmanız gerekir. Maximum order biletinden -1 gibi bir çözüm işe yaramıyor belki strateji testerda işe yarar ama demo ve gerçek hesaplarda çalışmaz resim ekliyorum sebebi belli olur.

Sondan bir önceki siparişin biletini belirlemek için fonksiyon kodunu yazdım. Mantığı şudur: griddeki tüm açık emirleri yineledikten sonra, onu takip eden en yüksek olanı buluyoruz ve gerekli emir bileti var.

Ancak programlamamın seviyesi yüksek değil ve kodun içine bir tür hata girdi. Bu işlevin sonucu en az bilettir. Bu iki işlev, maksimum bilet ve sondan bir önceki bilettir. Maks. bilet sorunsuz çalışıyor.

Sizden ne bir hata olduğunu sormanızı rica ediyorum. Teşekkür ederim.

Bu, bir maksimum bilete ve maksimum açılış süresine ihtiyacınız olmadığını, ancak Alış emirleri için minimum açılış fiyatını ve Satış emirleri için maksimum açılış fiyatını seçmeniz gerektiğini söyleyen ikinci anlık görüntüdür.
 
Alexey Viktorov # :
Bu, bir maksimum bilete ve maksimum açılış süresine ihtiyacınız olmadığını, ancak Alış emirleri için minimum açılış fiyatını ve Satış emirleri için maksimum açılış fiyatını seçmeniz gerektiğini söyleyen ikinci anlık görüntüdür.

Aleksey bu fiyatları belirleyen fonksiyonlar bende var bunlar üzerinden istediğiniz bilete nasıl ulaşılır açıklarmısınız???

 
Alexey Viktorov # :
Bu, bir maksimum bilete ve maksimum açılış süresine ihtiyacınız olmadığını, ancak Alış emirleri için minimum açılış fiyatını ve Satış emirleri için maksimum açılış fiyatını seçmeniz gerektiğini söyleyen ikinci anlık görüntüdür.
 //+----------------------------------------------------------------------------+
//| Определение цены открытия макс лота                                        |
//+----------------------------------------------------------------------------+
double PriceMaxOrder()
  {
   double max_price = 0 ;
   max_ticket = 0 ;
     {
       for ( int cnt = OrdersTotal () - 1 ; cnt >= 0 ; cnt--)
        {
         if ( OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES))
           {
             if (OrderSymbol() == Symbol () && OrderMagicNumber() == Magic)
              {
               if (OrderType() == OP_BUY || OrderType() == OP_SELL)
                 {
                   if (OrderTicket() > max_ticket)
                    {
                     max_ticket = OrderTicket();
                     max_price = OrderOpenPrice();
                    }
                 }
              }
           }
        }
     }
   return (max_price);
  }
 
EVGENII SHELIPOV # :

Aleksey bu fiyatları belirleyen fonksiyonlar bende var bunlar üzerinden istediğiniz bilete nasıl ulaşılır açıklarmısınız???

Bunun gibi

 //+------------------------------------------------------------------+
//| Расчет тикета нижнего ордера BUY в сетке                         |
//+------------------------------------------------------------------+
int GetTicketMaxOrder( int Magic) // int Magic вставлен только для компиляции без ошибок.
 {
   int total = OrdersTotal (),
      my_ticket = 0 ;
   double minPrice = DBL_MAX ;
   for ( int cnt = total; cnt-- > 0 ;)
   {
     if ( OrderSelect (cnt, SELECT_BY_POS) && OrderSymbol() == Symbol () && OrderMagicNumber() == Magic)
     {
       if (OrderType() == OP_BUY)
       {
         if (OrderOpenPrice() < minPrice)
          my_ticket = OrderTicket();
       }
     }
   }
   return (my_ticket);
 }
/*****************************End program****************************/
 
Alexey Viktorov # :

Bunun gibi

Teşekkürler Alexey!!! Ancak, işlevin özüne girmeden önce, açıklığa kavuşturmak istedim: Bu işlev, sondan bir önceki siparişin biletini seçmek için mi?

 
EVGENII SHELIPOV # :

Teşekkürler Alexey!!! Ancak, işlevin özüne girmeden önce, açıklığa kavuşturmak istedim: Bu işlev, sondan bir önceki siparişin biletini seçmek için mi?

Hayır, bu en düşük fiyata sahip SATIN AL emri biletini bulur. O zaman Makar'ın ya da kendisinin antrenman yapmasına izin verin.

 
Alexey Viktorov # :

Hayır, bu en düşük fiyata sahip SATIN AL emri biletini bulur. O zaman Makar'ın ya da kendisinin antrenman yapmasına izin verin.

Evet, Alexei ikinci gün aranızda pek de yeterli bir insan olmadığını hissediyor. Minimum maksimum bileti hesaplama fonksiyonları bir Kalaşnikof saldırı tüfeği gibi kusursuz çalışıyor, kimseye sormadım ama ikinci gün beni bir engel için açıyorlar !!!

 //+----------------------------------------------------------------------------+
//| Расчет тикета максимального ордера в сетке                                 |
//+----------------------------------------------------------------------------+
int GetTicketMaxOrder()
  {
   max_ticket = 0 ;
     {
       for ( int cnt = OrdersTotal () - 1 ; cnt >= 0 ; cnt--)
        {
         if ( OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES))
           {
             if (OrderSymbol() == Symbol () && OrderMagicNumber() == Magic)
              {
               if (OrderType() == OP_BUY || OrderType() == OP_SELL)
                 {
                   if (OrderTicket() > max_ticket)
                     max_ticket = OrderTicket();
                 }
              }
           }
        }
     }
   return (max_ticket);
  }
//+----------------------------------------------------------------------------+
//| Расчет тикета минимального ордера в сетке                                  |
//+----------------------------------------------------------------------------+
int GetTicketMinOrder()
  {
   min_ticket= INT_MAX ;
     {
       for ( int cnt = OrdersTotal () - 1 ; cnt >= 0 ; cnt--)
        {
         if ( OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES))
           {
             if (OrderSymbol() == Symbol () && OrderMagicNumber() == Magic)
              {
               if (OrderType() == OP_BUY || OrderType() == OP_SELL)
                 {
                   if (OrderTicket() < min_ticket)
                     min_ticket = OrderTicket();

                 }
              }
           }
        }
     }
   return (min_ticket);
  }

Neyse, ilgin için teşekkürler.

 
EVGENII SHELIPOV # :

Evet, Alexei ikinci gün aranızda pek de yeterli bir insan olmadığını hissediyor. Min max bileti hesaplama fonksiyonları bir Kalaşnikof saldırı tüfeği gibi kusursuz çalışıyor, kimseye sormadım ama ikinci gün beni bir engel için açıyorlar !!!

Neyse, ilgin için teşekkürler.

bu resimde mi

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

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

EVGENII ŞELIPOV , 2021.11.07 06:43

İyi günler Programcılar!!!!

Sorumu yeniden ifade etmeye çalışacağım ama biraz yeniden ifade edeceğim.

Uzman Danışman ızgarasında, sondan bir önceki siparişin biletini bulmanız gerekir. Maximum order biletinden -1 gibi bir çözüm işe yaramıyor belki strateji testerda işe yarar ama demo ve gerçek hesaplarda çalışmaz resim ekliyorum sebebi belli olur.

Sondan bir önceki siparişin biletini belirlemek için fonksiyon kodunu yazdım. Mantığı şudur: griddeki tüm açık emirleri yineledikten sonra, onu takip eden en yüksek olanı buluyoruz ve gerekli emir bileti var.

Ancak programlamamın seviyesi yüksek değil ve kodun içine bir tür hata girdi. Bu işlevin sonucu en az bilettir. Bu iki işlev, maksimum bilet ve sondan bir önceki bilettir. Maks. bilet sorunsuz çalışıyor.

 //+----------------------------------------------------------------------------+
//| Расчет тикета предпоследнего ордера в сетке                                |
//+----------------------------------------------------------------------------+
int GetTicketPenultimateOrder()
  {
   penultimate_ticket = 0 ;
     {
       for ( int cnt = OrdersTotal () - 1 ; cnt >= 0 ; cnt--)
        {
         if ( OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES))
           {
             if (OrderSymbol() == Symbol () && OrderMagicNumber() == Magic)
              {
               if (OrderType() == OP_BUY || OrderType() == OP_SELL)
                 {
                   if (OrderTicket() > penultimate_ticket && penultimate_ticket != GetTicketMaxOrder())
                     penultimate_ticket = OrderTicket();
                 }
              }
           }
        }
     }
   return (penultimate_ticket);
  }
 //+----------------------------------------------------------------------------+
//| Расчет тикета максимального ордера в сетке                                 |
//+----------------------------------------------------------------------------+
int GetTicketMaxOrder()
  {
   max_ticket = 0 ;
     {
       for ( int cnt = OrdersTotal () - 1 ; cnt >= 0 ; cnt--)
        {
         if ( OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES))
           {
             if (OrderSymbol() == Symbol () && OrderMagicNumber() == Magic)
              {
               if (OrderType() == OP_BUY || OrderType() == OP_SELL)
                 {
                   if (OrderTicket() > max_ticket)
                     max_ticket = OrderTicket();
                 }
              }
           }
        }
     }
   return (max_ticket);
  }

Sizden ne bir hata olduğunu sormanızı rica ediyorum. Teşekkür ederim.


oklar maksimum bileti gösteriyor mu? Burada alttan ikinci sipariş fiyatını gösteren oklar görüyorum. Sorun nedir?
 
Alexey Viktorov # :

bu resimde mi


oklar maksimum bileti gösteriyor mu? Burada alttan ikinci sipariş fiyatını gösteren oklar görüyorum. Sorun nedir?

Alex resmi büyüt lütfen

 
EVGENII SHELIPOV # :

Alex resmi büyüt lütfen

Bu SON sipariştir.