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

 
eddy:
Ich bin nicht interessiert. Ich will nur eine Grenze ziehen...
Die Punkte auf dem Bild sind max min ?
 
Nein, Lückentexte
 
costy_:

Это для не стандартного подхода, того чего нет в отчете оптимизатора. файл здесь terminal\tester\files

Сохраняйте отчет из "Результаты оптим." сохран как>>


Ich weiß jetzt, wie man etwas speichern kann. Bitte sagen Sie mir, wie ich die Ergebnisse der Optimierung automatisch speichern kann. Im Grunde genommen geht es mir nur um den maximalen Drawdown und Gewinn.
 
001:

Jetzt weiß ich, wie ich etwas speichern kann, das ich brauche. Bitte teilen Sie mir mit, wie ich die Optimierungsergebnisse automatisch speichern kann. Im Prinzip geht es mir nur um den maximalen Drawdown und Gewinn.

In Deinit, zählen durch OrdersHistoryTotal die Summe aller profitablen, unprofitablen, Drawdown, Gewinn und in die Datei ;)

Etwa so

   for(i=0;i<OrdersHistoryTotal();i++)
    if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && OrderSymbol()==Symbol())
    if(OrderProfit()>=0)
     profit+=OrderProfit();
     else noprof+=OrderProfit();
   прибыль = profit  -  noprof;



 
eddy:
Nein, Lückentext.

In der unteren Periode können Sie den Vektor der älteren Periode auf dem H1-Chart in den ind H4-Einstellungen sehen.

Und wofür ist das gut?

Dateien:
maxvekt.mq4  2 kb
 
costy_:

In Deinit, verwenden Sie OrdersHistoryTotal , umdie Summe aller profitablen, unprofitablen, Drawdown, Profit zu zählen und sie zu archivieren ; )

Etwa so




Ja, das gibt es. Leider liefert diese Methode andere Daten als MT. Sie müssen nur die Optimierungsergebnisse atomar in einer Datei speichern und das war's...
 
Ich verstehe die Berechnung nicht. Können Sie sie mir am Beispiel meiner Zeichnung erklären?
 
costy_:

Sie blättern durch die offenen und schwebenden Aufträge in der Reihenfolge der Positionsnummer in der Liste, wählen den gewünschten Auftrag aus und rufen sein Ticket ab

und arbeiten Sie mit dem Ticket weiter.



Wenn Sie nicht wissen, was Sie damit tun sollen, wissen Sie einfach nicht, was Sie damit tun sollen.

Bitte sagen Sie mir, warum wir dies tun müssen, wenn wir bereits denselben Auftrag ausgewählt haben?

Oder vielleicht verstehe ich etwas nicht: DIESER Code :

string symbol = Symbol();int cnt;
for(cnt = OrdersTotal(); cnt >= 0; cnt--){
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == Symbol && OrderMagicNumber()==Magicbuy) {
ticketbuy=OrderTicket();OrderSelect(ticketbuy, SELECT_BY_TICKET, MODE_TRADES);lotsbuy2=OrderLots() ;
double bid = MarketInfo(symbol,MODE_BID);
RefreshRates();
OrderClose(ticketbuy,lotsbuy2,bid,3,Magenta); }

und diese:

string symbol = Symbol();int cnt;
for(cnt = OrdersTotal(); cnt >= 0; cnt--){
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == symbol && OrderMagicNumber()==Magicbuy) {
lotsbuy2=OrderLots() ;
double bid = MarketInfo(symbol,MODE_BID);
RefreshRates();
OrderClose(ticketbuy,lotsbuy2,bid,3,Magenta); }

das Gleiche tun wird?

 
Aleksandr_8:

Ich danke Ihnen für Ihre Antwort.

Warum müssen wir dies tun, wenn wir bereits denselben Auftrag ausgewählt haben?

Oder vielleicht verstehe ich etwas nicht: DIESER Code :

string symbol = Symbol();int cnt;
for(cnt = OrdersTotal()-1; cnt >= 0; cnt--){
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == Symbol && OrderMagicNumber()==Magicbuy) {
ticketbuy=OrderTicket();OrderSelect(ticketbuy, SELECT_BY_TICKET, MODE_TRADES); lotsbuy2=OrderLots() ;
double bid = MarketInfo(symbol,MODE_BID);
RefreshRates();
OrderClose(ticketbuy,lotsbuy2,bid,3,Magenta); }
}

und diese:

string symbol = Symbol();int cnt;
for(cnt = OrdersTotal()-1; cnt >= 0; cnt--){
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == symbol && OrderMagicNumber()==Magicbuy) {
lotsbuy2=OrderLots() ;
double bid = MarketInfo(symbol,MODE_BID);
RefreshRates();
OrderClose(ticketbuy,lotsbuy2,bid,3,Magenta); }
}

das Gleiche tun wird?

Der rot markierte Code ist überflüssig, da der Auftrag bereits ausgewählt wurde und Sie ihn nicht erneut auswählen müssen, um ihn zu bearbeiten.

 
Aleksandr_8:

Ich danke Ihnen für Ihre Antwort.

Warum müssen wir dies tun, wenn wir bereits denselben Auftrag ausgewählt haben?

Oder vielleicht verstehe ich etwas nicht: DIESER Code :

string symbol = Symbol();int cnt;
for(cnt = OrdersTotal(); cnt >= 0; cnt--){
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == Symbol && OrderMagicNumber()==Magicbuy) {
ticketbuy=OrderTicket();OrderSelect(ticketbuy, SELECT_BY_TICKET, MODE_TRADES);lotsbuy2=OrderLots() ;
double bid = MarketInfo(symbol,MODE_BID);
RefreshRates();
OrderClose(ticketbuy,lotsbuy2,bid,3,Magenta); }

und diese:

string symbol = Symbol();int cnt;
for(cnt = OrdersTotal(); cnt >= 0; cnt--){
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == symbol && OrderMagicNumber()==Magicbuy) {
lotsbuy2=OrderLots() ;
double bid = MarketInfo(symbol,MODE_BID);
RefreshRates();
OrderClose(ticketbuy,lotsbuy2,bid,3,Magenta); }

das Gleiche tun wird?

In der ersten Variante verwendet der zweite OrderSelect auf ticketbuy eine zweite Prüfung, vermute ich (wenn er bei einer Pending- oder +1-Ordertotal aufrutscht...).

Im vorherigen Beitrag richtig gefundene Fehler (außer grün).

Der Ticketkauf ist in der zweiten Version nicht gekennzeichnet. Wir müssen Folgendes ermitteln

string symbol = Symbol();int cnt;
for(cnt = OrdersTotal(); cnt >= 0; cnt--){
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == symbol && OrderMagicNumber()==Magicbuy) {
lotsbuy2=OrderLots() ;
double bid = MarketInfo(symbol,MODE_BID);
ticketbuy=OrderTicket();
RefreshRates();
OrderClose(ticketbuy,lotsbuy2,bid,3,Magenta); }