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

 
Igor Makanu:

L'aiuto in MQL è lo stesso degli altri linguaggi

e presuppone che tu abbia almeno qualche esperienza di base nello scrivere codici semplici

Ecco perché la parola "// segnaposto" la maggior parte delle persone non lo testerà e non lo controllerà.

ushortfill_symbol='filler'// filler

Questo è tutto.

 
awsomdino:

Questo significa che qui e in casi come questo si può lasciare fuori questo campo?

come

(cioè quanto sia giusto usarlo)

e il secondo parametro può essere omesso.

No, non è questo.

esiste una cosa come "il valore predefinito" - dovreste leggerlo nell'aiuto, dove viene spiegato il termine "funzione".

ma usare" il valore predefinito" è semplice: se l'aiuto nella descrizione della funzione ha un segno = , allora questo è il valore predefinito, e se non scrivete nulla in questo punto, il compilatore userà il valore scritto nell'aiuto

string  IntegerToString(
   long    number,              // число
   int     str_len=0,           // длина строки на выходе
   ushort  fill_symbol=' '      // заполнитель
   )
 

@Igor Makanu

Grazie, molte cose sono chiare ora. Senza conoscenze iniziali è difficile fare tutto

 
Artyom Trishkin:

Una media mobile semplice con periodo 14, spostamento 0, calcolata dai prezzi di chiusura sul grafico giornaliero del simbolo corrente. Prendiamo il valore della prima barra (lo zero è il giorno corrente):

C'è un modo per ottenere rapidamente sulle medie mobili il prezzo nel mezzo tra l'apertura e la chiusura con spostamento 0, vuoi dire la barra corrente? O è una cosa complicata, non ci sono variabili pronte per questa funzione.

 

Buona giornata a tutti.

Quando si chiude parzialmente un ordine, il messaggio di avviso "OrderClose (28800839, 0.01) error (method: CloseOrderPartial) - trade is not allowed in the expert properties" appare nella finestra di avviso.

Tuttavia, una parte di ordine corretta viene di fatto chiusa e l'EA sta eseguendo correttamente sia l'apertura che la chiusura dell'ordine. Non ho trovato tale errore nella documentazione e nemmeno nei forum. La traduzione dell'errore dice che "l'EA non è autorizzato a commerciare" ma possiamo vedere che questo non è effettivamente il caso e l'EA sta commerciando.

Forse qualcuno ha affrontato un problema simile?

Codice del metodo per la chiusura parziale

//Закрытие ордера на продажу
//NumberOrder = тикет ордера, 0 - закрытие всех ордеров
//ValueClose = объем закрытия ордера
bool CloseOrderSell(int NumberOrder, double ValueClose)
{
   if (NumberOrder == 0)
   {
      for (int i = OrdersTotal() - 1; i >= 0; i--)
         if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
         {
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL)
            {
               if(OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, clrMaroon) == false)
               {
                  Print("Ошибка #" + (string)GetLastError() + " закрытия ордера на продажу #" + (string)OrderTicket());    
                  return false;       
               }
               else
               {
                  if (EnableMgs == true)
                     Print("Ордер на продажу #"+ (string)OrderTicket() +" закрыт на " + (string)ValueClose + " лота");
                  return true;            
               }         
            }      
         }
   }
   else
   {
      if (OrderSelect(NumberOrder, SELECT_BY_TICKET) == true)
      {
         ValueClose = NormalizeDouble(ValueClose * OrderLots(), 2);
         if(OrderClose(OrderTicket(), ValueClose, Ask, Slippage, clrMaroon) == false)
         {
            Print("Ошибка #" + (string)GetLastError() + " закрытия ордера на продажу #" + (string)OrderTicket());   
            return false;
         }
         else
         {
            if (EnableMgs == true)
               Print("Ордер на продажу #"+ (string)OrderTicket() +" закрыт на " + (string)ValueClose + " лота");
            return true;
         } 
      }
      else
         Print("Ошибка #" + (string)GetLastError() + " выбора ордера на продажу #" + (string)NumberOrder + " при закрытии ордера");
   }
   return false;
} 
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация о запущенной MQL5-программе
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация о запущенной MQL5-программе
  • www.mql5.com
Константы, перечисления и структуры / Состояние окружения / Информация о запущенной MQL5-программе - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Seric29:

C'è un modo per ottenere rapidamente il prezzo nel mezzo tra l'apertura e la chiusura con uno spostamento di 0 sulle slide, vuoi dire la barra corrente? O è una cosa complicata, non ci sono variabili pronte per questa funzione.

Lo stai usando per un gufo o per un indicatore?
hanno gambe diverse, hai bisogno di vetrini diversi)

 
Medvedina:

Buona giornata a tutti.

Quando si chiude parzialmente un ordine, l'avviso "OrderClose (28800839, 0.01) error (method: CloseOrderPartial) - trade is not allowed in the expert properties" appare nella finestra di avviso.

Penso che il problema non sia nel metodo ma nelle condizioni di chiusura.

Cosa c'è scritto nel registro? Puoi fare uno screenshot?

 
Taras Slobodyanik:

stai cercando un gufo o un tacchino?
hanno zampe diverse, hai bisogno di scivoli diversi)

Normale lisciata (c'è anche la Media Esponenziale Lisciata Ponderata e qualsiasi altra cosa ci sia in giro). Ho bisogno di una media mobile semplice, magari lisciata, che stupidamente passa nel mezzo tra l'apertura e la chiusura. Mi sono reso conto che non esiste una cosa del genere, bisogna fare, perché nessuno penserebbe che un cretino come me arrivi e usi cose così semplici in situazioni molto complicate, ma mi è venuto in mente di fare variabili così complesse (Simle...).

...che non sanno cosa stanno calcolando e ridisegnano semplicemente i prezzi. Non so nemmeno se i grandi investitori fanno attenzione alla media (per esempio 200,30,21,14,7). Se non ne ho uno, lo farò più tardi.

 
MakarFX:

Penso che il problema non sia nel metodo, ma nelle condizioni di chiusura.

Cosa c'è scritto nel diario di bordo? Posso avere uno screenshot?

Buon pomeriggio.

Grazie per il pensiero. Infatti, non l'ho notato, ma non è il mio EA che riceve avvertimenti, ma un altro che sta lavorando in parallelo sulla stessa coppia. La cosa strana è che gli avvertimenti per il secondo EA sono apparsi solo lavorando in parallelo.

 
Seric29:

Una regolare lisciata (c'è anche Exponential Smoothed Weighted Average e qualsiasi altra cosa ci sia in giro). Ho bisogno di una semplice media mobile forse lisciata, che stupidamente passerebbe nel mezzo tra apertura e chiusura.

così da sommare e dividere - (MA1 + MA2 + MA3) / 3 = Media MA

Se si conta per il buffer, allora iMAOnArray

Motivazione: