[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 304

 
pigvin:

Das Problem ist, dass der EA ständig Aufträge neu eröffnet, d.h. es gibt ein Kaufsignal - er öffnet einen Auftrag, schließt ihn dann mit Gewinn, und wenn die Bedingungen noch erhalten sind, öffnet er ihn wieder.

Ich dachte, es könnte mit dem traditionellen Kauf- und Verkaufszähler gelöst werden - wenn der Kaufauftrag den Zähler +1 öffnet und ein neuer Kauf nicht geöffnet werden kann, bis der Zähler über 0 ist und der Zähler nur nach dem Verkauf zurückgesetzt wird.

D.h. es gibt ein Signal auf einer Leiste, aber es wurde bereits verwendet?

Das könnte man so machen

datetime save_time; 
int tf=0;
старт
...
if(total<1)//проверка количества ордеров 
   {
         if(save_time!=iTime(0,tf, iBarShift(0,tf,Time[0])))
            save_time =iTime(0,tf, iBarShift(0,tf,Time[0]));
         else return;


  ...
 if(ticket>0)
                      {
                         if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("открыта позиция BUY : ",OrderOpenPrice());
      
                         else Print("Ошибка при открытии BUY позиции : ",GetLastError()); 
                        }else{ save_time =0;}// так как ошибка запретим ретурн (см. выше)
 
Operr:

Versuchen Sie es so.

if (OrderOpenTime()+2*1440*60  > Time[0])   //т.е. последнее время текушего графика а не локальное

Es sollte in beide Richtungen funktionieren.

Das ergibt für mich mehr Sinn.

if (Time[0]-OrderOpenTime() >= 2*1440*60 )   
 

Hallo an alle!

Sorry für das Off-Topic, das Thema ist gefragt, deshalb schreibe ich hier, können Sie mir einen Tipp geben? Festgefahren.

Wie kann man mit Hilfe der elementaren Operationen (+-*/%) die Potenzierung einer reellen Zahl (einschließlich der reellen) durchführen? Zum Beispiel ergibt der Windrechner, wenn er auf die Potenz von 1,2 angewendet wird, das Ergebnis 1,2445647472073939777218169154111826. Interessiert sich für den Algorithmus, die Sprache spielt keine Rolle. Ich werde sie selbst übersetzen.

ZS. Wie viele Programmiertests habe ich nicht gemacht, ich sehe ein solches Problem zum ersten Mal, obwohl es für jemanden trivial sein mag?

 

Guten Tag zusammen!

Ich habe eine Menge Foren und Google-Artikel durchsucht, aber keine Antwort gefunden

Ich habe beschlossen, einen EA zu schreiben, um mit zwei entgegengesetzten Aufträgen auf М1 zu handeln.

Die Idee ist einfach: zwei entgegengesetzte Aufträge mit kleinen TP, dann, wenn der TP von einem von ihnen für die zweite aktivierte Timer ist die Anzahl der Bars (sagen wir 5), wird es vorübergehend SL werden. Die Berechnung ist, dass, wenn die Währung in die gleiche Richtung bewegen wird, Verluste, wenn die zweite Bestellung auslöst temporäre SL wird minimal sein, wenn das Diagramm dreht sich um, wir sind in den schwarzen auf zwei Positionen.

Ich weiß nicht, wie ich ein Codefragment mit "wenn ein TP eines der beiden auslöst, schaltet sich der Timer für den zweiten als eine Anzahl von Balken ein" schreiben soll.

ich habe derzeit nur einen Timer für zwei Aufträge gleichzeitig, aber ich kann nicht viel damit anfangen

PS Ich habe nicht dieses Problem für einen Monat gelöst, bitte helfen Sie mir mit Rat oder Code:)

Hier ist der Code des Beraters

extern int SL=100;

extern int TP=100;

extern double StartLot=0.1;

extern double StopLot=1.0;

extern int bar_time=20;


double Lot()

{

double lt;

if(OrdersHistoryTotal()==0) return (StartLot);

if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))

{

if(OrderProfit()<0)

{

lt=OrderLots()*2;

if(lt>StopLot) return (StartLot);

else return (lt);

}

else

return (StartLot);

}

else

return (StartLot);

}

int start()

{

double lot;

if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)

{

int order;

{

lot=Lot();

order=OrderSend(Symbol(),OP_BUY,lot,Ask,0,Ask-SL*Point,Ask+TP*Point,0,0,0,Green);

order=OrderSend(Symbol(),OP_SELL,lot,Bid,0,Bid+SL*Point,Bid-TP*Point,0,0,0,Green);

}

}

//вот здесь должно быть что-то что является решением проблемы и связующим звеном

{

int bars = iBarShift( Symbol(), PERIOD_M1, OrderOpenTime() ) ;

if ( iTime( Symbol(), PERIOD_M1, bars ) > OrderOpenTime() ) { bars ++; }

if ( bars >= bar_time )

OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),5,White);

}

return(0);

}


Vielen Dank im Voraus

 
Grundsätzlich sollten wir in diesem Trend erst dann eröffnen, wenn es kein Signal für eine Umkehr oder Marktturbulenzen gibt!
costy_:

D.h. es gibt ein Signal auf einem Balken, aber es wurde bereits verwendet?

Sie könnten dies tun

 
snail09:

Hallo an alle!

Sorry für das Off-Topic, das Thema ist gefragt, deshalb schreibe ich hier, können Sie mir einen Tipp geben? Festgefahren.

Wie kann man mit Hilfe der elementaren Operationen (+-*/%) die Potenzierung einer reellen Zahl (einschließlich der reellen) durchführen? Zum Beispiel ergibt der Windrechner, wenn er auf die Potenz von 1,2 angewendet wird, das Ergebnis 1,2445647472073939777218169154111826. Interessiert sich für den Algorithmus, die Sprache spielt keine Rolle. Ich werde sie selbst übersetzen.

ZS. Wie viele Programmiertests habe ich nicht gemacht, ich sehe ein solches Problem zum ersten Mal, obwohl es für jemanden trivial sein mag?

https://docs.mql4.com/ru/math/MathPow nein? Oder die elementaren Operationen sind eine Bedingung des Problems. http://bpascal. ru/download/desc/436.php wenn Sie alles von Hand machen, dann implementieren Sie Exponent und Logarithmus mit Ihren eigenen Funktionen.

 
индикаторcosty_:

Sie verwenden while(i>=0), d.h. wenn eine neue Kerze erscheint, ist i=1 (um sicherzustellen, dass die Daten der vorherigen Kerze einmal auf den festen Daten berechnet werden).

Warum geben Sie some_time=D'1971.01.11 00:00'; verwenden Bars, IndicatorCounted funktioniert nicht für mich (gut, der Fehler ist wahrscheinlich wegen der ersten_t_bar).

Ihr Algorithmus und Sie sollten ihn korrigieren.

"Ich bin neu im Programmieren."Ich bin neu in der Programmierung (seit 2007).


Trotzdem verstehe ich nicht, warum mein Entwurf gut funktioniert und der Standardentwurf nicht. some_time=D'1971.01.11 00:00'; hier wird es einmal beim Start verwendet. Das hat aber nichts damit zu tun, dass es in einem Fall funktioniert und in einem anderen nicht. Ich werde den Indikator später neu erstellen. Dies ist eine modifizierte Version eines anderen Indikators. Vielen Dank für die Antwort!

 
Sonne:

Guten Tag zusammen!

Ich habe eine Menge Foren und Google-Artikel durchsucht, aber keine Antwort gefunden

Ich habe beschlossen, einen EA zu schreiben, um mit zwei entgegengesetzten Aufträgen auf М1 zu handeln.

Die Idee ist einfach: zwei entgegengesetzte Aufträge mit kleinen TP, dann, wenn der TP von einem von ihnen für die zweite aktivierte Timer ist die Anzahl der Bars (sagen wir 5), wird es vorübergehend SL werden. Die Berechnung ist, dass, wenn die Währung in die gleiche Richtung bewegen wird, Verluste, wenn die zweite Bestellung auslöst temporäre SL wird minimal sein, aber wenn das Diagramm dreht sich um, wir sind in den schwarzen auf zwei Positionen.

Ich weiß nicht, wie ich ein Codefragment mit "wenn ein TP von einem von ihnen ausgelöst wird, schaltet sich der Timer für den zweiten als eine Anzahl von Balken ein" schreiben kann.

ich habe derzeit nur einen Timer für zwei Aufträge gleichzeitig, aber ich kann nicht viel damit anfangen

PS Ich habe nicht dieses Problem für einen Monat gelöst, bitte helfen Sie mir mit Rat oder Code:)

Hier ist der Code

................................................

Ich danke Ihnen im Voraus

1. Wenn es eine geschlossene Position auf einem Takei...

1.1 Wenn sein Typ OP_BUY ist, ...

1.1.2 Wenn es eine offene Position OP_SELL gibt, ...

1.1.3 Wenn die Zeit des aktuellen Bars abzüglich der Zeit des Bars, der die Verkaufsposition eröffnet, größer oder gleich der Anzahl der Bars für die Verzögerung ist, ....

1.1.4 Wir schließen die Verkaufsposition

1.2 Wenn sein Typ OP_SELL ist, ...

1.2.2 Wenn es eine offene Position OP_BUY gibt, ...

1.2.3 Wenn die Zeit des aktuellen Balkens minus die Zeit der Eröffnung der Kaufposition größer oder gleich der Anzahl der zu haltenden Balken ist, ....

1.2.4 Kaufposition schließen

 
Hallo, könnten Sie bitte beraten, wo man eine normale Geschichte (ohne Löcher) und ob die Minute Geschichte von MT5 für MT4 zu bekommen?
 

Guten Abend zusammen, ich entschuldige mich für die dumme Frage vorhin)

Ich möchte wissen, ob es möglich ist, für einen EA, wo es eine Variable, sagen wir "A", um einen Preis Wert im Moment gegeben werden und es handelt. Wenn wir diesen Wert z. B. in einen beliebigen historischen Wert ändern wollen, nehmen wir einen beliebigen Monatswert und leiten den gewünschten Wert aus der Analyse der Geschichte ab. Ich habe versucht, dies mit dem Strategietester zu tun, aber ich habe viele Zweifel an der Richtigkeit. Oder muss ich es noch einmal machen und mit Arrays arbeiten! Ich danke Ihnen allen.

p.s. Ich möchte es wissen, da ich es nicht im MQL-Handbuch und -Tutorial gefunden habe.

Grund der Beschwerde: