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

 
Multy:

Ich verstehe.

Übrigens, gibt es einen Timer in MQL4 oder nur in MQL5?

Wahrscheinlich nur diese Funktionen:

https://www.mql5.com/ru/search?utm_campaign=MQL4.community

https://www.mql5.com/ru/search?utm_campaign=MQL4.community
 
kwadrad:

Frage an die aksakals

Das Prüfgerät hat plötzlich aufgehört zu funktionieren und keine historischen Daten mehr geliefert.

Was soll ich damit machen?

zu Ihrer Information: das Archiv der Zitate wurde heruntergeladen


Es half mir, das Terminal neu zu starten und die heruntergeladenen Zitate vorher im Ordner: C:\Programme\MetaTrader - Alpari\history\Alpari-Micro2 zu löschen

dann das Zitatarchiv erneut heruntergeladen

 
Noterday:
Können Sie mir bitte die Funktion nennen, mit der das maximal mögliche Eröffnungsvolumen eines Auftrags berechnet wird?
Ich gebe Ihnen eine Rute... :)
Die nachstehende Funktion enthält alle Daten, die Sie zur Berechnung der benötigten Parameter benötigen. Ich bin so faul, ich kann nicht mal in die Tasten hauen...

Sie können finden, was Sie brauchen und es selbst ändern... Der Code selbst ist so einfach und zugänglich, dass niemand Probleme haben wird, ihn nachzumachen...

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

double CorrectLots(double lt, double divider=4.0)        // lt = проверяемый лот, divider = на сколько разделить
{                                                        //                                 свободные средства
   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()/divider,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);                 // Возврат изначального лота в непредусмотренных случаях с сообщением
}

Eine Frage...

Wozu braucht man einen Handel wie den mit Hitler am Ende des Krieges... Er rekrutierte Kinder in der Hitlerjugend, sozusagen das Fleisch für einen Schuss der Faust-Patrone...

Lässt keine Glocken läuten?????

IMHO, natürlich...

 
artmedia70:
Ich gebe Ihnen eine Rute... :)
Die folgende Funktion enthält alle Daten zur Berechnung der benötigten Parameter. Ich bin so faul, dass ich nicht einmal in die Tasten hauen kann...

Sie können finden, was Sie brauchen und es selbst ändern... Der Code selbst ist so einfach und zugänglich, dass niemand Probleme haben wird, ihn nachzumachen...

Eine Frage...

Wozu braucht man einen Handel wie den mit Hitler am Ende des Krieges... Er rekrutierte Kinder in der Hitlerjugend, sozusagen das Fleisch für einen Schuss der Faust-Patrone...

Lässt keine Glocken läuten?????

IMHO, natürlich...


Danke!

Ich werde nicht mit dem maximalen Volumen öffnen, sondern muss es nur anhand der Depotgröße berechnen, um weitere mathematische Operationen durchzuführen =))

 
Noterday:

Ich danke Ihnen!

Ich werde nicht mit dem maximalen Volumen öffnen, ich muss es nur auf der Grundlage der Größe des Depos für weitere mathematische Operationen berechnen =))



für BUY:

NormalizeDouble(AccountFreeMargin()-AccountFreeMarginCheck(Symbol(),OP_BUY,lot),2)

Für SELL:

NormalizeDouble(AccountFreeMargin()-AccountFreeMarginCheck(Symbol(),OP_SELL,lot),2);

Los - die Variable, die das Auftragsvolumen enthält

das Berechnungsergebnis sollte auf >0 geprüft werden

https://www.mql5.com/ru/search

 
IgorM:


für BUY:

NormalizeDouble(AccountFreeMargin()-AccountFreeMarginCheck(Symbol(),OP_BUY,lot),2);

Für SELL:

NormalizeDouble(AccountFreeMargin()-AccountFreeMarginCheck(Symbol(),OP_SELL,lot),2);

Los - Variable mit dem Auftragsvolumen

https://www.mql5.com/ru/search

... Nun, Igor, du hast es eilig... :)

Bevor ich Zeit hatte, meine Finger auf die Tastatur zu legen, hatten Sie bereits geantwortet... :)

 
Ich danke Ihnen allen!
 

Hallo!

Können Sie einen Code oder einen Zweig vorschlagen, wie man sich Indikatorlinienkreuzungen mit dem Preis merkt. ich habe es irgendwo gesehen, kann es aber nicht finden. Ich habe es irgendwo gesehen, aber ich kann es nicht finden.

Ich weiß nicht, ob ich daran interessiert bin, aber ich bin eher an so etwas wie dem hier interessiert:

int start()

  { 

 double LineX = iCustom ("EURUSD", Period_H1, "Indicator",0,0);

 double lineY = iCustom ("EURUSD", Period_H1, "Indicator",1,0);

double priceA = Ask;

double priceB = Bid;

double intersectionX = (LineX == priceA) ;

double intersectionY = (LineY == priceB) ;

// а так же еще определить, какое пересечение последнее, а какое предпоследние 

// intersectionX = последнее пересечение и на оборот
// intersectionY = предпоследние пересечение и на оборот

// то есть я понимаю логику, а  вот связать в коде не могу.
 
//произошло intersectionX,   то intersectionFirst = intersectionX; intersectionSecond = intersectionY;

// произошло intersectionY, то intersectionFirst = intersectionY; intersectionSecond = intersectionX;


 }
 
belck:

Hallo!

Können Sie einen Code oder einen Zweig vorschlagen, wie man sich Indikatorlinienkreuzungen mit dem Preis merkt. ich habe es irgendwo gesehen, kann es aber nicht finden. Ich habe es irgendwo gesehen, aber ich kann es nicht finden.

Ich möchte wissen, ob die Indikatorlinie den Preis gekreuzt hat, aber ich bin mehr an diesem Punkt interessiert:


Jeder Crossover wird optimal als Differenz zwischen dem Preis (Ask/Bid) und der Indikatorlinie betrachtet, d.h.

if (Ask-iCustom ("EURUSD", Period_H1, "Indikator",0,0) > 0) Comment("Preis über dem Indikator"); else Comment("Preis unter dem Indikator");

Wenn Sie die Differenz dieser Werte vergleichen, brauchen Sie sie für einen korrekten Vergleich nicht zu normalisieren

speziell zu Ihrer Frage - ein Kreuzen der Indikatorlinie durch den Preis ist der Moment, in dem die Ask- -iCustom()-Differenz während der vorherigen Berechnung unter Null lag und dann höher wurde, oder umgekehrt

Wie Sie diesen Zeitpunkt berechnen, ist Ihre Sache - vielleicht nach dem vorherigen Balken oder nach jedem Tick, aber solche Kombinationen:

double intersectionX = (LineX == priceA) ;

double intersectionY = (LineY == priceB) ;
Sie werden schneller in das Labyrinth der diskreten Mathematik geführt, als Sie das gewünschte Ergebnis erhalten können - der Ausdruck in der Klammer wird entweder 0 oder 1 sein, was der numerischen Darstellung von falsch und wahr entspricht
 
IgorM:


wird jede Kreuzung optimal als Differenz zwischen dem Preis (Ask/Bid) und der Indikatorlinie betrachtet, d.h.

if (Ask-iCustom ("EURUSD", Period_H1, "Indikator",0,0) > 0) Comment("Preis über Indikator"); else Comment("Preis unter Indikator");

Wenn Sie die Differenz dieser Werte vergleichen, brauchen Sie sie für einen korrekten Vergleich nicht zu normalisieren

speziell zu Ihrer Frage - ein Kreuzen der Indikatorlinie durch den Preis ist der Moment, in dem die Ask- -iCustom()-Differenz während der vorherigen Berechnung unter Null lag und dann höher wurde, oder umgekehrt

Wie Sie diesen Moment berechnen, ist Ihre Sache - sei es auf dem vorherigen Balken, sei es bei jedem Tick, aber solche Kombinationen:

Sie werden schneller in das Labyrinth der diskreten Mathematik geführt, als Sie das gewünschte Ergebnis erhalten können - der Ausdruck in der Klammer wird entweder 0 oder 1 sein, was der numerischen Darstellung von falsch und wahr entspricht

Das heißt, wenn ich das richtig verstehe, kann ich das tun:

bool intersectionX = FALSE,
     intersectionY = FALSE;
int start()

  { 
if  (Ask-iCustom ("EURUSD", Period_H1, "Indicator",0,0) == 0)  {
intersectionX = TRUE;
intersectionY = FALSE;
}
if  (iCustom ("EURUSD", Period_H1, "Indicator",1,0)-Bid == 0) {
intersectionY = TRUE;
intersectionX = FALSE;
}
}
и я потом смогу intersectionY использовать только тогда когда оно TRUE, если FALSE, то такой код (intersectionY > Ask) не сработает, правильно я понимаю!?