Calcolo corretto del lotto dalla % del deposito - pagina 3

 
7bec:

ma sicuramente dovrebbe essere AccountBalance e non AccountFreeMargin qui, allora improvvisamente l'esperto non sta lavorando in un lotto?

Hai pensato a lungo prima di fare una domanda a un post di quattro anni? Pensi davvero che ti risponderà?
 
zoritch:

Avete pensato a lungo e intensamente prima di fare una domanda a un post di quattro anni fa? Pensate davvero che vi risponderà?
E se sei fortunato?
 
7bec:

ma sicuramente dovrebbe essere AccountBalance e non AccountFreeMargin qui, allora improvvisamente l'esperto non sta lavorando in un lotto?

Non dovresti usare questa funzione, voglio dire l'intera funzione qui che mi piaceva nell'estate del 2010. Perché può essere stampato in modo migliore
 
wenay:

Non dovresti usare questa funzione, voglio dire l'intera funzione qui che mi piaceva nell'estate del 2010. Perché ci sono modi migliori per stampare


Da quello che ho trovato in rete durante la notte, questo è quello che mi è piaciuto di più.

Naturalmente qualsiasi codice può essere perfezionato all'infinito, ma il meglio è nemico del bene ;)

 

Non sono un esperto di programmazione MQL4, quindi sto cercando qualche consiglio...

Questo è il terzo giorno che mi gratto la testa per scrivere uno script per il calcolo dei lotti. La mia idea è la seguente: avendo un deposito (condizionale) di 1000$ il lotto sarà 0,05 (effettivamente diviso per 20000).

Va bene quando si lavora con EURUSD, GBPUSD, AUDUSD, NZDUSD (cioè l'acquisto nella valuta di deposito) .... Non so come ottenere un lotto per USDJPY (o USDRUR)... Non so come ottenere lotti in USDJPY... Se mi annoio, cosa mi manca????, ditemi dove cercare qualcos'altro.

 
gochu:

Non sono un esperto di programmazione MQL4, quindi sto cercando qualche consiglio...

Questo è il terzo giorno che mi gratto la testa per scrivere uno script per il calcolo del lotto. La mia idea è la seguente: avendo un deposito (condizionale) di 1000$ il lotto sarà 0,05 (in realtà diviso per 20000).

Va bene quando si lavora con EURUSD, GBPUSD, AUDUSD, NZDUSD (cioè l'acquisto nella valuta di deposito) .... Come faccio a calcolare il lotto per CADJPY (o USDRUR)? 1000 sterline si trasformano (per oggi) in 113000 yen o 38700 rubli, il lotto non sarà 5,65 e 0,19 in questo caso ... Sto lavorando troppo, cosa mi manca???? consigliare dove andare ... Lascia le tue battute e trolling per dopo!


Guardate il problema da un'angolazione leggermente diversa: usare un lotto equivalente a una certa quantità di denaro nella valuta del deposito.

Ecco uno script per calcolare la dimensione del lotto in base alla dimensione del contratto. La dimensione del contratto è impostata nella valuta del deposito.

File:
 

Qui sotto c'è il mio modo di calcolare il lotto per un trade (codice prima dell'aggiornamento di MQL4 quindi nessuna #proprietà rigorosa):

extern double DealLevel = 5.0; // процент свободной маржи для сделки
//---
double LotDeal = NormalizeDouble(TradedLotFunc(DealLevel),2);

//--- TradedLotFunc() - start ----- сама функция
double TradedLotFunc(double Deal_f)
{  
   double MinLot_f  =MarketInfo(Symbol(),MODE_MINLOT);
   double MaxLot_f  =MarketInfo(Symbol(),MODE_MAXLOT);
   double LotStep_f =MarketInfo(Symbol(),MODE_LOTSTEP);
   double LotSize_f =MarketInfo(Symbol(),MODE_LOTSIZE);
   int    Leverage_f=AccountLeverage();
   //---
   int    i, coef; 
   double HighBorder;
   //---
   if(Deal_f<=0.0)  return(MinLot_f);
   if(Deal_f>100.0) Deal_f=100.0;
   double TradedLot=(AccountFreeMargin()*Deal_f/100)*Leverage_f/LotSize_f;
   if(TradedLot<=MinLot_f) return(MinLot_f);
   if(LotStep_f==0.001 || LotStep_f==0.01 || LotStep_f==0.1 || LotStep_f==1.0)
      TradedLot=MathRound(TradedLot/LotStep_f)*LotStep_f;
   else
   {  if(((TradedLot-MinLot_f)/LotStep_f)<=5.0) coef=1;
      else coef=MathRound((TradedLot-MinLot_f)/LotStep_f)-3;
      for(i=0; i<=100; i++)
      {  HighBorder=MinLot_f+(LotStep_f*coef)+(LotStep_f*i);
         if(TradedLot> HighBorder) continue;
         if(TradedLot==HighBorder) break;
         if(TradedLot< HighBorder)
         {  if(MathAbs(HighBorder-TradedLot)<=MathAbs(TradedLot-(HighBorder-LotStep_f)))
            {  TradedLot=HighBorder; break; }
            else
            {  TradedLot=HighBorder-LotStep_f;  break; }
   }  }  }
   if(TradedLot>=MaxLot_f) return(MaxLot_f);
   return(TradedLot);
}
//--- TradedLotFunc() - end -----
 

TradedLotFunc() restituisce sempre più di zero?

Se no, allora il codice si trasforma in una stronzata if(Deal_f<=0.0) return(MinLot_f); - sei un membro di un partito? ...e la mitragliatrice spara di nuovo...

E il resto è ancora più divertente if(TradedLot<=MinLot_f) return(MinLot_f) ; - Sei un uomo di partito? ...e la mitragliatrice ha sparato di nuovo...

---------------------

in generale, se supponiamo che la funzione funzioni correttamente, è appena sufficiente per aprire il primo e unico ordine in un conto di trading...

Difficilmente perché non tiene conto né delle posizioni aperte esistenti né dello stop loss dell'ordine da aprire, cioè è una versione da scolaretto

E nessuna persona sana di mente userebbe questa bontà quando fa trading su un conto reale...

 

Grazie per i consigli, ma non ho formulato correttamente la mia domanda.... Voglio basare il mio calcolo sulla quantità di denaro perso/rubato. Ovviamente le garanzie per euro.quid e pound.quid sono diverse, ma non è esattamente quello a cui voglio arrivare. Idealmente dovrei avere una funzione che prende parametri come input:

1- deposito di valuta (controllerò le sterline e l'euro),

2 - Importo del deposito (1000)

3 - la mia coppia di valute di trading (vorrei controllare CADJPY e USDCHF)

4 - la mia percentuale di prelievo del deposito (supponiamo il 2%) e

5- un certo numero di punti (100 pips per le piattaforme a 4 cifre e 1000 per quelle a cinque cifre).

Parametro di uscita Voglio ottenere la dimensione del lotto.

Cioè, (tutto è chiaro per le coppie con quotazioni inverse, EURUSD, GBPUSD, AUDUSD, NZDUSD, cioè se la valuta della quotazione è la valuta del deposito)... al fine di

con un deposito di 1000 sterline, perdo / vinco il 2% (cioè 20 sterline) quando la valuta passa 100(4 cifre)/1000 pips (5 cifre), devo usare 0,02 lot.

(Voglio ripetere che dovrei usare più soldi per il trading di GBPUSD che per EURUSD, o specialmente NZDUSD, ma la mia domanda non riguarda l'uso del denaro, ma la perdita nominale e/o il profitto ... per favore consigliatemi ... sto perdendo la testa ... sto lavorando con questo problema da meno di una settimana). Sono arrivato al punto che ho dovuto calcolare il valore della perdita nelle quotazioni di valuta ... ma come trasformarlo (la perdita) nel desiderato me un sacco di valuta di deposito..... tutto qui ho inciampare ... Grazie per l'aiuto!

 
gochu:

Grazie, per i consigli, ma non ho formulato correttamente la mia domanda.... Voglio calcolare un lotto in base alla quantità di denaro perso/rubato. ...

Guarda la funzione https://docs.mql4.com/ru/marketinformation/marketinfo con l'identificatore di query MODE_TICKVALUE