Domande dai principianti MQL4 MT4 MetaTrader 4 - pagina 122

 
Mickey Moose: Finito quello che volevo posso inviarlo a voi per la revisione. È fantastico. Ma è vietato pubblicarlo qui.

di persona... Adoro i leaker... L'ho fatto apposta. Quando la demo aumenta il deposito 15 volte in un giorno, allora lo prosciugo. Voglio avere risultati comparabili domani.

 
STARIJ:
Richieste nel tester? È la prima volta che ne sento parlare...

Ecco la prova. Inizio:


e la fine:

e la fine:




"Quindi metti l'EA che se è così, esci e al prossimo tick continua."Questo è nel codice.

 
novichok2018:

Ecco la prova. L'inizio:


e la fine:

e la fine:




"Quindi metti l'EA che se è così, esci e al prossimo tick continua." - Questo è nel codice.

Bene e scrivere If(tester) if(25 o 26 gennaio) return

 
STARIJ:

Bene e scrivere If(tester) if(25 o 26 gennaio) return

Non capisco perché. Cosa, aiuterà ad evitare il ripetersi del fallimento? L'importante è che le posizioni si chiudano, e se il motivo dell'esecuzione del comando fuzzy è un errore del tester, allora tutto va bene. Per essere sicuri che la causa dell'altro, probabilmente devono aspettare la ripetizione della situazione, quando con un Sell(BAY) aperto aprirà BAY(SEL), e vedere come si chiuderà.

 
novichok2018:

Questo è esattamente ciò di cui ho bisogno, o meglio solo perBuy and Sell. Per la mia semplice strategia, la cosa più importante è che le posizioni aperte non interferiscano con le condizioni di chiusura delle altre. Forse possiamo fare a meno degli array? Non li capisco: come crearli, come affrontarli - sono al buio. Forse la mia situazione vi sarà più chiara nello screenshot:

Tutto sembra essere semplice e chiaro nel codice, ma è l'unico caso di confusione.

Se abbiamo bisogno di dividere la contabilità per gli ordini di vendita e di acquisto, dichiareremo due array e due contatori per ciascuno di essi:

int g_nBuyOrdersCnt, g_nSellOrdersCnt;
OrderInfo  arrstBuyOrderInfo[MAX_ORDERS_CNT], arrstSellOrderInfo[MAX_ORDERS_CNT];

Di conseguenza, il ciclo di raccolta dei dati sarà il seguente:

g_nBuyOrderCnt = 0;
g_nSellOrdersCnt = 0;
for (int i = OrdersTotal() - 1; i >= 0; --i)
{
   if (!OrderSelect(i, SELECT_BY_POS))
      continue;

   if (OrderSymbol() != Symbol())   // Если нужны ордера только по текущему символу, к графику которого прикреплен советник
      continue;

   if (OrderMagicNumber != i_nMagicNumber)  // Если имеется входной параметр советника i_nMagicNumber, в котором указан ID ордеров советника
      continue;

   if (OrderType() == OP_BUY)
      SaveOrderInfo(g_arrstBuyOrderInfo, g_nBuyOrdersCnt);
   if (OrderType() == OP_SELL)
      SaveOrderInfo(g_arrstSellOrderInfo, g_nSellOrdersCnt);
}

void SaveOrderInfo(OrderInfo &arrstOrderInfo[], int &nOrdersCnt)
{
   if (nOrderCnt >= MAX_ORDERS_CNT)
      return;

   arrstOrderInfo[nOrdersCnt].nTicket = OrderTicket();
   arrstOrderInfo[nOrdersCnt].nType = OrderType();
   arrstOrderInfo[nOrdersCnt].fOpenPrice = OrderOpenPrice();
   arrstOrderInfo[nOrdersCnt].fSL = OrderStopLoss();
   arrstOrderInfo[nOrdersCnt].fTP = OrderTakeProfit();

   ++nOrdersCnt;
}

Poi abbiamo solo bisogno di fare quanto segue nell'Expert Advisor per determinare se c'è un ordine di acquisto o di vendita:

if (g_nBuyOrdersCnt > 0)
{
   // Есть ордера Buy
}
 
novichok2018:

Possiamo fare a meno degli array, dopo tutto?

Si può fare a meno degli array solo se non ci si aspetta che esista più di un ordine di ogni tipo alla volta. Poi l'array degenera in una variabile del tipo struttura OrderInfo (o un array con dimensione 1).

Ma come vedo nella figura qui sopra, questo non è il caso. Puoi avere più di un ordine di ogni tipo alla volta.
 
novichok2018:

Ecco la prova. Iniziare:

Questo dimostra che quando un ordine viene chiuso, non è il prezzo di mercato. Per esempio, Buy è chiuso a Ask, mentre Sell è chiuso a Bid. Se guardi il tuo codice, questo potrebbe essere il caso, perché non c'è nessun controllo del tipo di ordine prima dell'operazione di chiusura.

 

Di nuovo buona sera. Il succo della domanda.

Sto mettendo un EA (funzionante) nel mercato. Piattaforma MT4. Posso visualizzare un singolo file. Un file di Expert Advisor. Dovrebbe passare la validità, ma non può perché è un EA senza indicatori. Sono in file separati. L'Expert Advisor lavora con quattro indicatori. Devono essere in qualche modo collegati all'Expert Advisor. Dovete specificare il percorso, cioè scriverli nell'Expert Advisor. Cosa? e dove? Per favore, consigliatemi quale modulo e come farlo.

Da quello che ho capito, dobbiamo usare le "Risorse". Non so come registrarlo correttamente nell'Expert Advisor. Forse conosci altre soluzioni.

Grazie.

Ecco cosa dice quando non supera la validità

 2016.04.01 00:00:00 impossibile aprire il file 'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' [2] 2016.04.01 00:00:00 impossibile aprire il file 'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' [2]01 00:00:00 impossibile aprire il file 'MQL4\indicators\MA in Color_wAppliedPrice.ex4' [2] 2016.04.01 00:00:00 impossibile aprire il file 'MQL4\indicators\MA in Color_wAppliedPrice.ex4' [2] 2016.04.01 00:00:00 impossibile aprire il file 'MQL4\indicators\HA_Smooth.ex4' [2] 2016.04.01 00:00:00 cannot open file 'MQL4\indicators\HA_Smooth.ex4' [2] 2016.04.01 00:00:00 cannot open file 'MQL4\indicators\TrendLord.ex4' [2] 2016.04.01 00:00:00 cannot open file 'MQL4\indicators\TrendLord.ex4' [2] 2016.04.01 00:00:05 impossibile aprire il file 'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' [2] 2016.04.01 00:00:05 impossibile aprire il file 'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' [2] 2016.04.01 00:00:0504.01 00:00:05 impossibile aprire il file 'MQL4\indicators\MA in Color_wAppliedPrice.ex4' [2] 2016.04.01 00:00:05 impossibile aprire il file 'MQL4\indicators\MA in Color_wAppliedPrice.ex4' [2]01 00:00:05 impossibile aprire il file 'MQL4\indicators\HA_Smooth.ex4' [2] 2016.04.01 00:00:05 impossibile aprire il file 'MQL4\indicators\HA_Smooth.ex4' [2] 2016.04.01 00:00:05 impossibile aprire il file 'MQL4\indicators\TrendLord.ex4' [2] 2016.04.0101 00:00:05 impossibile aprire il file 'MQL4\indicators\TrendLord.ex4' [2] 2016.04.01 00:00:10 impossibile aprire il file 'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' [2] 2016.04.01 00:00:10 impossibile aprire il file 'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' [2] 2016.04.01 00:00:10 cannot open file 'MQL4\indicators\MA in Color_wAppliedPrice.ex4' [2] 2016.04.01 00:00:10 cannot open file 'MQL4\indicators\MA in Color_wAppliedPrice.ex4' [2]

 
Ihor Herasko:


Grazie mille per le vostre risposte complete e molto chiare.

 
Ihor Herasko:

Se abbiamo bisogno di dividere la contabilità degli ordini in Buy e Sell, dichiariamo due array e due contatori per ciascuno di essi:

Di conseguenza, il ciclo di raccolta dei dati sarà il seguente:

Poi abbiamo solo bisogno di fare quanto segue nell'Expert Advisor per determinare se c'è un ordine di acquisto o di vendita:

Potresti spiegare questa linea del tuo codice:OrderInfo arrstBuyOrderInfo[MAX_ORDERS_CNT], arrstSellOrderInfo[MAX_ORDERS_CNT]; PerchéOrderInfo non ha parentesi e nessun tipo specificato? e tutto questo è dichiarato a livello globale?

E la determinazione della disponibilità dell'ordine è inserita nella funzione di chiusura della posizione? E forse la funzione di chiusura delle posizioni con gli array dovrebbe essere in qualche modo diversa? È un po' complicato per me. Grazie.


Ho cercato di usare il tuo esempio, ma il compilatore mi ha imprecato contro...

E impreca anche sugli esempi del tutorial.

Motivazione: