[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 39

 
forexnew:

Wenn Sie zunächst das Verhältnis von StartBalance zu StarLots entsprechend den eingestellten Risiken festgelegt haben, muss der Eigenkapitalwert bestimmt werden:

if(Kontoguthaben()<Startguthaben) Aufstockung = (Kontoguthaben()+(Startguthaben-Kontoguthaben()))*Neues Lot/StarLots

Dies gilt nicht für AccountCredit(). Wenn ich Sie richtig verstehe, natürlich.


Dort ist bereits eine Formel angegeben:

Sie könnendas benötigte (zusätzliche) Volumen anhand der Formelberechnen: V(zusätzlich)= (SummeInv / Eigenkapital) * Lots

Wo:
SumInv - Betrag der neuen Hinzufügung - seine Größe sollte irgendwie bekannt sein, programmatisch berechnet für den spezifischen Moment der Zeit (vorher bekannt),
Eigenkapital - Eigenkapital des Kontos zum gleichen Zeitpunkt - dieser Wert wird von der Funktion erhalten, die Informationen über das Handelskonto erhält:

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


Lots - Volumen der zuvor (zu Beginn) gekauften Vermögenswerte, z. B. 1 Lot.
Das bedeutet, dass Sie für die Korrektur von Positionen den Wert der VariablenSumInv...

Wie lässt sich die programmatische Berechnung dieser Variablen am besten lösen, sofern sie nicht gleich Null ist?

 
Roman.:


Die Formel ist dort bereits angegeben:

Sie könnendas benötigte (zusätzliche) Volumen anhand der Formelberechnen: V(extra) = (SummeInv / Eigenkapital) * Lots

Wo:
SumInv - Betrag der neuen Hinzufügung - seine Größe sollte irgendwie bekannt sein, programmatisch berechnet für den spezifischen Moment der Zeit (vorher bekannt),
Eigenkapital - Eigenkapital des Kontos zum gleichen Zeitpunkt - dieser Wert wird von der Funktion erhalten, die Informationen über das Handelskonto erhält:


Lots - Volumen der zuvor (zu Beginn) gekauften Vermögenswerte, z. B. 1 Lot.
Das bedeutet, dass Sie den Wert der VariablenSumInv... kennen müssen, um Positionen zu korrigieren.

Wie lässt sich die programmatische Berechnung dieser Variablen am besten lösen, sofern sie nicht Null ist?

Ich weiß nicht, worauf Sie Ihre Berechnungen stützen können, wenn Sie nicht wissen, um wie viele Lose Sie Ihr Ausgangslos erhöhen wollen. Dies ist ein rein menschlicher Faktor:

SumInv = "Ich möchte mein Guthaben um x Pfund erhöhen" + StartGuthaben-Equity

Oder wissen Sie nicht, welches die optimale Ausgangsbilanz ist, auf die Sie sich verlassen können? Sie muss auf der Grundlage der Größe der Stopps und der Hebelwirkung berechnet werden.

In meinem EA basieren alle Berechnungen auf der Größe der Stops, also dem optimalen Startguthaben (es muss nicht unbedingt gleich dem Startguthaben sein), und dann gibt es eine automatische Berechnung des Startloses.


 
forexnew:

Ich weiß nicht, womit ich anfangen soll, wenn ich nicht weiß, um wie viele Lose ich die Startmenge erhöhen soll. Dies ist ein rein menschlicher Faktor:

SumInv = "Ich möchte mein Guthaben um x Pfund erhöhen" + StartGuthaben-Equity

Oder kennen Sie nicht die optimale Ausgangsbilanz? Sie muss anhand der Größe der Stopps und der Hebelwirkung berechnet werden.

In meinem EA basieren alle Berechnungen auf der Größe der Stops, also dem optimalen Startguthaben (es muss nicht unbedingt gleich dem Startguthaben sein), und dann geht die automatische Berechnung des Startloses.


Alles ist bekannt. Das Anfangslos wird im Verhältnis zu den Einzahlungen nach der oben genannten Formel erhöht. Lesen Sie noch einmal den Link, um die Informationen zu lesen - Anpassungen an das Volumen der Position, wenn Sie Geld einzahlen/abheben.
Sie, wenn Sie auf das Thema - nur versuchen, die Frage zu beantworten: Wie die Software zu bestimmen (mit einem Algorithmus, oder irgendwelche Formeln, wenn Sie nicht direkt auf das Konto Informationen Funktion ) - gab es keine Ergänzungen zu einem Handelskonto zu welcher Zeit (zuvor bekannt) während des Tages (sagen wir, um 00 Uhr). Die anderen Variablen zur Berechnung des zusätzlichen Volumens in der obigen Formel, das für die Aufstockung auf das vorherige (Ausgangs-)Volumen erforderlich ist, sind bekannt.

Leute, sagt mir...

 
Roman.:

Es ist alles bekannt. Das Anfangslos wird im Verhältnis zu den Einzahlungen nach der oben genannten Formel erhöht. Lesen Sie noch einmal die Informationen im Link - Anpassungen des Positionsvolumens bei Einzahlung/Abhebung.
Sie, wenn Sie auf das Thema - versuchen Sie einfach, die Frage zu beantworten: Wie die Software zu bestimmen (mit einem Algorithmus, oder irgendwelche Formeln, wenn Sie nicht direkt auf das Konto Informationen Funktion ) - gab es keine Ergänzungen zu einem Handelskonto zu einem beliebigen (zuvor bekannten) Zeitpunkt während des Tages (sagen wir um 00 Uhr). Die anderen Variablen zur Berechnung des zusätzlichen Volumens in der obigen Formel, das für die Aufstockung auf das vorherige (Ausgangs-)Volumen erforderlich ist, sind bekannt.

Leute, ein Hinweis...

Jetzt ist es klar. Angenommen, wir müssen programmatisch berechnen, ob am letzten Tag eine Auffüllung/Abhebung stattgefunden hat. Ich füge den Indikator bei. Sie müssen nur den Saldo zu Beginn des Berechnungszeitraums und die Anzahl der Berechnungstage eingeben. Ich hoffe, ich verstehe Sie jetzt richtig.

Dateien:
balans_9.mq4  6 kb
 

Hallo zusammen!

Ich bin wieder bei meinem Indikator. Auf Anraten meiner alten Freunde habe ich versucht, eine Schleife zu konstruieren, die den Wert eines Linienpunktes berechnet und das Array des Indikators mit diesen Werten füllt.

Es scheint, als würde es nach und nach richtig werden. Zusammen hängt es das Terminal :=(

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

// {int k=Vnf2;

// ArrayResize(Buf_DN,Vnf2+1);

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

// k--;

// }

 

Ein kleiner Fehler, aber er bleibt bei dieser Variante bestehen

int k=Vnf2;

for (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:
Sie verwenden die Funktionen von Igor Kim. Er hat Definitionen für Aufträge und Positionen. Aufträge sind schwebende Aufträge und Positionen sind Marktpositionen.
Sie versuchen, die Anzahl der schwebenden Aufträge zu berechnen, nicht die Anzahl der offenen Marktpositionen.
 
Ich danke Ihnen vielmals.
Grund der Beschwerde: