Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 741

 
psyman:

Per il prossimo codice, una storia in immagini:


Disconnesso la rete, aggiungendo un indicatore

Passo al prossimo grafico


y2 ha cambiato valore, torno indietro


y2 ha restituito il suo valore, ma il marcatore è contato dal valore "andato"! Faccio girare la rotella del mouse.

Il marcatore è di nuovo al suo posto!

Quando si passa al grafico adiacente, tutte le finestre inattive non vengono espanse a schermo intero. Cioè, sono più piccoli che nello stato attivo. Pertanto, gli oggetti ottengono coordinate più piccole dall'angolo superiore sinistro del grafico. Poi, quando si attiva la finestra, è necessario aspettare che il grafico venga aggiornato o aggiornarlo forzatamente. Questo viene fatto scorrendo la rotella di scorrimento.

 
psyman:

Per il prossimo codice, una storia in immagini:


Disconnesso la rete, aggiungendo un indicatore

Passo al prossimo grafico


y2 ha cambiato valore, torno indietro


y2 ha restituito il suo valore, ma il marcatore è contato dal valore "andato"! Faccio girare la rotella del mouse.

Il marcatore è di nuovo al suo posto!

potete scartareChartTimePriceToXY
e
stampare il testo semplice(OBJ_TEXT) + 1-3 barre nel futuro, sarà sempre dove vi serve)

 
Taras Slobodyanik:

potete scartareChartTimePriceToXY
e
stampare testo semplice(OBJ_TEXT) + 1-3 barre nel futuro, sarà sempre dove volete)

Solo se si disattiva lo spostamento della barra a destra, il testo sarà fuori dalla finestra.

L'idea è corretta, ma apparentemente l'esperienza è molto carente.

 
Alexey Viktorov:

Solo se si disattiva lo spostamento della barra a destra, il testo sarà fuori dalla finestra.

È una buona idea, ma probabilmente sei molto inesperto.

Beh, se vuoi che il marcatore sia a destra, puoi semplicemente prendere la barra più a destra del grafico e disegnarci sopra.

 

Buon pomeriggio.
Potreste consigliarmi come creare variabili di tipo globale in EA, in modo che questi dati non vengano cancellati quando si chiamano nuove funzioni?

Chiamare i dati variabili attraverso :

bool  GlobalVariableGet( string  "name", double "var"  ); // К примеру

Dove poi "var" può essere inserito nelle operazioni.

E sono creati con la funzione :

datetime  GlobalVariableSet( 
   string  name,      // имя 
   double  value      // устанавлимое значение 
   );

Sto solo cercando di capire tutto. Non ci sono esempi e non sono sicuro di come funzioneranno i dati se uno èdatetime e l'altro èbool? Nessun errore?

 
psyman:

Per il prossimo codice, una storia in immagini:

Disconnesso la rete, aggiungendo un indicatore

Passo al prossimo grafico

y2 ha cambiato valore, torno indietro

y2 ha restituito il suo valore, ma il marcatore è contato dal valore "andato"! Faccio girare la rotella del mouse.

Il marcatore è di nuovo al suo posto!

//+------------------------------------------------------------------+
//|                                              !_clr_indicator.mq5 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window
#property indicator_plots 0

string objname="Bid";
input color Bid_color = clrCrimson;

//+------------------------------------------------------------------+
int OnInit()
  {
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
void OnDeinit(const int reason) 
   { 
   ObjectDelete(0,objname);
   } 
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
   SetTXT();
   return(rates_total);
}

//+------------------------------------------------------------------+
void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam) 
{ 
   if(id==CHARTEVENT_CHART_CHANGE) 
      SetTXT();
}

//+------------------------------------------------------------------+
void SetTXT() 
{
int      first_bar=(int)ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0);
int      width_bar=(int)ChartGetInteger(0,CHART_WIDTH_IN_BARS,0);
double   label_price=iClose(_Symbol,_Period,0);
datetime label_time=0;

   if(width_bar>first_bar)
      label_time=iTime(_Symbol,_Period,1)+(width_bar-first_bar)*PeriodSeconds();
   else
      label_time=iTime(_Symbol,_Period,first_bar-width_bar+1);

   if(ObjectFind(0,objname)<0)
      {
      ObjectCreate(0, objname, OBJ_TEXT,0,0,0);
      ObjectSetInteger(0, objname, OBJPROP_FONTSIZE, 12);
      ObjectSetInteger(0, objname, OBJPROP_COLOR, Bid_color);
      ObjectSetString(0, objname, OBJPROP_FONT, "Verdana");
      ObjectSetInteger(0,objname,OBJPROP_ANCHOR,ANCHOR_RIGHT_UPPER);
      ObjectSetInteger(0,objname,OBJPROP_BACK,false);
      ObjectSetInteger(0,objname,OBJPROP_SELECTABLE,false);
      }
   
   ObjectSetString(0,objname,OBJPROP_TEXT,DoubleToString(label_price, _Digits-1)); 
   ObjectMove(0,objname,0,label_time,label_price);
   
   ChartRedraw();
}
 
Taras Slobodyanik:


Grazie mille, domani penserò a un modo per sostituire iTime e iClose, visto che sono seduto su XP.

 
Buona giornata a tutti voi!
Domanda per i programmatori.
Per favore, consigliatemi!
Alcuni broker non mi permettono di aprire un ordine con un prezzo di take profit e un prezzo di stop loss.

Solo una funzione OrderSend().

Piuttosto, OrderSend() aprirà un ordine, ma lo stop e il prezzo di profitto saranno assenti in questo ordine.

Questo ordine deve essere modificato in linee di codice successive usando OrderModify() e aggiungere stop e profitto all'ordine.


Quindi la domanda è: chi e come gestisce o assicura un caso in funzione dell'acquisto o della vendita
quando, per esempio, OrderSend() funziona ma OrderModify() non funziona per qualche motivo e il
c'è un ordine aperto senza stop o profitto?

Come mi assicurerei contro un tale evento e/o come lo gestirei?
Si prega di avvisare.
Se non sai come usare Astrakhan, per favore non usare il codice di Astrakhan.

tempo, ma non riesco a trovare alcuna informazione al riguardo.

Credo che la funzione Breakeven abbia una certa assicurazione, ma solo se il prezzo è andato in rosso.

Se il prezzo ha girato in perdita, ma non c'è uno stop loss?

Vi sono molto grato per la vostra risposta!
 

Ciao a tutti!

Potete dirmi perché non posso entrare nelle sue proprietà quando l'EA funziona? Lo facevo, ma ora non posso aprire le proprietà. Una volta il riavvio del terminale ha aiutato, ma il problema è apparso di nuovo dopo un minuto. Expert Advisor è fresco, il terminale funziona anche di recente. Qual è il problema con le proprietà EA?

Grazie!

 
demonRDV:

Ciao a tutti!

Potete dirmi perché non posso entrare nelle sue proprietà quando l'EA funziona? Lo facevo, ma ora non posso aprire le proprietà. Una volta ha aiutato a riavviare il terminale, ma il problema è apparso di nuovo dopo un minuto. Expert Advisor è fresco, il terminale funziona anche di recente. Qual è il problema con le proprietà EA?

Grazie!

Premere il tasto di scelta rapida F7 :-)

cliccare sull'icona dell'EA non è sempre possibile - l'icona potrebbe essere coperta da altri oggetti, l'EA potrebbe sovraccaricare la coda dei messaggi e 100500 altre ragioni