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

 
böyle bir soru, eğer danışmanım örneğin poundback grafiğindeyse ve onun eurobucks grafiğinden yatay bir çizgi görmesini istersem, böyle bir çip yuvarlanmaz mı?
 
Aleksandr Egorov :
böyle bir soru, eğer danışmanım örneğin poundback grafiğindeyse ve onun eurobucks grafiğinden yatay bir çizgi görmesini istersem, böyle bir çip yuvarlanmaz mı?

Fonksiyonun ilk parametresine dikkat edin

 string    ObjectName ( 
   long   chart_id,           // идентификатор графика 
   int    pos,                 // номер в списке объектов 
   int    sub_window=- 1 ,       // номер окна 
   int    type=- 1              // тип объекта 
   );

grafik nesnelerle çalışmak için tüm işlevlerde bulunur.

Doğru tanımlayıcıyı kullanarak herhangi bir grafikten bir nesnenin özelliklerini kolayca alabilirsiniz.

Документация по MQL5: Графические объекты / ObjectName
Документация по MQL5: Графические объекты / ObjectName
  • www.mql5.com
Функция использует синхронный вызов – это означает, что функция дожидается выполнения всех команд, которые были помещены в очередь графика перед её вызовом, и поэтому данная функция может быть затратной по времени. Нужно иметь это обстоятельство в виду...
 
peki, uzun m5'tir ve böylece 0 geçerli grafiktir, peki ya string toplamı? Euro grafiğinden sterlinle ilgili bir şeye ihtiyacım var, belki anlamıyorum
 
Aleksandr Egorov :
peki, uzun m5'tir ve böylece 0 geçerli grafiktir, peki ya string toplamı? Euro grafiğinden sterlinle ilgili bir şeye ihtiyacım var, belki anlamıyorum

Hayır, zaman aralığı yok - bir grafik kimliğine ihtiyacınız var: ChartID

Seçeneklerden biri: Çizginin çizildiği grafikte , ChartID'yi yazdıracak bir komut dosyası çalıştırın, ardından line özelliğine başka bir grafikten zaten erişebilirsiniz. Örneğin, yatay bir çizgiyse, ObjectGetDouble aracılığıyla

 
Vladimir Karputov :

Hayır, zaman aralığı yok - bir grafik kimliğine ihtiyacınız var: ChartID

Seçeneklerden biri: Çizginin çizildiği grafikte , ChartID'yi yazdıracak bir komut dosyası çalıştırın, ardından line özelliğine başka bir grafikten zaten erişebilirsiniz. Örneğin, yatay bir çizgi ise, ObjectGetDoubl aracılığıyla teşekkürler

Teşekkür ederim

 
Aleksandr Egorov :

Teşekkür ederim

Başka bir seçenek daha var: sadece grafik nesnesinin adını ve türünü bilmeniz gerekiyor (tüm çizelgelerde arama yapmak için ada ihtiyaç var ve istenen nesneyi doğru bir şekilde bulmak için türe ihtiyaç var) ...

 
Aleksandr Egorov :

Teşekkür ederim

Seçenek numarası 2: nesnenin adını, türünü ve hangi pencerede aranacağını ayarlayın ("0" - ana pencerede). Arama OnInit'te gerçekleştirilir ve nesne bulunursa, grafik tanımlayıcısını m_obj_chart_id değişkenine kaydederiz.

 //+------------------------------------------------------------------+
//|                                    Object from another chart.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property link        "http://wmua.ru/slesar/"
#property version    "1.00"
//--- input parameters
input string       InpObjName     = "Object Name" ;   // Object: Name
input ENUM_OBJECT InpObjType     = OBJ_HLINE ;       // Object: Type
input int          InpObjSubWindow= 0 ;               // Object: Window Index
//---
long      m_obj_chart_id=- 1 ;   // Object ChartID
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {

//--- variables for chart ID
   long currChart,prevChart= ChartFirst ();
   int i= 0 ,limit= 100 ;
   Print ( "ChartFirst =" , ChartSymbol (prevChart), " ID =" ,prevChart);
   while (i<limit) // We have certainly not more than 100 open charts
     {
      currChart= ChartNext (prevChart); // Get the new chart ID by using the previous chart ID
       if (currChart< 0 )
         break ;           // Have reached the end of the chart list
       int total= ObjectsTotal (currChart,InpObjSubWindow,InpObjType);
       for ( int j= 0 ; j<total; j++)
         if ( ObjectName (currChart,j,InpObjSubWindow,InpObjType)==InpObjName)
           {
            m_obj_chart_id=currChart;
             break ;
           }
      prevChart=currChart; // let's save the current chart ID for the ChartNext()
      i++; // Do not forget to increase the counter
     }
//---
   if (m_obj_chart_id==- 1 )
       return ( INIT_FAILED );
   else
       Print ( "Object Name " ,InpObjName, " found on chart " ,m_obj_chart_id);
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---

  }
//+------------------------------------------------------------------+
 
Belirtilen Zarar Durdur ve Kâr Al seviyelerine sahip piyasa emirleri ( TRADE_ACTION_DEAL ) verirseniz ve komisyoncu SL veya TP ile hemen emir verilmesini yasaklarsa, emir iptal edilecek veya sıfırlanmış SL ve TP değerleri ile mi verilecek?
 
Vladimir Karputov :

Seçenek numarası 2: nesnenin adını, türünü ve hangi pencerede aranacağını ayarlayın ("0" - ana pencerede). Arama OnInit'te gerçekleştirilir ve nesne bulunursa, grafik tanımlayıcısını m_obj_chart_id değişkenine kaydederiz.

daha da teşekkür ederim

 

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

Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5

Vladimir Karputov , 2019.08.31 08:16


Ve başlangıç fiyatının oluşumundaki hatanız:

 //--- start work
   double start_price_ask=m_symbol.Ask()-ExtUpGap;
   double start_price_bid=m_symbol.Bid()+ExtDownGap;

Başlangıç fiyatını Stop ve Limit bekleyen emirler için ayrı ayrı yapmanızı öneririm.

Merhaba Vladimir!

Aşağıda verilen komut dosyasının başlangıcını değiştirmeye yardımcı olun:

 //--- start work


   double start_price_ask= 0.0 ;
   double start_price_bid= 0.0 ;
   if (InpPending==stop)
     {
      start_price_ask=m_symbol.Ask()+ExtUpGap;
      start_price_bid=m_symbol.Bid()-ExtDownGap;
     }
   else
       if (InpPending==limit)
        {
         start_price_ask=m_symbol.Ask()-ExtUpGap;
         start_price_bid=m_symbol.Bid()+ExtDownGap;
        }

Komut dosyasının, talep ve tekliften değil, önceki çubuğun (mum) en yüksek ve en düşük seviyesinden bekleyen emirleri ayarlaması gerekir.

Saygılarımla, Vladimir.