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

 
MosheDayan:

Amici, come uscire correttamente da questa situazione... L'indicatore disegna due linee orizzontali da CSV (Rosso - dall'inizio della giornata alla fine della giornata) Blu - Fascio proveniente dai giorni passati, a diversi livelli di prezzo. Ma ci sono giorni in cui questi livelli hanno lo stesso valore/prezzo. Qual è il modo giusto per uscire da questa situazione, in modo che quando le linee coincidono, il Raggio (Blu) sia visualizzato, e la linea Rossa non sia visibile sul grafico, ma fisicamente presente...cioè, sia trasparente.

Ora - Draw_Level("Red", red, DRAW_NONE, STYLE_SOLID,0); smette di disegnare la linea, ma il Ray non è visibile nemmeno da sotto. Grazie.

Fate attenzione alla sequenza di creazione degli oggetti. E cos'è Draw_Level() Perché menzionare una funzione personalizzata se nessuno la conosce?

 
Artyom Trishkin:

Buon pomeriggio. Cosa stavi cercando di fare esattamente? Vedo solo i due codici allegati. Se hai bisogno di qualcuno che faccia tutto per te, è a questo che serve il freelance.

E se tu stesso ci stai provando, allora mostrami esattamente cosa stai facendo e dove non capisci.

Buon pomeriggio, Artem, osservazione corretta. Sì, sto allegando il file Wordovan con il codice. Ciò che ho aggiunto al mio codice dall'algoritmo preso in prestito è segnato in rosso. Non posso dire con certezza dove non lo capisco ancora, perché non posso capire completamente il meccanismo di lavoro del codice. Ma forse potresti essere in grado di indirizzarmi nella giusta direzione con i tuoi consigli. Ve ne sarei grato.

 

Buona giornata!
Aprirò un ordine su un simbolo diverso dal grafico in cui è collegato l'Expert Advisor. La domanda è: devo precontrollare la correttezza di Bid e come faccio?

double Bid0= MarketInfo(OtherSymbol0,MODE_BID);
OrderSend(OtherSymbol0,OP_SELL,1,Bid0,3,stoploss,takeprofit,"My order",16384,0,clrGreen); 
 

Buon pomeriggio.

Potete consigliarmi come scrivere la seguente ora nel codice: 23:59 del primo venerdì del mese dopo il primo mercoledì di questo mese? cioè se il mese è iniziato di giovedì allora avete bisogno dell'ora 23:59 del secondo venerdì...

Grazie.

 
MosheDayan:

Buon pomeriggio.

Potete consigliarmi come scrivere la seguente ora nel codice: 23:59 del primo venerdì del mese dopo il primo mercoledì di questo mese? cioè se il mese è iniziato di giovedì allora avete bisogno dell'ora 23:59 del secondo venerdì...

Grazie.

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   int countWedn=0;
   int countFrid=0;
   if(TimeDayOfWeek(TimeCurrent())==5 && Hour()==23 && Minute()==59)
     {
      countWedn=0;
      countFrid=0;
      for(int i=0; i<=Day(); i++)
        {
         if(TimeMonth(iTime(Symbol(),PERIOD_D1,i))==TimeMonth(TimeCurrent()))
           {
            if(TimeDayOfWeek(iTime(Symbol(),PERIOD_D1,i))==3)countWedn++;
            if(TimeDayOfWeek(iTime(Symbol(),PERIOD_D1,i))==5)countFrid++;
           }
        }
     }
   if(countWedn==1 && countFrid==1)Print(" 23:59 первой пятницы месяца после первой среды этого месяца ");
  }
//+------------------------------------------------------------------+
 
Artyom Trishkin:

È possibile. E la direzione del pensiero è corretta. Puoi mostrarmi come hai cercato di prendere i parametri?


L'ho capito. È necessario "legare" l'oggetto grafico alla classe corrispondente.

#include <ChartObjects\ChartObject.mqh>.

void OnStart()

{

Oggetto CChartObject;

stringa objName = "";

doppio prezzo = 0;

datetime dt;

int NumTriangles = ObjectsTotal(ChartID(),0,OBJ_TRIANGLE);

for (int j=0;j<NumTriangles;j++){

objName = ObjectName(ChartID(),j);

object.Attach(ChartID(),objName,0,3);

for (int i=0;i<object.NumPoints();i++){

prezzo = object.Price(i);

dt = object.Time(i);

Print("Pivot dot - ",IntegerToString(i)," Time = ",TimeToString(dt)," Price = ",DoubleToStr(price,4))

}

object.Detach();

}

 

Buon pomeriggio a tutti!

Ho una tale domanda, c'è un tale blocco:

opf_all=0;
  for(int is=OrdersHistoryTotal(); is>=0; is--)
   {
    if(OrderSelect(is, SELECT_BY_POS, MODE_HISTORY) && OrderSymbol()==Symbol() && OrderMagicNumber()==MN)
     {
      opf_all=opf_all+OrderProfit()+OrderCommission()+OrderSwap();
     }
   }

La variabile opf_all dovrebbe produrre il profitto totale per tutto il periodo. Ma quando si seleziona il parametro del giorno corrente nella scheda della storia del conto del terminale, questo modulo mostra il risultato

solo per il giorno corrente, e quando selezioniamo l'intero periodo, questo modulo mostra per l'intero periodo. Questo non dovrebbe essere il caso. Indipendentemente dall'intervallo selezionato nella cronologia dell'account

il modulo dovrebbe ancora mostrare il profitto totale per l'intero periodo. Forse non capisco qualcosa?

Questo problema è risolto in qualche modo?

 
Valerius:

Buon pomeriggio a tutti!

Ho una tale domanda, c'è un tale blocco:

opf_all=0;
  for(int is=OrdersHistoryTotal(); is>=0; is--)
   {
    if(OrderSelect(is, SELECT_BY_POS, MODE_HISTORY) && OrderSymbol()==Symbol() && OrderMagicNumber()==MN)
     {
      opf_all=opf_all+OrderProfit()+OrderCommission()+OrderSwap();
     }
   }

La variabile opf_all dovrebbe produrre il profitto totale per tutto il periodo. Ma quando si seleziona il parametro del giorno corrente nella scheda della storia del conto del terminale, questo modulo mostra il risultato

solo per il giorno corrente, e quando selezioniamo l'intero periodo, questo modulo mostra per l'intero periodo. Questo non dovrebbe essere il caso. Indipendentemente dall'intervallo nella storia dell'account

il modulo dovrebbe ancora mostrare il profitto totale per l'intero periodo. Forse non capisco qualcosa?

Questo problema è risolto in qualche modo?

No, non può essere risolto se non selezionando la dimensione della cronologia calcolata nella scheda "Cronologia dell'account".

E per favore incolla il codice usando il pulsante SRC - è proprio sopra il campo di inserimento del testo nel menu di formattazione del messaggio. Ho incollato correttamente il tuo illeggibile "spoilage".

 
Artyom Trishkin:

No, non risolto se non selezionando la dimensione della cronologia calcolata nella scheda Cronologia account

E per favore incolla il codice usando il pulsante SRC - è proprio sopra il campo di inserimento del testo nel menu di formattazione del post. Ho incollato correttamente il tuo illeggibile "spoilage".

Grazie e scuse...

 

Ciao, c'è un pulsante sul grafico https://www.mql5.com/ru/code/19049 e apre il sito web, ho bisogno di essere in grado di abilitare lo script attraverso questo pulsante, può essere rifatto?

Link
Link
  • voti: 11
  • 2017.09.01
  • Iurii Tokman
  • www.mql5.com
Индикатор создает графическую кнопку, при нажатии на которую открывается окно браузера с сайтом, заданным в настройках индикатора.