Versione beta del libro online sulla programmazione MQL4 - di Sergey Kovalev (SK.) - pagina 7

 

Mi chiederei anche perché il testo usa funzioni senza parentesi OrderType() OrderOpenPrice()

 
Climber:
// Критерии закрытия ордеров

if
(_OrdersTotal == 1) //Выполнять следующее если открыт 1 ордер
{
OrderSelect(0, SELECT_BY_POS);
Tip = OrderType;
OPrice = OrderOpenPrice;

if (Tip = 0) // Расчитать цену закрытия в зависимости от типа ордера (В=0,S=1)
{
Cprice = OPrice + (TakeProfit*Point) + Spread;
if (Bid >= Cprice)
{
Cls_B = True;
}
}
if (Tip = 1)                 
{
Cprice = OPrice - (TakeProfit*Point) - Spread;
if (Ask <= Cprice)
{
Cls_S = True;
}
}
Nel tuo codice, non è la mancanza di parentesi che è sbagliata, ma altri errori, come la mancanza di un altro segno uguale nella condizione (segnato in rosso)
 
Non ha aiutato ==. Ancora la stessa parentesi è scritta negli errori. Il criterio di chiusura non può essere scritto nel codice, se è impostato il take profit? O potrebbe non funzionare, per esempio, se il prezzo è improvvisamente vicino al TP e improvvisamente in un tick cambia di diversi punti, saltando il TP?
 
Climber:
O potrebbe fallire, per esempio, se il prezzo si avvicina improvvisamente al TP e cambia improvvisamente di diversi pip in un tick, saltando il TP?


Questo è teoricamente possibile. Cioè, l'ordine sarà ancora chiuso, ma potrebbe essere chiuso non al prezzo TP, ma al primo prezzo che appare.
Penso che potresti essere interessato a leggere il tutorial MQL4 - Operazioni commerciali - Parametri degli ordini e regole delle operazioni di trading . Tratta un esempio simile con lo slittamento.

 
Un'altra caratteristica originale nella fase di apprendimento della programmazione - tutto il tempo per mettere una virgola premo la lettera b, dove c'è una virgola nel layout inglese))). Si scopre che si scrive in russo, ma quando si mette una virgola si dimentica che il layout russo.
 
Climber:
Un'altra caratteristica originale nella fase di apprendimento della programmazione - tutto il tempo per mettere una virgola premo la lettera b, dove c'è una virgola nel layout inglese))). Si scopre che si scrive in russo, ma quando si mette una virgola si dimentica che il layout russo.

Ecco perché molte persone scrivono software in inglese, senza usare il russo, è più veloce e più facile, il layout non cambia così spesso, e poi il programma è adattato al russo per qualcun altro, se sono richiesti commenti, proprio in questo periodo di lavoro, è più conveniente russificare, per qualche motivo:) L'impaginazione inglese è la base per le persone che sono impegnate in questo tipo di scrittura, il russo è usato in scala molto minima, se si stima la % di utilizzo dell'impaginazione inglese, è il 99% delle volte. Una volta volevo scrivere programmi in russo, ma dopo essermi divertito con 1C questo desiderio è evaporato.
 
Rosh:
Trovato il problema, lo risolveremo.

Ora posso vedere i disegni su https://book.mql4.com/ru/metaeditor/compose
 

Mi chiedo come hai fatto a far sparire i miei messaggi. Non è una discussione corretta, ragazzi, se non avete niente da dire ditelo, lo capisco.

 

Spero solo che coloro ai quali ho scritto abbiano letto e risposto

 
Ho trovato le funzioni di cui ho bisogno sul forum. Uno restituisce il numero di barra dell'estremo di ZigZag per il suo numero di barra e il secondo restituisce l'estremo di ZigZag per il suo numero di barra. Il primo mi aiuterà a determinare se è emerso un nuovo estremo dello ZigZag (se il numero di barra dello ZigZag zero = 0) e procedere da lì a controllare altri criteri. Anche il secondo sarà utile. Ma è troppo presto per il secondo. Vorrei occuparmi del primo.

Ho implementato questa funzione nell'editor e ho creato un indicatore. Non ho aggiunto o sottratto nulla. Ma durante la compilazione, ho avuto così tanti errori. Sono orribili. Poi ho provato a creare un Expert Advisor usando solo questa funzione. Ho ottenuto lo stesso risultato.((
//+----------------------------------------------------------------------------+
//|  Возвращает номер бара экстремума ЗигЗага по его номеру.                   |
//|  Параметры:                                                                |
//|    sym - наименование инструмента  ("" - текущий символ)                   |
//|    tf  - таймфрейм                 ( 0 - текущий ТФ)                       |
//|    ne  - номер экстремума          ( 0 - текущий)                          |
//|    dp  - ExtDepth                                                          |
//|    dv  - ExtDeviation                                                      |
//|    bc  - ExtBackstep                                                       |
//+----------------------------------------------------------------------------+
int GetExtremumZZBar(string sym="", int tf=0, int ne=0, int dp=12, int dv=5, int bc=3) {
  if (sym=="") sym=Symbol();
  double zz;
  int    i, k=iBars(sym, tf), ke=0;
 
  for (i=1; i<k; i++) {
    zz=iCustom(sym, tf, "ZigZag", dp, dv, bc, 0, i);
    if (zz!=0) {
      ke++;
      if (ke>ne) return(i);
    }
  }
  Print("GetExtremumZZBar(): Экстремум ЗигЗага номер ",ne," не найден");
  return(0);
}
Cosa c'è di sbagliato qui? Perché si grida agli errori?
Motivazione: