[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 39

 
forexnew:

Se inizialmente avete definito il rapporto tra StartBalance e StarLots secondo i rischi impostati, allora il valore del capitale deve essere determinato:

if(AccountEquity()<StartBalance) Top-up = (AccountBalance()+(StartBalance-AccountEquity()))*New Lot/StarLots

Questo esclude AccountCredit(). Se ho capito bene, naturalmente.


Una formula è già data lì:

Potetecalcolare il volume richiesto (aggiuntivo) usando la formula: V(extra)= (SumInv / Equity) * Lotti

Dove:
SumInv - Importo della nuova aggiunta - la sua dimensione dovrebbe essere in qualche modo nota programmaticamente calcolata per il momento specifico del tempo (precedentemente noto),
Equity - Patrimonio del conto nello stesso momento - questo valore si ottiene dalla funzione che ottiene informazioni sul conto di trading:

double AccountEquity( ) 
Возвращает сумму собственных средств для текущего счета.  


Lotti - Volume di beni acquistati in precedenza (all'inizio), diciamo 1 lotto.
Ciò significa che per correggere le posizioni, è necessario conoscere il valore della variabileSumInv...

Qual è il modo migliore per risolvere il calcolo programmatico di questa variabile, sempre che non sia uguale a zero?

 
Roman.:


La formula è già data lì:

Potetecalcolare il volume richiesto (aggiuntivo) usando la formula: V(extra) = (SumInv / Equity) * Lotti

Dove:
SumInv - Importo della nuova aggiunta - la sua dimensione dovrebbe essere in qualche modo nota programmaticamente calcolata per il momento specifico del tempo (precedentemente noto),
Equity - Equità del conto allo stesso punto nel tempo - questo valore si ottiene dalla funzione che ottiene informazioni sul conto di trading:


Lotti - Volume di beni acquistati in precedenza (all'inizio), diciamo 1 lotto.
Ciò significa che per correggere le posizioni, è necessario conoscere il valore della variabileSumInv...

Qual è il modo migliore per risolvere il calcolo programmatico di questa variabile, purché non sia zero?

Non so su cosa basare i tuoi calcoli se non sai di quanti lotti vuoi aumentare il tuo lotto di partenza. Questo è puramente un fattore umano:

SumInv = "Voglio aumentare il mio saldo di x sterline" + StartBalance-Equity

O non conoscete l'equilibrio di partenza ottimale su cui fare affidamento? Deve essere calcolato in base alla dimensione degli stop e alla leva.

Nel mio EA, tutti i calcoli sono basati sulla dimensione degli stop, quindi il bilancio di partenza ottimale (non è necessariamente uguale al bilancio iniziale), e poi c'è un calcolo automatico del lotto di partenza.


 
forexnew:

Non so da cosa cominciare quando non sai quanti lotti vuoi aumentare il lotto di partenza. Questo è puramente un fattore umano:

SumInv = "Voglio aumentare il mio saldo di x sterline" + StartBalance-Equity

O non conosci l'equilibrio ottimale di partenza? Deve essere calcolato dalla dimensione degli stop e dalla leva.

Nel mio EA, tutti i calcoli sono basati sulla dimensione delle fermate, quindi il bilancio ottimale di partenza (non è necessariamente uguale al bilancio iniziale), e poi va calcolo automatico del lotto di partenza.


Tutto è noto. Il lotto iniziale viene aumentato in proporzione ai depositi effettuati secondo la formula di cui sopra. Ancora una volta, leggete il link per leggere le informazioni - aggiustamenti al volume della posizione quando si depositano/prelevano fondi.
Tu, se sei sull'argomento - basta cercare di rispondere alla domanda: Come determinare il software (utilizzando un algoritmo, o eventuali formule, se non è possibile direttamente alla funzione di informazione sul conto ) - ci sono stati eventuali aggiunte a un conto di trading in quale momento (precedentemente noto) durante il giorno (ad esempio, alle ore 00). Le altre variabili per calcolare il volume aggiuntivo nella formula di cui sopra, necessario per il rabbocco a quello precedente (di partenza), sono note.

Ragazzi, ditemi...

 
Roman.:

Si sa tutto. Il lotto iniziale viene aumentato in proporzione ai depositi effettuati secondo la formula di cui sopra. Ancora una volta, leggete le informazioni del link - aggiustamenti al volume della posizione quando depositate/prelevate fondi.
Tu, se sei sull'argomento - basta cercare di rispondere alla domanda: Come determinare il software (utilizzando un algoritmo, o qualsiasi formula, se non è possibile direttamente alla funzione di informazioni sul conto) - ci sono state aggiunte a un conto di trading in qualsiasi (precedentemente noto) momento durante il giorno (diciamo alle ore 00). Le altre variabili per il calcolo del volume aggiuntivo nella formula di cui sopra, necessarie per il rabbocco a quello precedente (di partenza), sono note.

Ragazzi, un suggerimento...

Ora è chiaro. Supponiamo di dover calcolare programmaticamente se c'è stata una ricarica/prelievo nell'ultimo giorno. Allego l'indicatore. Dovete solo inserire il saldo che era all'inizio del periodo di tempo di calcolo e il numero di giorni di calcolo. Spero di aver capito bene.

File:
balans_9.mq4  6 kb
 

Ciao a tutti!

Sono di nuovo con il mio indicatore. Su consiglio dei miei vecchi amici, ho provato a costruire un ciclo che calcola il valore di un punto della linea e riempire l'array dell'indicatore con questi valori.

Sembra che si riesca a fare le cose per bene una per una. Insieme blocca il terminale :=(

//per (i=Vnf2;i>0;i--)

// {int k=Vnf2;

// ArrayResize(Buf_DN,Vnf2+1);

// Buf_DN[i]= EquationDirect(Vnf2,VMF2,Vnf1,VMF1,k);

// k--;

// }

 

Un piccolo errore, ma si blocca ancora in questa variante

int k=Vnf2;

per (i=Vnf2;i>0;i--)

// {

// ArrayResize(Buf_DN,Vnf2+1);

// Buf_DN[i]= EquationDirect(Vnf2,VMF2,Vnf1,VMF1,k);

// k--;

// }


 
Вопрос:  как сделать так ,чтобы эксперт мог открыть только одну позицию?

int NumberOfOrders(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), ko=0, ot;

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
      if (ot>1 && ot<6) {
        if ((OrderSymbol()==sy || sy=="") && (op<0 || ot==op)) {
          if (mn<0 || OrderMagicNumber()==mn) ko++;
        }
      }
    }
  }
  return(ko);

}

использую это примерно так:

if(NumberOfOrders(NULL)==0)
            {
            Print("Вошли в цикл");
            
             
                  Print("Покупаю");
                  NumderOrder=OrderSend(Symbol(),OP_BUY,lot,Ask,3,Ask-50*Point,Ask+50*Point,"1",0,0,Red);
                  Print(GetLastError());

                  }

В результате он все равно открывает несколько подряд не закрыв старую. Не могу понять в чем дело. Помогите плиз.

 
nuan:
if (ot>1      У ордеров  Buy ot=0, мож в этом дело?
 
nuan:
State usando le funzioni di Igor Kim. Ha definizioni per ordini e posizioni. Gli ordini sono ordini pendenti e le posizioni sono posizioni di mercato.
Stai cercando di calcolare il numero di ordini pendenti , non il numero di posizioni di mercato aperte.
 
Grazie mille.
Motivazione: