[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non potrei andare da nessuna parte senza di te - 2. - pagina 239

 
IgorM:

iHighest e iLowest per aiutarvi, e leggere l'algoritmo per costruire ZZ

SZY:non è il compito più facile, il codice sarà piccolo, ma l'algoritmo è complesso, non riesco a trovare il codice, ma ho così cercato un picco a High: High[iHighest(NULL,0,MODE_HIGH,i)

1. Cos'è il "33"?

2. High[iHighest(NULL,0,MODE_HIGH,i) darà un punto. Come ottenere il secondo?

iLowest != secondo punto.

 
charter:

1. Cos'è il "33"?

2. High[iHighest(NULL,0,MODE_HIGH,i) darà un punto. Come ottenere il secondo?


1. Zig Zag.

2. non lo farà, vi darà solo la possibilità di trovare qualche massimo per la linea superiore e poi dovrete scegliere due di questi massimi per disegnare la linea con

 
charter:

La difficoltà sta nel trovare i punti attraverso i quali la linea sarà poi disegnata.

Non è difficile tracciare linee quando si possono vedere questi punti. Come li "vede" programmaticamente?

Grazie, corretto!

 
charter:

La difficoltà sta nel trovare i punti attraverso i quali la linea sarà poi disegnata.

Non è difficile tracciare linee quando si possono vedere questi punti. Come li "vede" programmaticamente?

Grazie, corretto!

 

Buona giornata a tutti gli intenditori!

Per favore aiutatemi a correggere il codice nell'Expert Advisor https://www.mql5.com/ru/code - Ilan.

L'idea è che l'EA ha un parametro regolabile per l'equity drawdown, che chiude tutti gli ordini!

Tuttavia, questa funzione con le posizioni del lotto è apparsa più tardi, quindi il nostro EA ha chiuso tutti gli ordini aperti seguendo la tendenza e lascia intatte le posizioni di blocco. Quindi, come sistemare la cosa in modo che tutti gli ordini siano chiusi ad un dato prelievo di capitale?

Ecco la sezione in cui gli ordini vengono chiusi (gli ordini di tendenza e di perdita hanno numeri magici diversi). Qui tutto funziona. L'Expert Advisor sta chiudendo tutti gli ordini. Il prelievo è 4 o più volte superiore a quello stabilito, fino al punto di svuotamento del deposito:

if (UseEquityStop) {

if (CurrentPairProfit < 0.0 && MathAbs(CurrentPairProfit) > TotalEquityRisk / 100.0 * AccountEquityHigh()) {

CloseThisSymbolAll(MagicNumber);

CloseThisSymbolAll(LMagN);

PrintF("Closed All due to Stop Out");

NewOrdersPlaced = FALSE;

Si scopre che gli ordini perdenti vengono coperti, ma non vengono presi in considerazione quando si calcolano il profitto corrente e il patrimonio netto! Ecco il segmento che calcola il profitto attuale:

double CalculateProfit() {

double ld_ret_0 = 0;

for (cnt = OrdersTotal() - 1; cnt >= 0; cnt--) {

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;

if (OrderSymbol() == Symbol())

if (OrderMagicNumber() == MagicNumber || OrderMagicNumber() == LMagN)

if (OrderType() == OP_BUY || OrderType() == OP_SELL) ld_ret_0 += OrderProfit();

}

return (ld_ret_0);

Ed ecco il segmento che calcola il capitale:

double AccountEquityHigh() {

if ((CountTrades(MagicNumber) == 0) && (CountTrades(LMagN) == 0)) AccountEquityHighAmt = AccountEquity();

if (AccountEquityHighAmt < PrevEquity) AccountEquityHighAmt = PrevEquity;

else AccountEquityHighAmt = AccountEquity();

PrevEquity = AccountEquity();

return (AccountEquityHighAmt);

Ho evidenziato in nero le sezioni che ho aggiunto. Cosa ho dimenticato????? Perché non funziona?????

 
polsvv:

Buona giornata a tutti gli intenditori!

Per favore aiutatemi a correggere il codice nell'Expert Advisor https://www.mql5.com/ru/code - Ilan.

L'idea è che l'EA ha un parametro regolabile per l'equity drawdown, che chiude tutti gli ordini!

Tuttavia, questa funzione con le posizioni del lotto è apparsa più tardi, quindi il nostro EA ha chiuso tutti gli ordini aperti seguendo la tendenza e lascia intatte le posizioni di blocco. Quindi, come sistemare la cosa in modo che tutti gli ordini siano chiusi ad un dato prelievo di capitale?

Qui c'è la sezione in cui si chiudono gli ordini (gli ordini di tendenza e di perdita hanno numeri magici diversi). Qui tutto funziona. L'Expert Advisor sta chiudendo tutti gli ordini. Il prelievo è 4 o più volte superiore a quello stabilito, fino al punto di svuotamento del deposito:

if (UseEquityStop) {

if (CurrentPairProfit < 0.0 && MathAbs(CurrentPairProfit) > TotalEquityRisk / 100.0 * AccountEquityHigh()) {

CloseThisSymbolAll(MagicNumber);

CloseThisSymbolAll(LMagN);

PrintF("Closed All due to Stop Out");

NewOrdersPlaced = FALSE;

Si scopre che gli ordini perdenti vengono coperti, ma non vengono presi in considerazione quando si calcolano il profitto corrente e il patrimonio netto! Ecco il segmento che calcola il profitto attuale:

double CalculateProfit() {

double ld_ret_0 = 0;

for (cnt = OrdersTotal() - 1; cnt >= 0; cnt--) {

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;

if (OrderSymbol() == Symbol())

if (OrderMagicNumber() == MagicNumber || OrderMagicNumber() == LMagN)

if (OrderType() == OP_BUY || OrderType() == OP_SELL) ld_ret_0 += OrderProfit();

}

return (ld_ret_0);

Ed ecco il segmento che calcola il capitale:

double AccountEquityHigh() {

if ((CountTrades(MagicNumber) == 0) && (CountTrades(LMagN) == 0)) AccountEquityHighAmt = AccountEquity();

if (AccountEquityHighAmt < PrevEquity) AccountEquityHighAmt = PrevEquity;

else AccountEquityHighAmt = AccountEquity();

PrevEquity = AccountEquity();

return (AccountEquityHighAmt);

Ho evidenziato in nero le sezioni che ho aggiunto. Cosa ho dimenticato????? Perché non funziona?????

Forse dovrebbe? :

//===================================================================================
double CalculateProfit() 
{
   double ld_ret_0 = 0;
   for (int cnt = 0;  cnt < OrdersTotal(); cnt++) {
      if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) {
         if (OrderSymbol()!=Symbol())           continue;
         if (OrderType()>1)                     continue;
         if (OrderMagicNumber()==MagicNumber || 
             OrderMagicNumber() == LMagN)       ld_ret_0 += OrderProfit();
         }
      else if (!OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) {
         Print ("Func: CalculateProfit(), Select Order Error = ", GetLastError());
         break;
         }
      }
   return (ld_ret_0);
}
//===================================================================================
 
artmedia70:

Forse è così che dovrebbe essere?

Ecco come inserire il codice in modo che possa essere letto
 
eddy:
è così che si inserisce il codice per poterlo leggere.
Ah, sì? E' tutta qui la differenza che hai potuto vedere?
 
Ciao a tutti!

Proprio questo fine settimana sto usando lo strategy tester per la prima volta. Non riesco a capire a cosa serva la funzione "Ottimizzazione". Ho selezionato diversi parametri ottimizzabili, ma l'equilibrio non cambia. Cosa sta essenzialmente cercando di ottimizzare e come? C'è qualcuno che lo usa? :)
 
AndrejFX:
Ciao a tutti!

Proprio questo fine settimana per la prima volta sto usando lo strategy tester. Non riesco a capire quale sia l'uso della funzione "Ottimizzazione". Ho selezionato diversi parametri ottimizzabili, ma l'equilibrio non cambia. Cosa sta essenzialmente cercando di ottimizzare e come? C'è qualcuno che lo usa? :)

Prova a usare F1 per cominciare.

Trova Interfaccia utente -> Tester.

Forse https://www.mql5.com/ru/articles/mt4/tester aiuterà

Motivazione: