[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
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
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 равным значению ltif (lt>=MaxLot) ltcorr=MaxLot; // Проверим превышение допустимых ...if (lt<=MinLot) ltcorr=MinLot; // ... значений лотаdouble Money=lt*OneLot+mspr*pnt; // Вычисляем стоимость открываемой позыif (Money<TradeMrg) // Если свободных средств больше, чем цена позиции -
{
return(ltcorr); // ... возвращаем неизменённый лот
}
elseif (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...
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 =))
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 =))
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;
}
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:
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
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:
и я потом смогу intersectionY использовать только тогда когда оно TRUE, если FALSE, то такой код (intersectionY > Ask) не сработает, правильно я понимаю!?
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.communityFrage 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
Können Sie mir bitte die Funktion nennen, mit der das maximal mögliche Eröffnungsvolumen eines Auftrags berechnet wird?
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...
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...
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 =))
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
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... :)
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:
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:
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 entsprichtwird 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 entsprichtDas heißt, wenn ich das richtig verstehe, kann ich das tun: