[ARCHIV]Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Ohne dich kann ich nirgendwo hingehen - 5. - Seite 149

 

Bitte beraten Sie einen Neuling, AccountBalance() - es zeigt die Höhe der Mittel in der Balance, aber ich brauche, um meine berechnete Balance (calc_balance) zu berechnen,

Dieses Gleichgewicht ist einfach, aber ich kann es noch nicht schreiben, es gibt eine Gesamtmenge von offenen und schwebenden Aufträgen (Orderstotal), zum Beispiel 3 Aufträge, maximales Risiko pro eine offene Position ist 2%,

Um einen weiteren Handel zu eröffnen, muss ich das maximale Risiko (2%) des berechneten Saldos berechnen, d.h. die Logik der Formel wäre ungefähr: calc_balance=AccountBalance()-2%-2%-2%,

Das heißt, eine konsequente Subtraktion - aber wie man das in Code schreibt, ist mir noch nicht gelungen, ich hoffe auf eure Hilfe.

Vielen Dank im Voraus!

 
Können Sie mir sagen, wie Mittel (AccountEquity() ) und Sicherheiten (AccountMargin() ) für Kauf- und Verkaufspositionen getrennt werden?
 
T-G:
Können Sie mir sagen, wie Mittel (AccountEquity() ) und Sicherheiten (AccountMargin() ) für Kauf- und Verkaufspositionen getrennt werden?
AccountEquity() ist nur für Ihr Konto möglich und AccountMargin() mit Ihren Bedingungen siehe Kims "Nützliche Funktionen"!
 
Meine Herren, kann jemand einen Indikator oder einen Expert Advisor empfehlen, der Unterstützungs- und Widerstandsniveaus auf D1 anzeigt, vorzugsweise ohne Verzögerungen)))
 
Top2n:
Meine Herren, kann jemand einen Indikator oder Expert Advisor empfehlen, die Unterstützung und Widerstand Ebenen auf D1, ohne Verzögerungen vorzugsweise)))
Suche nach: DailyPivotPoints
 

Guten Tag zusammen, ich habe ein Problem und kann nicht herausfinden, woran es liegt.


Es sind zwei Funktionen gegeben. Wenn ich 1 anrufe, funktioniert nichts. Im zweiten Fall funktioniert alles. Bitte geben Sie an, wo der Fehler liegt.

Vielen Dank im Voraus!

int OrderBuy(double pLots, string pComment, int pMagic, int pDatetime, color pColor)
{
   int ticket = 0;
   int err = 0;
   int c = 0;
   int NumberOfTries = 100;
   for (c = 0; c < NumberOfTries; c++) 
     {
         RefreshRates();
         ticket = OrderSend(Symbol(), OP_BUY, pLots, Ask, 0, Ask-0.0005, Ask+0.0005, pComment, pMagic, pDatetime, pColor);
         err = GetLastError();
         if (err == 0/* NO_ERROR */) break;
         if (!(err == 4/* SERVER_BUSY */ || err == 137/* BROKER_BUSY */ || err == 146/* TRADE_CONTEXT_BUSY */ || err == 136/* OFF_QUOTES */)) break;
         Sleep(5000);
      }
      return(ticket);

}


int OrderSell(double pLots, string pComment, int pMagic, int pDatetime, color pColor)
{
   int ticket = 0;
   int err = 0;
   int c = 0;
   int NumberOfTries = 100;
   
   for (c = 0; c < NumberOfTries; c++) 
   {
         RefreshRates();
         ticket = OrderSend(Symbol(), OP_SELL, pLots, Bid, 0, Bid+0.0005, Bid-0.0005, pComment, pMagic, pDatetime, pColor);
         err = GetLastError();
         if (err == 0/* NO_ERROR */) break;
         if (!(err == 4/* SERVER_BUSY */ || err == 137/* BROKER_BUSY */ || err == 146/* TRADE_CONTEXT_BUSY */ || err == 136/* OFF_QUOTES */)) break;
         Sleep(5000);
    }
    return(ticket);

}





//вызовы функций

ticket = OrderBuy(lot, "---"+count+" ---", MagicNumber, 0, HotPink);
         Print(ticket+":тикет");//здесь выдает -1
         if (ticket < 0) 
               {
                  Print("Error: ", GetLastError());//здесь выдает "0";
                  return (0);
               } 




ticket = OrderSell(lot, "---"+count+" ---", MagicNumber, 0, HotPink);
         Print(ticket+":тикет");
         if (ticket < 0) 
               {
                  Print("Error: ", GetLastError());
                  return (0);
               } 
 
Wenn Sie sich an die Berechnungen des Terminals halten wollen, ist es am einfachsten, von dem, was Sie haben, das abzuziehen, was übrig bleibt, wenn Sie einen entsprechenden Auftrag eröffnen:
double ld_MarginPosition = AccountFreeMargin() - AccountFreeMarginCheck();
 
arabon:

Guten Tag zusammen, ich habe ein Problem und kann nicht herausfinden, woran es liegt.


Es sind zwei Funktionen gegeben. Wenn ich 1 anrufe, funktioniert nichts. Im zweiten Fall funktioniert alles. Bitte geben Sie an, wo der Fehler liegt.

Vielen Dank im Voraus!


DieFunktion GetLastError(), die in OrderSell und OrderBuy in der Schleife vorkommt, setzt den Wert des Fehlers zurück (siehe Hilfe zu GetLastError ATTENTION), daher

Print("Error: ", GetLastError());

Versuchen Sie, ihn direkt in der Schleife auszudrucken, dann werden Sie sehen, wo der Auftrag aufgrund eines Fehlers nicht geöffnet wird.

 

Ich habe einen einfachen Indikator erstellt, der das Instrument "umdreht". Manchmal ist es für die Wahrnehmung einfacher, ein Paar umgekehrt zu sehen, und das Auge wird beim Betrachten desselben Bildes "verwaschen". Ich habe noch nie aus einer Datei gelesen (ich habe noch nie versucht, mit einer Datei zu arbeiten), ich kann ein vollwertiges Diagramm anzeigen, hat jemand eine Idee?


Dateien:
converter.mq4  2 kb
 

Ich habe sie immer noch nicht gefunden, weder bei der Suche noch bei Kims Funktionen.

Wie berechnet man die Marge für offene Aufträge korrekt und separat?

Ich habe es immer so gemacht:

в цикле
if (OrderType() == OP_BUY ) {  
   MarginBuy += (OrderOpenPrice()*OrderLots()/AccountLeverage())*MarketInfo(Symbol(), MODE_LOTSIZE);
}
         
if (OrderType() == OP_SELL ) {  
   MarginSell += (OrderOpenPrice()*OrderLots()/AccountLeverage())*MarketInfo(Symbol(), MODE_LOTSIZE);
}

Ich habe einen anderen Wert als den, den das Terminal anzeigt

Wenn Sie die Berechnungen des Terminals anpassen wollen, ist es am einfachsten, von dem, was Sie haben, das abzuziehen, was übrig bleibt, wenn Sie den entsprechenden Auftrag öffnen:
double ld_MarginPosition = AccountFreeMargin() - AccountFreeMarginCheck();


Man kann sie nicht einfach subtrahieren, sondern muss für jede Richtung eine eigene Berechnung durchführen.

Grund der Beschwerde: