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

 
MakarFX # :
Peki neye ihtiyacın var?

Çoktan yaptım. Belki çok çirkin değildir. Beni düzelt. Önce sonuncusunun fiyatını, sonra sondan bir önceki fiyatı hesaplıyorum.
Ama başka bir sorun var. Kontrol köşedeki tüm Yorumlar olduğundan, kullanılmadığı takdirde her zaman DBL_MAX'a eşit değer askıda kalır. Nasıl kaldırılır, kırmızıyla vurgulanır)

 double MinOpenSell() // ищу ордер по самой низкой цене.
{
   double oldticket, UpPrice = DBL_MAX ;
   
   for ( int cnt= OrdersTotal (); cnt>= 0 ; cnt--)
   {
       if ( OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES))
      {
         if (OrderSymbol() == Symbol () && OrderMagicNumber() == Magic && OrderType() == OP_SELL)
         {
            oldticket = OrderOpenPrice();
             if ( oldticket < UpPrice)
            {
               UpPrice = oldticket;
            }
         }
      }
   }
   return (UpPrice);
}
double FindPenultSellPrice() // а тут ищу предпоследний)
  {
   double oldticket, UpPrice = DBL_MAX ;
   
   for ( int cnt= OrdersTotal (); cnt>= 0 ; cnt--)
   {
       if ( OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES))
      {
         if (OrderSymbol() == Symbol () && OrderMagicNumber() == Magic && OrderType() == OP_SELL)
         {
            oldticket = OrderOpenPrice();
             if ( oldticket < UpPrice && MinOpenSell()< oldticket)
            {
               UpPrice = oldticket;
            }
         }
      }
   }
   return (UpPrice);
}
 
makssub # :

Kontrol köşedeki tüm Yorumlar olduğundan, kullanılmadığı takdirde her zaman DBL_MAX'a eşit değer askıda kalır. Nasıl kaldırılır, kırmızıyla vurgulanır)

bir yere koymak

 if (price== DBL_MAX ) price= 0 ;

veya doğrudan yorumlarda yapabilirsiniz:

(price== DBL_MAX )? "нет ордера" : DoubleToString (price, _Point )
 
Taras Slobodyanik # :

bir yere koymak

veya doğrudan yorumlarda yapabilirsiniz:

İlk seçeneği beğendim, nasıl doğru yapılacağına dair bir örnek verebilirsiniz.

 
makssub # :

İlk seçeneği beğendim, nasıl doğru yapılacağına dair bir örnek verebilirsiniz.

 double com_price= 0 ;

if (UpPrice== DBL_MAX ) com_price= 0 ;
else com_price=UpPrice;

Comment (com_price);
 
MakarFX # :

teşekkürler ama hala nasıl bağlayacağımı anlamadım) çalışmama bir eleştiri gelmeyecek mi?

 double FindPenultSellPrice() // а тут ищу предпоследний)
  {
   double oldticket, UpPrice = DBL_MAX ;
   
   for ( int cnt= OrdersTotal (); cnt>= 0 ; cnt--)
   {
       if ( OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES))
      {
         if (OrderSymbol() == Symbol () && OrderMagicNumber() == Magic && OrderType() == OP_SELL)
         {
            oldticket = OrderOpenPrice();
             if ( oldticket < UpPrice && MinOpenSell()< oldticket)
            {
               UpPrice = oldticket;
            }
         }
      }
   }
   return (UpPrice);
}
 
makssub # :

teşekkürler ama hala nasıl bağlayacağımı anlamadım) çalışmama bir eleştiri gelmeyecek mi?

yorumunu göster

 
MakarFX # :

yorumunu göster

Daha önce fotoğrafları yayınlamıştım. Ve yorumum fonksiyon içinde bildirilmedi.

 Comment ( " Количество открытых ордеров: " , CountTrades(), "\n" " Количество открытых ордеров Sell: " , FindLastSell(), "\n" " Количество открытых ордеров Buy: " , FindLastBuy(),
                 "\n" " Общее количество открытых ордеров: " , OrdersTotal (), "\n" " Профит первого ордера Sell: " , FirstProfitSell(),
                 "\n" " Профит первого ордера Buy: " ,FirstProfitBuy(), "\n" " Предпоследний ордер Buy: " ,FindPenultBuyPrice(), "\n" " Предпоследний ордер Sell: " ,FindPenultSellPrice());  
 
makssub # :

Daha önce fotoğrafları yayınlamıştım. Ve yorumum fonksiyon içinde bildirilmedi.

 double com_price= 0 ;
if (FindPenultSellPrice()== DBL_MAX ) com_price= 0 ;
else com_price=FindPenultSellPrice();
Comment ( " Количество открытых ордеров: " , CountTrades(), "\n Количество открытых ордеров Sell: " , FindLastSell(),
       "\n Количество открытых ордеров Buy: " , FindLastBuy(), "\n Общее количество открытых ордеров: " , OrdersTotal (),
       "\n Профит первого ордера Sell: " , FirstProfitSell(), "\n Профит первого ордера Buy: " ,FirstProfitBuy(),
       "\n Предпоследний ордер Buy: " ,FindPenultBuyPrice(), "\n Предпоследний ордер Sell: " ,com_price);  
 

Hepinize iyi günler!!!

Grup emirlerinin Takip Eden Durdurma için bir Uzman Danışman için emirler tablosunun ortalama fiyatından bir kod yazıyorum.

Günlükte hata yok, ancak trol de çalışmıyor. İşte kod, lütfen bana hatanın nerede olduğunu söyleyin. Teşekkürler!!!

 //+----------------------------------------------------------------------------+
//| Модификация групповых ордеров                                              |
//+----------------------------------------------------------------------------+
void ModifyOrders( int otype)
{
     double avg_price; 
    order_lots = 0 ;
    price = 0 ;
   
     for ( int i = OrdersTotal ()- 1 ; i>= 0 ; i--)
    {
       if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES))
       {
         if (OrderSymbol() == Symbol () && OrderMagicNumber() == Magic && OrderType() == otype)
         {
            price += OrderOpenPrice() * OrderLots();
            order_lots += OrderLots() ;
         }
       }
    }
    avg_price = NormalizeDouble (price / order_lots, Digits );
     {
     ObjectDelete ( 0 , "AveragePriceLine" );
     ObjectCreate ( 0 , "AveragePriceLine" , OBJ_HLINE , 0 , 0 , avg_price);
     ObjectSet( "AveragePriceLine" , OBJPROP_COLOR , Magenta);
     }
     if (otype == OP_BUY) tp = NormalizeDouble (avg_price + TakeProfitGroupOrder* Point , Digits );
     if (otype == OP_SELL) tp = NormalizeDouble (avg_price - TakeProfitGroupOrder* Point , Digits );
     if ((otype == OP_BUY || otype == OP_SELL) && (Drawdown > DrawdownClosingTakeprofitZero)) 
    tp = NormalizeDouble (avg_price, Digits );
     for ( int i = OrdersTotal ()- 1 ; i>= 0 ; i--) 
    {
       if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES))
       {
           if (OrderSymbol() == Symbol () && OrderMagicNumber() == Magic && OrderType() == otype)
           {
               if (OrderModify(OrderTicket(), OrderOpenPrice(), 0 , tp, 0 ))
                   Print ( "Ордера успешно модифицированы!" );
                 else Print ( "Ошибка модификации ордеров!" );
                TrailingGroupOrder();
           }
       }
    }
}
//+----------------------------------------------------------------------------+
//| Трейлинг стоп групповых ордеров                                            |
//+----------------------------------------------------------------------------+
void TrailingGroupOrder()
{
    price += OrderOpenPrice() * OrderLots();
    order_lots += OrderLots() ;
     for ( int i = OrdersTotal ()- 1 ; i>= 0 ; i--)
    {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES))
       {
       if (OrderType() == OP_BUY && Bid - NormalizeDouble (price / order_lots, Digits ) > TrailingStopGroupOrder)
        {
         if (Bid - NormalizeDouble (price / order_lots, Digits ) > TrailingStopGroupOrder* Point || OrderStopLoss() == 0 )
         {
         if (OrderStopLoss() < Bid - (TrailingStep + TrailingStopGroupOrder )* Point || OrderStopLoss() == 0 )
          {
           if (!OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble (Bid - TrailingStopGroupOrder* Point , Digits ), tp, 0 ))
                     Print ( "Ошибка модификации групповых ордеров на покупку!" );
          }
         }
        }
         if (OrderType() == OP_SELL && NormalizeDouble (price / order_lots, Digits )- Ask > TrailingStopGroupOrder* Point )
         {
         if ( NormalizeDouble (price / order_lots, Digits )- Ask > TrailingStopGroupOrder* Point || OrderStopLoss() == 0 )
           {
             if (OrderStopLoss() > Ask + (TrailingStep + TrailingStopGroupOrder)* Point || OrderStopLoss() == 0 )
              {
               if (!OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble (Ask + TrailingStopGroupOrder* Point , Digits ), tp, 0 ))
                     Print ( "Ошибка модификации групповых ордеров на продажу!" );
              }
           }
         }
      } 
    }
}
 
Tünaydın! Expert Advisor ayarları penceresinde dili değiştirmek için mql4 koduna nereden bakabilirim?