[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 814

 
Öffnen[1] Schließen[1]
 

Saldo 600-1199 Los 0,1

Saldo 1200-1799 Los 0,2

Saldo 1800-2399 Los 0,3 usw.

Wie organisiert man sich in der EA? Ich danke Ihnen.

 
Maniac:

Saldo 600-1199 Los 0,1

Saldo 1200-1799 Los 0,2

Saldo 1800-2399 Los 0,3 usw.

Wie organisiert man sich in der EA? Ich danke Ihnen.

double Lot()
{
   double balance=AccountBalance();
   if (balance>600 && balance<1199) return(0.1);
   if (balance>1200 && balance<1799) return(0.2);
   if (balance>1800 && balance<2399) return(0.3);
return(MarketInfo(Symbol(), MODE_MINLOT));
}
 

Aufruf: ticket=OrderSend(Symbol(),OP_BUY,Lot(),Ask,3,Bid-25*Point,Ask+25*Point, "Mein Auftrag #",magic,0,CLR_NONE);
 
IgorM:

Aufruf: ticket=OrderSend(Symbol(),OP_BUY,Lot(),Ask,3,Bid-25*Point,Ask+25*Point, "Mein Auftrag #",magic,0,CLR_NONE);

Gleichzeitig kann das Gleichgewicht in den Wolken liegen, und die Aktienkurse können stark sinken. Daher kann es sein, dass das Grundstück größer erscheint, als es geöffnet werden kann, und die gesamte Struktur wird über Bord gehen...

Vor der Eröffnung ist es besser, die Partie auf das tatsächlich Mögliche zu korrigieren.

Zu diesem Zweck habe ich eine Funktion erstellt. Sie wurde von Viktor(Vinin) leicht korrigiert - probieren Sie es aus:

// ===========================================================================
// --- Функция рассчёта величины лота для открытия позиции. Редакция VininI---
// Если лот превышает возможный для открытия позы, то он корректируется 
// ===========================================================================

double CorrectLots(double lt)
{
   double ltcorr;
   double pnt =      MarketInfo(Symbol(),MODE_POINT);
   double mspr =     MarketInfo(Symbol(),MODE_SPREAD);
   double dig =      MarketInfo(Symbol(),MODE_DIGITS);
   double MaxLot =   MarketInfo(Symbol(),MODE_MAXLOT);
   double MinLot =   MarketInfo(Symbol(),MODE_MINLOT);
   double StpLot =   MarketInfo(Symbol(),MODE_LOTSTEP);
   double OneLot =   MarketInfo(Symbol(),MODE_MARGINREQUIRED);
   double TradeMrg = NormalizeDouble(AccountFreeMargin()/4.0,dig);    // Свободные средства, разрешенные к торговле
   
   
   double Money=lt*OneLot+mspr*pnt;          // Вычисляем стоимость открываемой позы
   if (Money>=TradeMrg)                      // Если цена позиции равна или больше, чем есть свободных средств, то ...
      {
         lt=MathFloor(TradeMrg/OneLot/StpLot)*StpLot;  // ... рассчитаем допустимый лот
         Print("Func CorrectLots: полученный лот ",lt," скорректирован под допустимый ",lt); 
      }
      else 
         Print("Func CorrectLots: лот вернули без изменений");
   lt=MathMin(MaxLot, MathMax(MinLot, lt)); // Проверим превышение допустимых ...
   
   return(lt);                            
}

In der Reihe.

double TradeMrg = NormalizeDouble(AccountFreeMargin()/4.0,dig);    // Свободные средства, разрешенные к торговле

... Die freie Marge wird durch vier geteilt, und nur ein Viertel der freien Mittel kommt für den Handel in Frage.

Sie können die Division durch 4 aufheben und so viel einfügen, wie Sie wollen, sogar den gesamten Rand verwenden.

Die Funktion lässt jedoch nicht zu, dass Sie eine größere Losgröße als erlaubt verwenden.

 
artmedia70:
Gleichzeitig kann der Saldo in den Wolken sein, während das Eigenkapital in der großen Drawdown ist. Dementsprechend kann das Los größer erscheinen, als es geöffnet werden kann, und die gesamte Struktur wird über Bord gehen...


Warum ist alles so traurig...

das letzte return() in meiner Funktion gibt das minimale Lot an, das für das Instrument verfügbar ist. Wenn das Konto ein Cent-Konto mit einer großen Hebelwirkung ist, kann der Expert Advisor bei einem Kontostand von weniger als 600 noch einige Zeit handeln :)

SZZY: Das Problem ist spezifisch und der Zweig soll dem Fragesteller eine Richtung geben.

 
IgorM:


warum ist es so traurig...

das letzte return() in meiner Funktion gibt das minimale Lot an, das für das Instrument verfügbar ist. Wenn das Konto ein Cent-Konto mit einer großen Hebelwirkung ist, kann der Expert Advisor bei einem Kontostand von weniger als 600 noch einige Zeit handeln :)

SZZY: Das Problem ist spezifisch, und der Zweig soll dem Fragesteller eine Richtung geben

Nun, verzeihen Sie mir großzügig... :) Seien Sie nicht böse, Sir... :)

Hier ist eine Funktion in meiner Version:

// ==========================================================================
// ------------ Функция рассчёта величины лота для открытия позиции ---------
// Если лот превышает возможный для открытия позы, то он корректируется 
// ==========================================================================

double CorrectLots(double lt)
{
   double ltcorr;
   double pnt =      MarketInfo(Symbol(),MODE_POINT);
   double mspr =     MarketInfo(Symbol(),MODE_SPREAD);
   double dig =      MarketInfo(Symbol(),MODE_DIGITS);
   double MaxLot =   MarketInfo(Symbol(),MODE_MAXLOT);
   double MinLot =   MarketInfo(Symbol(),MODE_MINLOT);
   double StpLot =   MarketInfo(Symbol(),MODE_LOTSTEP);
   double OneLot =   MarketInfo(Symbol(),MODE_MARGINREQUIRED);
   double TradeMrg = NormalizeDouble(AccountFreeMargin()/4.0,dig);      // Свободные средства, разрешенные к торговле
   
   lt=MathAbs(lt);
   ltcorr=lt;                       // Зададим начальное значением ltcorr равным значению lt
   
   if (lt>=MaxLot) ltcorr=MaxLot;   // Проверим превышение допустимых ...
   if (lt<=MinLot) ltcorr=MinLot;   // ... значений лота
   
   double Money=lt*OneLot+mspr*pnt; // Вычисляем стоимость открываемой позы

   if (Money<TradeMrg)              // Если свободных средств больше, чем цена позиции - 
      {
         return(ltcorr);            // ... возвращаем неизменённый лот
      }
   else if (Money>=TradeMrg)        // Если цена позиции равна или больше, чем есть свободных средств, то ...
      {
         ltcorr=MathAbs(MathFloor(TradeMrg/OneLot/StpLot)*StpLot);       // ... рассчитаем допустимый лот
         double MoneyCorr=ltcorr*OneLot+mspr*pnt;                      
         Print("Func CorrectLots: лот ",lt," скорректирован до ",ltcorr,
               " Стоимость позы до корректировки = ",Money,
               " Стоимость позы после корректировки = ",MoneyCorr
               ); 
         return(ltcorr);                                                 // ... и вернём его значение
      }
   Print("Func CorrectLots: лот вернули без изменений");
   return(ltcorr);                                                       // Возврат изначального лота в непредусмотренных случаях с сообщением
}
 
IgorM:


Warum ist es so traurig...

das letzte return() in meiner Funktion gibt das minimale Lot an, das für das Instrument verfügbar ist. Wenn das Konto ein Cent-Konto mit einer großen Hebelwirkung ist, kann der Expert Advisor bei einem Kontostand von weniger als 600 noch einige Zeit handeln :)

SZZY: das Problem ist spezifisch, und der Zweig soll dem Fragesteller eine Richtung geben

Siehst du, Igor, der Mann hat dir eine Frage gestellt, du hast ihm die richtige Antwort gegeben, und du kannst die Sache sozusagen vergessen. Aber auf der Waage zu tanzen ist nicht gut. Aus dem Grund, dass das Gleichgewicht in der Luft liegen kann, und die reale Situation - es ist Zeit zu sparen. Und hier sind wir, hr-r-r-r-rating... ...und ein großes Los am Anfang der Bestellung... und er ist am Boden... Auch das Eigenkapital, obwohl es bereits
schon da... Ich habe Ihnen also gesagt, dass es besser wäre, sich auf das Eigenkapital zu verlassen als auf die Bilanz... :)

 

Guten Tag!

Können Sie bitte beraten einen Neuling, ist es möglich,einen benutzerdefinierten Indikator in MQL4 zu schreiben, so dass es gleichzeitig alle Währungspaare behandeln kann? Soweit ich weiß, ist die maximale Anzahl von Linien in einem Indikatordiagramm 8, aber ich brauche nur eine Linie. D.h. kann ich ein Array von Arrays oder Variablen für alle Währungspaare gleichzeitig für diese Zeile erhalten?

Vielen Dank im Voraus für die Antwort.

 
Igor_Sev:

D.h. kann ich ein Array für diese Zeile erhalten, das aus Arrays oder Variablen für alle Währungspaare zur gleichen Zeit verarbeitet wird?


Theoretisch sehe ich keine Hindernisse. Eine andere Frage ist, ob Sie dieses Feld gezielt bearbeiten können.
 
Roger:

Theoretisch sehe ich keine Hindernisse. Eine andere Frage ist, ob Sie dieses Feld verarbeiten können.


Wie kann ich beim Schreiben eines Tools alle Währungspaare im Programmcode ansprechen? Ich habe mir die Beispiele für die Erstellung eines Tools angesehen. Es gibt keinen Verweis auf ein Währungspaar, das mit einem bestimmten Kurschart verknüpft ist, das standardmäßig verarbeitet wird.

Die Sache ist die, dass jetzt Excel und VBA tun es alle, ich bekomme Informationen über 22 Währungspaare durch DDE-Server und durch die Verwendung von VBA-Code ich meine gleichzeitige Verarbeitung, aber es ist nicht bequem, weil erstens habe ich zu warten, 2 Stunden für Daten Geschichte Akkumulation, um die Analyse von Excel-Diagramme. Und es ist nicht bequem, von einem Programm zum anderen zu wechseln, deshalb überlege ich, wie ich das alles auf MT4 übertragen kann.

Grund der Beschwerde: