Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Und hier eine weitere Frage an Igor.
Haben Sie eine separate benutzerdefinierte (oder andere) Funktion erstellt, um die Kauf-/Verkaufsposition umzukehren und umgekehrt, ohne die übliche OrderClose - OrderSend?
Ich bin nicht Igor, aber es gibt eine Standardfunktion OrderCloseBy zum Umdrehen.
Hallo, ich brauche Hilfe bei der Lösung eines Problems. Lassen Sie mich versuchen, es zu beschreiben:
Es gibt eine Funktion, die Aufträge zählt:
int OrdersAll(int mag)
{
int kolvo=0;
for (int i=OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if((OrderType()==OP_BUY || OrderType()==OP_SELL) && OrderSymbol()==Symbol() && OrderMagicNumber() == mag )
kolvo++;
}
}
return(kolvo);
}
Wenn für das aktuelle Symbol kein Auftrag vorliegt, sollte bei Erfüllung der Bedingung ein Auftrag, z. B. zum Kauf, erteilt werden:
if(OrdersAll(MAGICNO)==0)
{
if(condition)
{
op=Ask;if(SL>0){sl=Ask-SL*Point*mn;}if(TP>0){tp=Ask+TP*Point*mn;}
err=OrderSend(Symbol(),OP_BUY,LotsOptimized(),NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),
NormalizeDouble(tp,Digits),"",MAGICNO,0,Blue);
if(err<0)
{
Print("OrderSend()- Fehler OP_BUY. Der Auftrag wird nicht angenommen. op "+op+" sl "+sl+" tp "+tp+""+GetLastError());return(-1);
}
}
}
Stattdessen kann der obige Code, wenn er mehrere Symbole im Terminal öffnet und einen EA in jedem von ihnen ausführt, beispielsweise eine Order öffnen - das ist korrekt, aber gleichzeitig kann er 20-30 Orders öffnen, bis das Walross ausläuft, wenn die Bedingung mehrere Ticks lang anhält. Ich habe das noch bei keinem einzigen Instrument gesehen, aber ich bin mir auch nicht sicher, dass es nicht bei einem einzigen Instrument passieren wird. Wie kann ich meinen Code so ändern, dass es schwierig ist, nicht mehr als eine Bestellung zu öffnen?
Igor, guten Abend,
Ich kann Ihren Funktionsaufruf nicht verwalten:
//+----------------------------------------------------------------------------+
//| Autor: Kim Igor V. alias KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Version : 19.02.2008 |
//| Beschreibung: Gibt den Gesamtgewinn der offenen Positionen in der Einzahlungswährung zurück.
//+----------------------------------------------------------------------------+
Parameter: //|
//| sy - Name des Instruments (" - beliebiges Symbol, |
//| NULL - aktuelles Symbol) |
| //| op - Operation (-1 - beliebige Position) |
//| mn - MagicNumber (-1 - beliebige Magie) |
//+----------------------------------------------------------------------------+
double GetProfitOpenPosInCurrency(string sy="", int op=-1, int mn=-1) {
double p=0;
int i, k=AuftragSumme();
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
wenn ((OrderSymbol()==sy || sy==") && (op<0 || OrderType()==op)) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (mn<0 || OrderMagicNumber()==mn) {
p+=OrderProfit()+OrderCommission()+OrderSwap();
}
}
}
}
}
zurück(p);
}
Können Sie mir sagen, in dem Aufruf TotOrdProf=GetProfitOpenBuyPosInCurrency(EURUSD, ____, 1);
1. Angenommen, EURUSD, sollte es in Anführungszeichen "EURUSD" sein oder ist es ohne erlaubt;
2. Was sollte der zweite aufrufende Parameter sein (wo ist ein Bindestrich), um den gesamten Kauf- und Verkaufsgewinn zu berechnen (ich habe den Standardwert -1 ausprobiert; nicht korrekt)
3. der dritte Parameter ist die magische Zahl des Expert Advisors? - Ich bin noch nicht dazu gekommen, nur eine Frage, ob ich den Parameter richtig verstehe.
Danke.
TotOrdProf=GetProfitOpenBuyPosInCurrency("EURUSD",-1, -1);
- nur für EURUSD
- alle offenen Stellen (-1)
- Positionen mit beliebiger Magie (-1)
Guten Tag.
Wie Sie wissen, funktioniert Sleep() im Terminal-Tester nicht, so dass Sie Schleifen aus mathematischen Funktionen verwenden müssen, um die Ausführung zu verzögern:
wobei zFILE die Ausführungsverzögerung des Expert Advisors ist.
Meine Frage ist: Gibt es eine anspruchsvollere Lösung, da ich eine Verzögerung von einigen Sekunden bis zu 10-20 Minuten benötige (Verarbeitung der Daten durch ein externes Programm)?
Oder zumindest, wie man Laufzeit genauer zu messen (couse Prozessoren Leistung ist unterschiedlich) und wählen Sie die langsamste ein?
Frage: Gibt es eine elegantere Lösung (Verzögerungsfunktion), da die Verzögerung von einigen Sekunden bis zu 10-20 Minuten benötigt wird (Datenverarbeitung durch externe Software)?
Haben Sie nicht versucht, Callbacks und Synchronizer zu verwenden?
Kims Funktionen
Ich frage mich, ob es eine Funktion gibt, mit der Sie den Namen des letzten Musters abrufen können
und Änderungen in seinen Komponenten aufzeichnen
KimIV vielleicht können Sie und schreiben einen Indikator
Der Indikator sollte nach einem flachen Kanal innerhalb einer bestimmten Zeitspanne suchen und nicht breiter sein als in den Einstellungen angegeben
Dieser Indikator sollte den Kanal sowohl innerhalb eines Tages als auch mit Übergang zum nächsten Tag wie in Ihrer Funktion isTradeTimeInt() suchen.
Dieser Indikator kann während eines Tages 5 Kanäle oder nur einen Kanal anzeigen.
In den Einstellungen
extern double maximale Kanalhöhe in Punkten
extern int Bar_Time wie wir das Zeitintervall in Balken (1) oder Stunden und Minuten (2) berechnen
extern string Mindestzeitintervall des Kanals in Stunden und Minuten
extern int int Mindestzeitintervall des Kanals in Takten
extern int maximale Anzahl der gezeichneten Kanäle, die gezeichnet bleiben
Ich hänge einen ähnlichen Indikator an https://www.mql5.com/ru/code an, aber er zeichnet den Kanal in einem streng festgelegten Zeitintervall und sucht nicht von selbst nach einem solchen Kanal. Es sollte nur nach einem Kanal suchen, der die maximale Höhe des Kanals nicht überschreitet und nicht kürzer ist als der minimale Zeitabstand des Kanals.
Wenn wir Bar_Time für die Kanalzeit wählen, wird der Kanal(1) aus der aktuellen Zeit minus der in den Einstellungen angegebenen Zeit berechnet, d.h. 2 Stunden 15 Minuten oder eine andere Zeit. Wenn es 1 Stunde 15 Minuten ist, sucht es nach Max und Min von 23 Stunden 00 Minuten und wenn das Max minus das Min unter der maximalen Kanalhöhe liegt, zeichnet es zwei Max und Min Linien von 23:00 bis 02:15. Außerdem werden Fibo-Ebenen oberhalb und unterhalb des Kanals eingezeichnet.
Wenn wir Bar_Time by number of bars wählen, wird der Kanal vom aktuellen Balken abzüglich der in den Einstellungen angegebenen Anzahl von Balken berechnet, d. h. vom Null-Balken bis zum Null-Balken abzüglich der in den Einstellungen angegebenen Anzahl. Wenn die gewählte Zahl 50 ist, werden die Hochs und Tiefs der letzten 50 Balken ab dem Null-Balken gesucht, und wenn das Hoch minus das Tief nicht mehr als die maximale Kanalhöhe beträgt, werden zwei Linien mit den Hochs und Tiefs von 50 Balken gezeichnet.
Alle Ebenen und Kanaldaten werden in Puffern gespeichert
Frage an Igor
Wenn Sie mir ein Codefragment eines Expert Advisors für zwei getrennte Konten (Kauf-Verkauf) geben können, der jedes Konto abfragt (für die Berechnung der Losgröße) und eine Einlage von einem Konto auf ein anderes übertragen und einen Teil davon nach bestimmten Bedingungen abheben kann (z. B. monatlicher oder vierteljährlicher Gewinn - n % davon)
Lassen Sie mich meine Frage präzisieren
1 Expert Advisor arbeitet auf Buy (Abfragezustand von Konto 2) . 6200
2 Expert Advisor eröffnet Verkaufsposition (fordert Kontostand bei 1) ... 8400
Wenn es keine offenen Stellen gibt
1100 von Konto 2 auf Konto 1
Konto 1 - 7300
Konto 2 - 7300
Gesamtbruttoeinlage SD=14600 Maximales Risiko - 10% Maximales Los 0,14
Weitere
Stand: 01.04.09 SD=10000
Stand: 01.07.09 SD=14600
Gewinn=4600
10% = 460
460 auf dem dritten Konto abgezogen
Dankeschön
Lieber Igor, hilf mir!
Ich habe a-SimpleTrailing.mqh verbunden .
Ichhabe hinzugefügt, was angegeben war, aber es erscheinen 3 Fehler:
clModifyBuy' - Variable nicht definiert
'clModifySell' - Variable nicht definiert
'ti' - Variable bereits definiert
Was ist zu tun?(
Hier ist, was passt: