Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 452

 
Profitov:
Es stellt sich die Frage, ob es möglich ist, einen Expert Advisor oder ein Skript zu schreiben, das z.B. bei einem Verlust von 2% am Tag alle Transaktionen schließen würde?

Das ist möglich.
 
Hilfe -- Ich kaufte einen neuen Laptop mit vin.8 installiert -- Ich lud das Terminal von alpari zuletzt aktualisiert -- Ich lade Indikatoren, die ich arbeitete mit vor, in den Ordner MQL4-Indikatoren, erscheinen sie dort -- aber im Terminal selbst in der Benutzer nicht sehen, Kunden-Support nicht sagen, etwas gerade - was zu tun ist?
 
galinka:
Hilfe -- Ich kaufte einen neuen Laptop mit vin.8 installiert -- Ich lud das Terminal von alpari zuletzt aktualisiert -- Ich lade Indikatoren, die ich arbeitete mit vor, in den Ordner MQL4-Indikatoren, erscheinen sie dort -- aber in das Terminal selbst in den Benutzern nicht sehen, Kundendienst sagt nichts gerade - was zu tun ist?

Das Systemmenü "Datei" hat einen neuen Punkt "Datenordner öffnen". Dort müssen Sie es jetzt unterbringen.
 
Das geht nicht - sie befinden sich nicht im Terminal
 

Ich muss missverstanden haben, was zu tun ist - Programmdateien - ich habe Alpari - öffnen Sie ---- gibt es Ordner ---- MQL4- indikators - ich legte sie in - sie erscheinen - ich schließe - ich öffne das Terminal - sie sind nicht in der Benutzer-Dateien

 
Vielleicht gibt es etwas in meinen Indikatoren, das geändert werden muss
 

Danke, das hat geholfen.

 
1mql:

Unter dem letzten Extern:
extern int slippage = 2; // Preisverschiebung beim Schließen von Marktpositionen

ein weiteres einfügen:
extern bool total_symb = true; // auf allen Paaren

und jeder Zeile:
if ((OrderSymbol() == Symbol())
und
if(OrderSymbol() == Symbol())

ersetzen:
if(OrderSymbol() == Symbol() || total_symb)

sollte theoretisch funktionieren, prüfen.


Es werden nur einige Charts geschlossen, bei denen die Position aktiviert ist. Bei anderen wird ein Fehler 4107 angezeigt. Ich habe versucht, in extern bool Buy = false; //Löschen/Schließen Richtung der Kaufaufträge zu ändern
extern bool Sell = false; //delete/close sell order direction. at true . it didn't work. but if e.g. we put it on a chart with no position open, none of them closes and error 4107 is seen.
 
Profitov:
Es stellt sich die Frage, ob es möglich ist, einen Expert Advisor oder ein Skript zu schreiben, das z.B. bei einem Verlust von 2% am Tag alle Transaktionen schließen würde?
Bereits geschrieben.
 
alsu:

Ticket wird also noch irgendwo in der alten Version verwendet. Wir müssen den Code bereinigen...

Wie folgt hergestellt:

 Symb=Symbol();                               // Название фин.инстр.
   Total=0;                                     // Количество ордеров
   int order[7];//буффер для семи ордеров
   int ord;//количество ордеров
   ArrayInitialize(order,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;}
         Total++;                               // Счётчик рыночн. орд
         if (Total>7){Alert("Более 7 ордеров. Эксперт не работает.");return;}
         Ticket=OrderTicket();                  // Номер выбранн. орд.
         Tip   =OrderType();                    // Тип выбранного орд.
         order  [OrderType()]++;                    // ПОЛУЧАЕМ КОЛИЧЕСТВО ОРДЕРОВ         
         Price =OrderOpenPrice();               // Цена выбранн. орд.
         SL    =OrderStopLoss();                // SL выбранного орд.
         TP    =OrderTakeProfit();              // TP выбранного орд.
         Lot   =OrderLots();                    // Количество лотов
        }
     }
     ord=order  [OrderType()];

 while(true)                                  // Цикл закрытия орд.
     {
      if (Tip==0 && Cls_B==true)                // Открыт ордер Buy..
        {                                       //и есть критерий закр
         Alert("Попытка закрыть Buy ",Ticket,". Ожидание ответа..");
         RefreshRates();                        // Обновление данных
         Ans=OrderClose(Ticket,Lot,Bid,2);      // Закрытие Buy
         if (Ans==true){Alert ("Закрыт ордер Buy ",Ticket);if (ord ==0){Alert ("Закрыты все ордера ",ord);break;}}
         if (Fun_Error(GetLastError())==1)      // Обработка ошибок
            continue;                           // Повторная попытка
         return;                                // Выход из start()
        }

Die Positionen sind vollständig geschlossen. Es stimmt, dass der Fehler Null angezeigt wird, aber die Docks sagen, dass dies keine Fehler bedeutet. Und ich kann die Meldung"Alle Aufträge geschlossen" im Protokoll nicht finden.

Ich habe die Zeilen, die ich geändert habe, fett gedruckt. Es scheint zu funktionieren, ich habe es noch nicht gründlich überprüft.

Ich verstehe nicht ganz, wie Schleifen funktionieren. Angenommen, ich habe Code über und unter und in der Mitte der Schleife. Wenn die Bedingungen der Schleife übereinstimmen, wird der Code nur innerhalb der Schleife ausgeführt und lässt nicht zu, dass die Codezeilen unterhalb der Schleife ausgeführt werden?Unterbricht derBreak-Operator in diesem Beispiel die Schleife? Erlaubt es die Ausführung von Zeilen unterhalb der Schleife, oder beginnt das Programm mit der Berechnung von vorne?

Korrigieren Sie mich, wenn ich falsch liege: break unterbricht die Schleife, in der er sich befindet, währendcontinue die Auswertung des darüber liegenden Operators durchführt, so dass nicht klar ist, ob es einen zweiten Operator gibt - wird seine Auswertung unterbrochen oder unterbrichtcontinue den gesamten Code und schickt das Programm, um ihn zuerst auszuführen?