Ich habe den Code für die Buchhaltung, das Öffnen und Schließen von Aufträgen aus dem Tutorial (tradingexpert.mq4) übernommen. Der Code ist für eine Position gedacht, ich benötige aber fünf Positionen.
Wir haben den Code wie folgt leicht modifiziert (geänderte Zeilen in Fettdruck), so dass die Positionen in der richtigen Menge geöffnet werden, aber wenn wir umkehren, wird nur eine Position geschlossen und die umgekehrte wird sofort geöffnet.
Wie kann ich es so einrichten, dass alle Positionen bei der Umkehrung geschlossen werden und dann nur die gegenüberliegende Position geöffnet wird?
// Учёт ордеров
Symb=Symbol(); // Название фин.инстр.
Total=0; // Количество ордеровfor(int i=1; i<=OrdersTotal(); i++) // Цикл перебора ордер
{
if (OrderSelect(i-1,SELECT_BY_POS)==true) // Если есть следующий
{ // Анализ ордеров:if (OrderSymbol()!=Symb)continue; // Не наш фин. инструмif (OrderType()>1) // Попался отложенный
{
Alert("Обнаружен отложенный ордер. Эксперт не работает.");
return; // Выход из start()
}
Total++; // Счётчик рыночн. ордif (Total>5) // Было не более одного орд, стало не более пяти
{
Alert("Несколько рыночных ордеров. Эксперт не работает.");
return; // Выход из start()
}
Ticket=OrderTicket(); // Номер выбранн. орд.
Tip =OrderType(); // Тип выбранного орд.
Price =OrderOpenPrice(); // Цена выбранн. орд.
SL =OrderStopLoss(); // SL выбранного орд.
TP =OrderTakeProfit(); // TP выбранного орд.
Lot =OrderLots(); // Количество лотов
}
}
// Открытие ордеровwhile(true) // Цикл закрытия орд.
{
if (Total < 5 && Opn_B==true) // Открытых орд. нет +. Было Total < 1, стало Total < 5
{ // критерий откр. BuyRefreshRates(); // Обновление данных
SL=Bid - New_Stop(StopLoss)*Point; // Вычисление SL откр.
TP=Bid + New_Stop(TakeProfit)*Point; // Вычисление TP откр.Alert("Попытка открыть Buy. Ожидание ответа..");
Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,2,SL,TP);//Открытие Buyif (Ticket > 0) // Получилось :)
{
Alert ("Открыт ордер Buy ",Ticket);
return; // Выход из start()
}
if (Fun_Error(GetLastError())==1) // Обработка ошибокcontinue; // Повторная попыткаreturn; // Выход из start()
}
// Закрытие ордеровwhile(true) // Цикл закрытия орд.
{
if (Tip==0 && Cls_B==true) // Открыт ордер Buy..
{ //и есть критерий закрAlert("Попытка закрыть Buy ",Ticket,". Ожидание ответа..");
RefreshRates(); // Обновление данных
Ans=OrderClose(Ticket,Lot,Bid,2); // Закрытие Buyif (Ans==true) // Получилось :)
{
Alert ("Закрыт ордер Buy ",Ticket);
break; // Выход из цикла закр
}
if (Fun_Error(GetLastError())==1) // Обработка ошибокcontinue; // Повторная попыткаreturn; // Выход из start()
}
Ich habe den Code für die Buchhaltung, das Öffnen und Schließen von Aufträgen aus dem Tutorial (tradingexpert.mq4) übernommen. Der Code ist für eine Position gedacht, ich benötige aber fünf Positionen.
Wir haben den Code wie folgt leicht modifiziert (geänderte Zeilen in Fettdruck), so dass die Positionen in der richtigen Menge geöffnet werden, aber wenn wir umkehren, wird nur eine Position geschlossen und die umgekehrte wird sofort geöffnet.
Wie kann ich es so einrichten, dass alle Positionen bei der Umkehrung geschlossen werden und dann nur die gegenüberliegende Position geöffnet wird?
Machen Sie Ticket zu einem Array Ticket[5] und speichern Sie alle 5 Tickets darin. Gehen Sie beim Schließen alle Tickets entsprechend durch.
Der Grad der Nutzung der Bibliotheken macht Sie nicht zu einem Anfänger. Nachdem ich mir Ihren Code angesehen habe, würde ich zwei Wochen brauchen, um ihn zu verstehen. Wenn nicht mehr. Ich denke also, dass Sie keine Antwort erhalten werden.
Vitya, es gibt keinen Grund, irgendetwas zu verstehen - der Mann will globale Variablen aus einer "Sandbox" (EA mit seinen Bibliotheken) in der anderen "Sandbox" (kompilierte Bibliothek) sichtbar machen. :)))
Ich bin kein Programmierer, ich bin ein Code-Builder. So baute ich diesen Indikator (ich sehe, dass Sie einen Text Exposition tun können, nicht eine Datei t-das ist, was ich tun werde, um es leichter zu verstehen.
Sie zeigt die Summe der Punkte und die Dynamik ihrer Summierung während der Woche - bei kleineren Zeitrahmen, wenn die vorherige Bewegung von Close[i+2] zu Close[i+1] weitergeht, wird die aktuelle Bewegung Close[i] addiert, wenn nicht - wird subtrahiert. Ich sollte es so vorschreiben, dass das Programm den Abschluss des Freitags sieht, anstatt den Balken zu schließen. Ich weiß, dass es mit DayOfWeek und 5 (Freitagsnummer) gemacht werden kann, aber wie kann ich es praktisch machen? Hilfe.
TarasBY: Vitya, hier muss nichts geklärt werden - die Person möchte, dass globale Variablen aus einer Sandbox (EA mit seinen Bibliotheken) in einer anderen Sandbox (kompilierte Bibliothek) sichtbar sind. :)))
Igor, ein kleines bisschen falsch! In der "Sandbox" (kompilierte Bibliothek) werden nur die Funktionen und alle Variablen im Verzeichnis deklariert. Und die Variablen, die im Inluder (Include-Datei) deklariert sind, sollten in der Eule sichtbar sein, da ich das Inluder direkt in die Eule eingefügt habe. Sind Sie anderer Meinung?
Ich bin kein Programmierer, ich bin ein Code-Builder. So baute ich diesen Indikator (ich sehe, dass Sie einen Text Exposition tun können, nicht eine Datei t-das ist, was ich tun werde, um es leichter zu verstehen.
Sie zeigt die Summe der Punkte und die Dynamik ihrer Summierung während der Woche - bei kleineren Zeitrahmen, wenn die vorherige Bewegung von Close[i+2] zu Close[i+1] weitergeht, wird die aktuelle Bewegung Close[i] addiert, wenn nicht - wird subtrahiert. Ich sollte es so vorschreiben, dass das Programm den Abschluss des Freitags sieht, anstatt den Balken zu schließen. Ich weiß, dass es mit DayOfWeek und 5 (Freitagsnummer) gemacht werden kann, aber wie kann ich es praktisch machen? Hilfe.
Igor, ein bisschen falsch! Nur die Funktionen befinden sich in der Sandbox (kompilierte Bibliothek), und alle Variablen werden im Inluder deklariert. Und die Variablen, die im Inluder (Include-Datei) deklariert sind, sollten in der Eule sichtbar sein, da ich das Inluder direkt in die Eule eingefügt habe. Meinen Sie nicht auch?
was hat dann der Verweis auf die kompilierte Bibliothek damit zu tun?
Nein, ich erkläre es Ihnen - Ihr Forum ist wie eine Hoffnung für die letzte kompetente Hochburg von Prog. und Einfügen von Größe - so sieht es die Schrift PERIOD_W1, aber weder die Verwendung von Größe noch die Verwendung von festen Bezugspunkten wie Daten erzielen den gewünschten Effekt. Ich habe eine spezielle Frage zum Freitag gepostet - übrigens lässt sich Ihr Code nicht kompilieren, weil er 'Version' sagt - unbekannte Eigenschaft, wenn Sie also nicht wissen, wie Sie DayOfWeek und 5 (die Zahl des Freitags) in den Code einfügen können,helfen andere Optionen nicht .
Vitek2010: Nein, ich erkläre es Ihnen - Ihr Forum ist wie eine Hoffnung für die letzte kompetente Hochburg von Prog. und Einfügen von Größe - so sieht es der Schriftzug PERIOD_W1, aber weder die Verwendung von Größe noch die Verwendung von festen Datumsangaben bringen den gewünschten Effekt. Ich habe eine spezielle Frage zum Freitag gepostet - übrigens lässt sich Ihr Code nicht kompilieren, weil er 'Version' sagt - unbekannte Eigenschaft, wenn Sie also nicht wissen, wie Sie DayOfWeek und 5 (die Zahl des Freitags) in den Code einfügen können,helfen andere Optionen nicht .
TimeDayOfWeek(Time[i]) gibt nicht Time[i], sondern ein bestimmtes Datum im Format D'2014.01.27' an.
Und wenn Sie wissen wollen, welcher Tag heute ist, rufen Sie einfach DayOfWeek() auf.
Lieber, ich brauche etwas Hilfe.
Ich habe den Code für die Buchhaltung, das Öffnen und Schließen von Aufträgen aus dem Tutorial (tradingexpert.mq4) übernommen. Der Code ist für eine Position gedacht, ich benötige aber fünf Positionen.
Wir haben den Code wie folgt leicht modifiziert (geänderte Zeilen in Fettdruck), so dass die Positionen in der richtigen Menge geöffnet werden, aber wenn wir umkehren, wird nur eine Position geschlossen und die umgekehrte wird sofort geöffnet.
Wie kann ich es so einrichten, dass alle Positionen bei der Umkehrung geschlossen werden und dann nur die gegenüberliegende Position geöffnet wird?
Lieber, ich brauche etwas Hilfe.
Ich habe den Code für die Buchhaltung, das Öffnen und Schließen von Aufträgen aus dem Tutorial (tradingexpert.mq4) übernommen. Der Code ist für eine Position gedacht, ich benötige aber fünf Positionen.
Wir haben den Code wie folgt leicht modifiziert (geänderte Zeilen in Fettdruck), so dass die Positionen in der richtigen Menge geöffnet werden, aber wenn wir umkehren, wird nur eine Position geschlossen und die umgekehrte wird sofort geöffnet.
Wie kann ich es so einrichten, dass alle Positionen bei der Umkehrung geschlossen werden und dann nur die gegenüberliegende Position geöffnet wird?
Der Grad der Nutzung der Bibliotheken macht Sie nicht zu einem Anfänger. Nachdem ich mir Ihren Code angesehen habe, würde ich zwei Wochen brauchen, um ihn zu verstehen. Wenn nicht mehr. Ich denke also, dass Sie keine Antwort erhalten werden.
Ich bin kein Programmierer, ich bin ein Code-Builder. So baute ich diesen Indikator (ich sehe, dass Sie einen Text Exposition tun können, nicht eine Datei t-das ist, was ich tun werde, um es leichter zu verstehen.
Sie zeigt die Summe der Punkte und die Dynamik ihrer Summierung während der Woche - bei kleineren Zeitrahmen, wenn die vorherige Bewegung von Close[i+2] zu Close[i+1] weitergeht, wird die aktuelle Bewegung Close[i] addiert, wenn nicht - wird subtrahiert. Ich sollte es so vorschreiben, dass das Programm den Abschluss des Freitags sieht, anstatt den Balken zu schließen. Ich weiß, dass es mit DayOfWeek und 5 (Freitagsnummer) gemacht werden kann, aber wie kann ich es praktisch machen? Hilfe.
Vitya, hier muss nichts geklärt werden - die Person möchte, dass globale Variablen aus einer Sandbox (EA mit seinen Bibliotheken) in einer anderen Sandbox (kompilierte Bibliothek) sichtbar sind. :)))
Igor, ein kleines bisschen falsch! In der "Sandbox" (kompilierte Bibliothek) werden nur die Funktionen und alle Variablen im Verzeichnis deklariert. Und die Variablen, die im Inluder (Include-Datei) deklariert sind, sollten in der Eule sichtbar sein, da ich das Inluder direkt in die Eule eingefügt habe. Sind Sie anderer Meinung?
Ich bin kein Programmierer, ich bin ein Code-Builder. So baute ich diesen Indikator (ich sehe, dass Sie einen Text Exposition tun können, nicht eine Datei t-das ist, was ich tun werde, um es leichter zu verstehen.
Sie zeigt die Summe der Punkte und die Dynamik ihrer Summierung während der Woche - bei kleineren Zeitrahmen, wenn die vorherige Bewegung von Close[i+2] zu Close[i+1] weitergeht, wird die aktuelle Bewegung Close[i] addiert, wenn nicht - wird subtrahiert. Ich sollte es so vorschreiben, dass das Programm den Abschluss des Freitags sieht, anstatt den Balken zu schließen. Ich weiß, dass es mit DayOfWeek und 5 (Freitagsnummer) gemacht werden kann, aber wie kann ich es praktisch machen? Hilfe.
Wird es passen?
Igor, ein bisschen falsch! Nur die Funktionen befinden sich in der Sandbox (kompilierte Bibliothek), und alle Variablen werden im Inluder deklariert. Und die Variablen, die im Inluder (Include-Datei) deklariert sind, sollten in der Eule sichtbar sein, da ich das Inluder direkt in die Eule eingefügt habe. Meinen Sie nicht auch?
Ist das in Ordnung?
Nein, ich erkläre es Ihnen - Ihr Forum ist wie eine Hoffnung für die letzte kompetente Hochburg von Prog. und Einfügen von Größe - so sieht es der Schriftzug PERIOD_W1, aber weder die Verwendung von Größe noch die Verwendung von festen Datumsangaben bringen den gewünschten Effekt. Ich habe eine spezielle Frage zum Freitag gepostet - übrigens lässt sich Ihr Code nicht kompilieren, weil er 'Version' sagt - unbekannte Eigenschaft, wenn Sie also nicht wissen, wie Sie DayOfWeek und 5 (die Zahl des Freitags) in den Code einfügen können,helfen andere Optionen nicht .
TimeDayOfWeek(Time[i]) gibt nicht Time[i], sondern ein bestimmtes Datum im Format D'2014.01.27' an.
Und wenn Sie wissen wollen, welcher Tag heute ist, rufen Sie einfach DayOfWeek() auf.
In TimeDayOfWeek(Time[i]) setzen Sie nicht Time[i], sondern ein bestimmtes Datum im Format D'2014.01.27'.
Wenn Sie feststellen wollen, welcher Tag gerade ist, rufen Sie einfach DayOfWeek() auf.