Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 899

 
lil_lil :
Teşekkür ederim.

Veya sadece iHighest() - zaten en son sürümlerde.

 
Ihor Herasko :

Netleştirme türündeki hesaplarda, pozisyon ve anlaşma farklı kavramlardır. Şimdi konum seçimini gösterdiniz.

Ve bu pozisyona dahil olan bir anlaşma nasıl seçilir?

 long ID= PositionGetInteger ( POSITION_IDENTIFIER );

 
Sile Si :

Ve bu pozisyona dahil olan bir anlaşma nasıl seçilir?



 bool    HistoryDealSelect (
   ulong   ticket     // тикет сделки
   );
Документация по MQL5: Торговые функции / HistoryDealSelect
Документация по MQL5: Торговые функции / HistoryDealSelect
  • www.mql5.com
Выбирает в истории сделку для дальнейших обращений к ней  через соответствующие функции. Возвращает true при успешном завершении функции. Возвращает false при неудачном завершении функции. Чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError(). Не следует путать между собой ордера, сделки и позиции. Каждая сделка...
 
Alexey Viktorov :


Teşekkürler, birkaç fırsat var, bu yüzden HistoryDealGetTicket() kullanmaya karar verdim.

Her şeyi yorumladım, lütfen anlamadığım yeri söyleyin. nerede hatalıyım?

 double Aver_Pr_nett()
  {
   double total_price_multiply_volume_sell   = 0.0 ;
   double total_volume_sell                  = 0.0 ;
   double net_price_sell_= 0.0 ;
   string symb= _Symbol ;
   int     total       = 0 ;   // 
   for ( int i= 0 ; i< PositionsTotal (); i++)
     {
       ulong pt= PositionGetTicket (i); //  тикет позиции
       long ID= PositionGetInteger ( POSITION_IDENTIFIER ); //id позиции
       if ( PositionGetString ( POSITION_SYMBOL )==symb && //символ позиции
       HistorySelect ( PositionGetInteger ( POSITION_TIME ), TimeCurrent ()+ 60 )) //промежуток времени для поиска сделок
        {
         total= HistoryDealsTotal (); //количество сделок
         
         for ( int i= 0 ; i<total; i++) // цикл по всем сделкам
           {
             ulong dt = HistoryDealGetTicket (i); //тикет сделки, возможно нужно использовать HistoryDealSelect()
             long did = HistoryDealGetInteger (dt, DEAL_POSITION_ID ); //id сделки
             ENUM_DEAL_ENTRY in_out= HistoryDealGetInteger (dt, DEAL_ENTRY ); //
             if (did==pt &&           //id сделки равно тикету позиции
            in_out== DEAL_ENTRY_IN ) //сделка открыла позицию либо добавила объём
              {
               if ( HistoryDealGetString (dt, DEAL_SYMBOL )==symb) //символ сделки равен текущему графику
                 { //дальше нахожу среднюю цену сделок
                  total_price_multiply_volume_sell+= HistoryDealGetDouble (dt, DEAL_PRICE )* HistoryDealGetDouble (dt, DEAL_VOLUME );
                  total_volume_sell+= HistoryDealGetDouble (dt, DEAL_VOLUME );
                   if (total_price_multiply_volume_sell!= 0 && total_volume_sell!= 0 )
                    {
                    net_price_sell_=total_price_multiply_volume_sell/total_volume_sell;
                    };
                 }
              }
           }
        }
     }
//---
   return (net_price_sell_);
  }

 
Sile Si :

Teşekkürler, birkaç fırsat var, bu yüzden HistoryDealGetTicket() kullanmaya karar verdim.

Her şeyi yorumladım, lütfen anlamadığım yeri söyleyin. nerede yanılıyorum?


çok yanılmışım Aceleyle, yanlış bağlantıyı verdim. Bir şey düşündüm ve ihtiyacınız olanı seçmedim.

İşte doğru bağlantı.

Документация по MQL5: Торговые функции / HistorySelectByPosition
Документация по MQL5: Торговые функции / HistorySelectByPosition
  • www.mql5.com
Не следует путать между собой ордера из торговой истории и действующие отложенные ордера, которые отображаются на вкладке "Торговля" в панели "Инструменты". Список ордеров, которые были отменены или привели к проведению торговой операции, можно посмотреть  в закладке "История" на панели "Инструменты" клиентского терминала. Функция...
 
Alexey Viktorov :

çok yanılmışım Aceleyle, yanlış bağlantıyı verdim. Bir şey düşündüm ve ihtiyacınız olanı seçmedim.

İşte doğru bağlantı.

Teşekkür ederim.

 
Ve göstergede, örneğin iAO, iDem, 2 nokta ile nasıl bir çizgi çizilir? ve X noktasındaki çizginin değerini al?
 
Сергей :
Ve göstergede, örneğin iAO, iDem, 2 nokta ile nasıl bir çizgi çizilir? ve X noktasındaki çizginin değerini al?

Her gösterge ya ana pencerede ya da bir alt pencerede çizilir. Bu, 1 numaralı adım anlamına gelir: Göstergenin çizildiği alt pencerenin numarasını bulun. Grafik İşlemlerine bakın.

Adım 2: Bir alt pencere numarası olduğunda, bir çizgi çizmek kolaydır. OBJ_TREND yardımına ve " TrendCreate " işlevinin parametrelerine bakın

 //+------------------------------------------------------------------+ 
//| Создает линию тренда по заданным координатам                     | 
//+------------------------------------------------------------------+ 
bool TrendCreate( const long             chart_ID= 0 ,         // ID графика 
                 const string           name= "TrendLine" ,   // имя линии 
                 const int              sub_window= 0 ,       // номер подокна 
                 datetime               time1= 0 ,           // время первой точки 
                 double                 price1= 0 ,           // цена первой точки 
                 datetime               time2= 0 ,           // время второй точки 
                 double                 price2= 0 ,           // цена второй точки 
                 const color            clr= clrRed ,         // цвет линии 
                 const ENUM_LINE_STYLE style= STYLE_SOLID , // стиль линии 
                 const int              width= 1 ,           // толщина линии 
                 const bool             back= false ,         // на заднем плане 
                 const bool             selection= true ,     // выделить для перемещений 
                 const bool             ray_left= false ,     // продолжение линии влево 
                 const bool             ray_right= false ,   // продолжение линии вправо 
                 const bool             hidden= true ,       // скрыт в списке объектов 
                 const long             z_order= 0 )         // приоритет на нажатие мышью 
  { 
 
Artyom Trishkin :

Veya sadece iHighest() - zaten en son sürümlerde.

Oh, anlıyorum, bu yeni-eski işlevler sonunda yardıma eklendi.

 

Şüphesiz, si'ye eklenen EA vtbr'yi değiştirir. T/P konumlarını enstrümanının "si" tırnaklarına yerleştirir

çok komik

vtbr'ye bir danışman eklerseniz, si'yi değiştirmez, yalnızca kendi enstrümanında çalışır

ppv

Bunun için herhangi bir açıklama var mı?

Bunun dışında kodda herhangi bir değişiklik yoktur:

   if (TakeProfit> 0 )
     {
     if (! RefreshRates ())
             return ;
       int total= PositionsTotal ();
       for ( int i=total- 1 ;i>= 0 ;i--)
        {
         if (m_position.SelectByIndex(i)) // selects the position by index for further access to its properties
           {
             if (m_position. Symbol ()== Symbol ())
              {
               //if(m_position.PositionType()==POSITION_TYPE_BUY)
               if ( PositionGetInteger ( POSITION_TYPE )== POSITION_TYPE_BUY )
                 {
                   if (m_symbol.NormalizePrice(Aver_Pr_sell_nett()+ExtTakeProfit)!=m_position.TakeProfit())
                    {
                     m_trade.PositionModify(m_position.Ticket(),
                                            m_position.StopLoss(),
                                            m_symbol.NormalizePrice(Aver_Pr_sell_nett()+ExtTakeProfit)
                                            );
                     Sleep ( 300 );

                    }
                 }
               //==//
               //if(m_position.PositionType()==POSITION_TYPE_SELL)
               else if ( PositionGetInteger ( POSITION_TYPE )== POSITION_TYPE_SELL )
                 {
                   if (m_symbol.NormalizePrice(Aver_Pr_sell_nett()-ExtTakeProfit)!=m_position.TakeProfit())
                    {
                       {
                        m_trade.PositionModify(m_position.Ticket(),
                                               m_position.StopLoss(),
                                               m_symbol.NormalizePrice(Aver_Pr_sell_nett()-ExtTakeProfit)
                                               );
                         Sleep ( 300 );
                       }
                    }
                 }
              }
           }
        }
     }