Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1126

 
la mia domanda è se il mio EA è sul grafico di poundbucks e voglio che veda una linea orizzontale dal grafico di eurobucks questo non funziona?
 
Aleksandr Egorov:
la mia domanda è se il mio EA è sul grafico GBP e voglio che veda una linea orizzontale dal grafico EUR questo non funziona ?

Notate il primo parametro della funzione

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

È presente in tutte le funzioni di lavoro con oggetti grafici.

Usando l'identificatore corretto potete facilmente ottenere le proprietà dell'oggetto da qualsiasi grafico.

Документация по MQL5: Графические объекты / ObjectName
Документация по MQL5: Графические объекты / ObjectName
  • www.mql5.com
Функция использует синхронный вызов – это означает, что функция дожидается выполнения всех команд, которые были помещены в очередь графика перед её вызовом, и поэтому данная функция может быть затратной по времени. Нужно иметь это обстоятельство в виду...
 
Bene lungo è m5 ecc 0 grafico corrente, e String Sumbol come?
 
Aleksandr Egorov:
il lungo è il grafico corrente m5 e tg 0, ma la stringa sumbol come? ho bisogno sulla sterlina dal grafico dell'euro forse qualcosa non capisco

No, nessun timeframe - hai bisogno di un ID grafico:ChartID

Una delle opzioni: eseguire uno script sul grafico con la linea, che stampaChartID, quindi è possibile accedere alla proprietà della linea da un altro grafico. Per esempio, se è una linea orizzontale, allora attraversoObjectGetDouble

 
Vladimir Karputov:

No, nessun timeframe - hai bisogno di un ID grafico:ChartID

Una delle opzioni: sul grafico con la linea, esegui lo script che stampaChartID, poi puoi accedere alla proprietà della linea da un altro grafico. Per esempio, se è una linea orizzontale, allora attraverso ObjectGetDoubl si ringrazia

grazie

 
Aleksandr Egorov:

grazie

C'è un'altra opzione: hai solo bisogno di conoscere il nome dell'oggetto grafico e il tipo (hai bisogno del nome per cercare tra tutti i grafici, e il tipo per trovare esattamente l'oggetto giusto) ...

 
Aleksandr Egorov:

grazie

Variante #2: imposta il nome, il tipo di oggetto e in quale finestra cercarlo ("0" - nella finestra principale). La ricerca viene eseguita in OnInit e se l'oggetto viene trovato, salviamo l'identificatore del grafico nella variabile m_obj_chart_id.

//+------------------------------------------------------------------+
//|                                    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()
  {
//---

  }
//+------------------------------------------------------------------+
 
Se piazzo ordini a mercato(TRADE_ACTION_DEAL) con livelli di Stop Loss e Take Profit specificati, ma il broker ha il divieto di impostare ordini con SL o TP, l'ordine sarà cancellato o impostato con SL e TP nulli?
 
Vladimir Karputov:

Variante #2: specificare il nome, il tipo di oggetto e in quale finestra cercarlo ("0" - nella finestra principale). La ricerca viene eseguita in OnInit e se l'oggetto viene trovato, salviamo l'identificatore del grafico nella variabile m_obj_chart_id.

Grazie ancora di più

 

Forum sul trading, sistemi di trading automatico e test di strategia

FAQ da principianti MQL5 MT5 MetaTrader 5

Vladimir Karputov, 2019.08.31 08:16


E il tuo errore è nella formazione del prezzo di partenza:

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

Raccomando di fare il prezzo di partenza separatamente per gli ordini pendenti Stop e separatamente per quelli Limit.

Ciao Vladimir!

Per favore aiutatemi a modificare il prezzo di partenza dello script qui sotto:

//--- 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;
        }

Lo script dovrebbe piazzare ordini pendenti non basati su Ask e Bid, ma sull'altezza e il minimo della barra precedente (candela).

Sinceramente, Vladimir.