Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 84

 
paladin80:

I passaggi che sono andati in deficit non sono mostrati. Cliccate con il tasto destro del mouse su qualsiasi risultato di ottimizzazione e deselezionate la casella "Salta i risultati inutili".




non si tratta di ottimizzazione.

il test è una tantum.

e i suoi risultati in diverse schede differiscono di 30 come ho indicato sopra

 
lottamer:


non si tratta di ottimizzazione.

il test è una tantum.

e i suoi risultati variano di 30 in diverse schede come ho indicato sopra

Mettete uno screenshot del rapporto con le aree problematiche e diamogli un'occhiata. Oppure caricare l'intero rapporto per intero.
 

Cari programmatori, spiegate questo punto, qui c'è l'algoritmo che calcola il lotto per il Money Managment, ma il problema è che una volta che capisce che per aprire un lotto inferiore a 0,01 cioè ammissibile, poi naturalmente segue Ordine Invia errore e addio, consigliare cosa inserire per aprire meno di 0,01 lotto non può essere anche se l'algoritmo richiede così.

double GetSizeLot()
{  
  if (MM==false) 
      MMLot=Lots;
      
  if (MM==true)
     {
      MMLot=((AccountFreeMargin()*TradeLotRiskPercent)/100000);
     }
  return(MMLot);
}
 
ZahvatkiN:

Cari programmatori, spiegate questo punto, qui c'è l'algoritmo che calcola il lotto per il Money Managment, ma il problema è che una volta che capisce che per aprire un lotto inferiore a 0,01 cioè ammissibile, poi naturalmente segue Order Send Error e addio, consigliare cosa inserire per aprire meno di 0,01 lotto non può essere anche se l'algoritmo lo richiede.

1. È necessario normalizzare.

2. e fissare il lotto minimo.

MMLot=NormalizeDouble(MathMax((AccountFreeMargin()*TradeLotRiskPercent)/100000,MinLot),2);
 
ZahvatkiN:

Cari programmatori, spiegare questo punto, ecco l'algoritmo che calcola il lotto per Money Managment, ma il problema è che non appena si rende conto che per aprire un lotto inferiore a 0,01 cioè ammissibile, poi naturalmente segue Ordine Invia errore e addio, dimmi cosa inserire che meno di 0,01 lotto non può aprire anche se l'algoritmo richiede.

double GetSizeLot(double TradeLotRiskPercent)
{  
   double MMLot, MinLot, MaxLot;
   //---
   MinLot=MarketInfo(Symbol(),MODE_MINLOT);
   MaxLot=MarketInfo(Symbol(),MODE_MAXLOT);
   //---
   MMLot=AccountFreeMargin()*TradeLotRiskPercent)/100000;
   if (MMLot<=MinLot) return(MinLot);
   if (MMLot>=MaxLot) return(MaxLot);
   else 
   {  MMLot=NormalizeDouble(MMLot,2);
      return(MMLot);
   }
}

Avete la formula per calcolare MMLot divisa per 100000. Molto probabilmente stai calcolando per una leva 1:100 e un conto normale dove la dimensione del lotto è 100000 della valuta di base (ad esempio, USD). Se lanci un tale EA su un conto al centesimo (lotto = 10000) e/o con una leva diversa, non conterà correttamente il lotto. Prova questo disegno:

double GetSizeLot(double TradeLotRiskPercent)
{  
   double MMLot, MinLot, MaxLot;
   int    LotSize, Leverage;
   //---
   MinLot  =MarketInfo(Symbol(),MODE_MINLOT);
   MaxLot  =MarketInfo(Symbol(),MODE_MAXLOT);
   LotSize =MarketInfo(Symbol(),MODE_LOTSIZE);
   Leverage=AccountLeverage();
   //---
   MMLot=AccountFreeMargin()*TradeLotRiskPercent)/ 100*Leverage/LotSize;
   if (MMLot<=MinLot) return(MinLot);
   if (MMLot>=MaxLot) return(MaxLot);
   else 
   {  MMLot=NormalizeDouble(MMLot,2);
      return(MMLot);
   }
}
 
Se uso il conto Alpari_ECN_Live con leva 1:500 e TradeLotRiskPercent=10 cioè il 10% del deposito di 1000$, i lotti inizieranno a lavorare da 0,5. Quindi, questa formula è solo per la leva 1:100? Immagino che non ci sia un codice universale per qualsiasi leva e conto?
 
ZahvatkiN:
Se uso il conto Alpari_ECN_Live con leva 1:500 e TradeLotRiskPercent=10 cioè il 10% del deposito di 1000$, i lotti inizieranno a lavorare da 0,5. Quindi, questa formula è solo per la leva 1:100? Immagino che non ci sia un codice universale per qualsiasi leva e conto?
Penso che la mia formula 2 (dal 23.08.2013 07:30) calcoli correttamente il lotto. Vedi il 10% di $1000 = $100 (deposito), con una leva 1:500 il broker ti dà la possibilità di aprire un affare di $50.000. 1 lotto presso un broker è di 100.000 dollari, quindi i tuoi 50.000 dollari sono 0,5 lotti.
MMLot=AccountFreeMargin()*TradeLotRiskPercent)/ 100*Leverage/LotSize
MMLot=1000*10/100 * 500/100000 = 100 * 500/100000 = 50000 / 100000 = 0.50
 
paladin80:
Penso che la mia formula 2 (datata 23.08.2013 07:30) calcoli correttamente il lotto. Vedi il 10% di $1000 = $100 (deposito), con una leva 1:500 il broker ti dà la possibilità di aprire un trade di $50.000. 1 lotto presso un broker è di 100.000 dollari, quindi i tuoi 50.000 dollari sono 0,5 lotti.
MMLot=AccountFreeMargin()*TradeLotRiskPercent)/ 100*Leverage/LotSize.
MMLot=1000*10/100 * 500/100000 = 100 * 500/100000 = 50000 / 100000 = 0.50

Sama la formula stessa è calcolata senza errori, solo nell'idea del 10% di 1000 è un lotto 0,1 piuttosto che 0,5) Qui è chiaro perché 0,5 perché la leva di 1:500, sarebbe una spalla 1:100 si aprirebbe un lotto solo 0,1 quindi la domanda sorge, ma c'è un algoritmo universale per calcolare il lotto per qualsiasi leva e tipo di conto, o per ciascuno il suo?
 

Cari utenti del forum, aiutatemi a trovare le coordinate della freccia

stringa arrowName=TimeToStr(Time[i]);

ObjectCreate(arrowName+ " Arrow",...);

Sto facendo un Expert Advisor basato su un indicatore e ottengo delle frecce tramite iCustom, ma non so come trovare le coordinate di diverse ultime frecce.

 
nazar77:
Aiutatemi a decompilare l'indicatore. Non lo decompilerò più di me, ve lo garantisco.
Vai all'inferno!!!
Motivazione: