Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1228

 
Vladimir Karputov:

Questo è già corretto allora:

e se non riesce a chiudersi, guardate nel file di log. Ci potrebbero essere un milione di ragioni: reindirizzamento, divieto di commercio, assenza di prezzi, vicinanza dei livelli di stop...

Grazie. Allora è così) :


void CloseSellPositions()
  {
   for(int i=PositionsTotal()-1;i>=0;i--) // returns the number of current positions
	{
          if(m_position.SelectByIndex(i))     // selects the position by index for further access to its properties
            {
             if(m_position.PositionType()==POSITION_TYPE_SELL)
                m_trade.PositionClose(m_position.Ticket()); // close a position by the specified symbol
            }
	}


  }

Ho solo aggiunto le parentesi. In modo che i nuovi arrivati non si confondano.

 

Salve. Uso spesso una stringa come questa in un programma per scrivere i log in file separati:

StringConcatenate(M,"Начинаем проверять время работы модулей. i=",i); Log.write(M,__FILE__,__LINE__);

Puoi dirmi come accorciare questa linea? In effetti, qui viene cambiata solo la stringa di output stessa e il nome della variabile su cui ho fatto l'output.

Ho provato a usare define

#define  LOG(LogPerem,StrMes) StringConcatenate(M,StrMes,""); LogPerem.write(M,__FILE__,__LINE__);

ma se lo chiamo così, non funziona più:

LOG(Log,"i=",i);
 
pivomoe:

Salve. Uso spesso una stringa come questa in un programma per scrivere i log in file separati:

Puoi dirmi come accorciare questa linea? In effetti, qui viene cambiata solo la stringa di output stessa e il nome della variabile su cui ho fatto l'output.

Ho provato a usare define

ma chiamarlo così non funzionerà più:

Avete una comprensione del preprocessore?

Il tuo

LOG("i=",i);
si svolge in
StringConcatenate(M,i,""); "i=".write(M,__FILE__,__LINE__);;

e questo è ciò che viene dato in pasto al compilatore.

Non è nemmeno divertente. Prescrizione uno: leggere doku, preferibilmente non locale, locale implica già una certa comprensione della terminologia.

Prova questo, potrebbe aiutarti: https://metanit.com/cpp/c/3.1.php

С | Препроцессор
  • metanit.com
Препроцессор является обязательным компонентом компилятора языка Си. Препроцессор обрабатывает исходный текст программы до ее непосредственной компиляции. Результатом работы препроцессора является полный текст программы, который передается на компиляцию в исполняемый файл. Для управления препроцессором применяются директивы, каждая из которых...
 
Vladimir Simakov:

Non è nemmeno divertente. C'è solo una ricetta: affumicare le banchine, preferibilmente non quelle locali, perché quelle locali implicano già una certa comprensione della terminologia.

Prova questo, nel caso ti aiuti: https://metanit.com/cpp/c/3.1.php

Cosa vuol dire "improvvisamente"? Ti ha aiutato? Puoi accorciare la mia linea con define?


Ho cambiato una linea di codice nella mia domanda

LOG("i=",i);

a .

LOG(Log,"i=",i);
 
pivomoe:

Salve. Uso spesso una stringa come questa in un programma per scrivere i log in file separati:

Puoi dirmi come accorciare questa linea? In effetti, qui viene cambiata solo la stringa di output stessa e il nome della variabile su cui ho fatto l'output.

Ho provato a usare define

ma se lo chiamo così non funziona più:

Ho risolto il mio problema usando fogli di funzioni come questa:

template<typename T1,typename T2,typename T3,typename T4,typename T5,typename T6,typename T7,typename T8,typename T9,typename T10>
void Write(T1 var1,T2 var2,T3 var3,T4 var4,T5 var5,T6 var6,T7 var7,T8 var8,T9 var9,T10 var10,string ffile,int line)
  {
   string Str;
   StringConcatenate(Str,var1,var2,var3,var4,var5,var6,var7,var8,var9,var10);
   write(Str,ffile,line);
  }; 

Ora chiamo il seguente nel mio programma

   Log.Write("Test1",__FILE__,__LINE__);  
 
pivomoe:

Cosa vuol dire "all'improvviso"? Ha funzionato per voi? Puoi accorciare la mia linea usando define?


Ho cambiato una linea di codice nella mia domanda

a

LOG("Text"); Ho dato un esempio di come questo è implementato - cercalo da qualche parte nel forum.
 

Buon pomeriggio, ecco il problema: ho un EA che chiama un indicatore personalizzato per visualizzare i dati, tutto funziona bene nello strategy tester, ma in modalità di trading reale quando avvio l'EA, l'indicatore non viene visualizzato. Nel log scrivere indicatore personalizzato caricato con successo, sembra frusciare, invia messaggi di testo, ma sul grafico nella lista degli indicatori non è anche. Allo stesso tempo, se lo trascino sul grafico, prende i dati e tutto viene visualizzato normalmente. L'indicatore si trova nella cartella Indicators, nella funzione iCustom(NULL,0, "Indicator name",Count). Ho anche provato ad aggiungere #resource "\Indicators\\indicator name.ex5", iCustom(NULL,0,"::Indicators\\indicator name.ex5",Count) ma nessuna differenza. Qual è la ragione?

 

c'è un'impostazione per rimuovere i valori attuali dei buffer degli indicatori?


 
I commenti non relativi a questo argomento sono stati spostati in "Domande dai principianti di MQL4 MT4 MetaTrader 4".
 

Cari professionisti, potreste per favore consigliarmi se è possibile ottenere i valori di RSI per un timeframe settimanale nel codice dell'advisor, ma per calcolare i valori per la settimana, che non inizia il lunedì, ma per esempio da mercoledì (cioè la settimana da mercoledì a mercoledì prossimo). Per quanto ne so non può essere fatto con iRSI?

Finora posso solo vedere un modo per scrivere il codice per il calcolo da solo. C'è una soluzione più semplice o una soluzione già pronta?

Motivazione: