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

 
Ich bin morgen wieder da... tschüss. Ich danke Ihnen!
 
borilunad:


Es bleibt nur noch eines zu tun: ihn einzuladen, unsere Konten zu investieren! :))

Einverstanden! Vor allem - das Investitionskonto ist schon fertig! :-)
 

Hallo.

Wir brauchen die Funktion, die das Los in Inkrementen berechnet. Was wäre zum Beispiel möglich, um für jede 500er Erhöhung Lose anzupassen?

Also depo 1000 - Los 0,1

Depo 1500 - Los 0,15

2000 - Los 0,2

Bitte geben Sie die Funktion an.

 

Guten Morgen, was bedeutet die Lückenbedingung? Wenn der Kurs um 35 Pips steigt, bewegt sich mein Stoploss 10 Pips unter den Auftrag, d. h. sein Abstand zum Kurs beträgt 45 Pips.

Oder von welcher Art von Lücke sprechen wir?

 
T-G:

Hallo.

Sie benötigen die Funktion, um das Los schrittweise zu berechnen. Dies könnte z. B. für jede Erhöhung um 500 Lose angepasst werden.

Also depo 1000 - Los 0,1

Depo 1500 - Los 0,15

depo 2000 - Los 0,2

Bitte geben Sie die Funktion an.


Es geht auch ohne Funktionen:

extern double depo = 1000.0;

extern double lot    = 0.1; 

double Lot; 

//--------------------------------

int start()

//--------------------------------

double Equ = AccountEquity();

Lot  = NormalizeDouble(lot*Equ/depo,2);
 
T-G:

Hallo.

Wir brauchen die Funktion, die das Los schrittweise berechnet. Dies könnte z. B. für jede Erhöhung um 500 Lose angepasst werden.

Also depo 1000 - Los 0,1

Depo 1500 - Los 0,15

Depo 2000 - Los 0.2

Bitte geben Sie die Funktion an.

Sie könnten es so machen:

//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Автор : TarasBY, taras_bulba@tut.by                                              |
//+-----------------------------------------------------------------------------------+
//|        Расчитываем размер лота (ступенчато)                                       |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
double fGet_Lots (double fd_BeginLot = 0.1,        // начальный размер лота
                  int fi_BeginDepo = 1000,         // начальный размер депозита
                  int fi_IncrementDepo = 500,      // приращение депозита
                  double fd_IncrementLot = 0.05)   // приращение лота
{
    double ld_Balance = AccountBalance();
//----
    if (ld_Balance < fi_BeginDepo + fi_IncrementDepo) return (fd_BeginLot);
    int li_K_Lot = (ld_Balance - fi_BeginDepo) / fi_IncrementDepo;
//----
    return (fd_BeginLot + fd_IncrementLot * li_K_Lot);
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+

Vergessen Sie nur nicht, die Partie zu normalisieren.

 
Hat ein Ticket über dem Start ausgestellt. Jetzt wird nur noch ein Auftrag geändert, aber das ist ein weiterer Fehler! Andernfalls wurde die Variable innerhalb der ifs deklariert.
 
Dimka-novitsek:

Guten Morgen, was bedeutet eine Lückenbedingung? Wenn der Kurs um 35 Pips steigt, bewegt sich mein Stoploss 10 Pips unter den Auftrag, d. h. sein Abstand zum Kurs beträgt 45 Pips.

Oder von welcher Art von Lücke sprechen wir?


Guten Morgen, erfrischter Kopf!

Während wir einen Änderungsauftrag senden, empfangen und ausführen, steht der Kurs nicht still, er steigt oder fällt, wer weiß!

#include <stderror.mqh>
#include <stdlib.mqh> 
//-------------------

extern int prev = 30;//зазор! Для 5-знака!
extern int sl   = ??;
extern int tp   = ??;
//------------------
int start()
{
//------------------
//----------------------/  Stops & Trailing  \----------------------\\
  for(int i = 0; i < OrdersTotal(); i++)
  {
    if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
    {
      if(OrderSymbol() != Symbol() && OrderMagicNumber() != Magic) continue;
      if(OrderCloseTime() != 0) continue;
      if(OrderType() == OP_BUY)
      {
        if(OrderStopLoss() < OrderOpenPrice() || OrderStopLoss() == 0)
        {
//----------------------
          if(OrderStopLoss() == 0)
          if(Bid < OrderOpenPrice() && Bid > NormalizeDouble(OrderOpenPrice()-sl*Point+prev*Point,Digits))
          if(Bid > NormalizeDouble(OrderOpenPrice()-sl*Point+prev*Point,Digits))
          {
            SL = NormalizeDouble(OrderOpenPrice()-sl*Point,Digits);
            if(Bid < NormalizeDouble(OrderOpenPrice()+tp*Point-prev*Point,Digits))
            {
              TP = NormalizeDouble(OrderOpenPrice()+tp*Point,Digits);
              ModifyOrder(OrderTicket(),OrderOpenPrice(),SL,TP,0,Blue);return(0);
        } } }
//-----------------------
//------------------------/  Modify Order  \------------------------\\
void ModifyOrder(int ticket,double price,double stoploss,double takeprofit,datetime e,color arrow_color)
{
  int ModifyCnt = 0, err;
  while(ModifyCnt < 3)
  {
    if(OrderModify(ticket,NormalizeDouble(price,Digits),NormalizeDouble(stoploss,Digits),
    NormalizeDouble(takeprofit,Digits),0,arrow_color))
    ModifyCnt = 3;
    else err = GetLastError();
    if(err > 0)
    { 
      Print(ModifyCnt," #",ticket," Error modifing order: (", err , ") " , ErrorDescription(err));
      Sleep(3000); RefreshRates(); ModifyCnt++;
} } }

Und bei Sall ist es entsprechend umgekehrt! Viel Glück beim Herausfinden ohne Kommentar, der meiner Meinung nach überflüssig ist!

Und schauen Sie bitte in das russische Erklärungswörterbuch, damit Ihre Beiträge besser lesbar sind.

Ich schaue manchmal nach oben, da ich seit mehr als 10 Jahren in einer anderen Sprache denke und mir Ihre "Innovationen" nicht bewusst sind... :))

 
Dimka-novitsek:

Guten Tag! Fehler bei der Auftragsänderung 4051. Ich habe eine Stunde lang nachgedacht. Das scheint der richtige Parameter zu sein!!! Kurz und knapp, Note für Note. Der Parameter price ist der Eröffnungskurs des Auftrags, OrderOpenPrice(), er ist Standard.

Unser Stoppkurs liegt 10 Punkte unter dem Eröffnungskurs, und wir haben uns den Kurs gemerkt. Wir speichern sie in der Variablen tsena, wenn wir die Bestellung öffnen.

Wir haben zwei Aufträge, einen mit und einen ohne Gewinn. Das scheint klar zu sein. Worin besteht der Fehler? Was könnte es sonst sein?

Ja, die Bedingung scheint klar zu sein, obwohl sie nicht wirklich relevant ist. D.h., der Kurs hat sich um 30 Punkte bewegt, die Bedingung hat funktioniert (tsena+30*Punkt).

Wir haben einmal perenos=true gesetzt; diese Bedingungen scheinen tatsächlich zu funktionieren.

Ich weiß nicht, wie ich darüber denken soll.

Tragen Sie einmal perenos=true; Diese Bedingungen mussten nicht beachtet werden, da es nirgendwo getragen hat.

Diese Zeile:

        int tacket = OrderSend (Symbol(), OP_BUY, lot, NormalizeDouble (Ask, Digits), 5, NormalizeDouble (Ask - (35 * Point), Digits), 
            NormalizeDouble (Ask + (45 * Point), Digits), NULL, 450, 0, CLR_NONE);

und dann (nicht bei diesem Tick) diese Variable zu verwenden, um einen Auftrag mit Tick = 0 zu ändern (die Variable wird zurückgesetzt), zeigt, dass Sie die Grundlagen nicht kennen - beginnen Sie mit den Konzepten der lokalen und globalen Variablen.

Und das Öffnen einer Kopie der gerade geöffneten Bestellung nach 2 Sekunden - DAS IST HÖCHSTES PILOTAGE!!! - Ich weine... :)))

 
DANKESCHÖN!!!