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

 
KhuKhu:

Hallo Freunde.

Wie kann man erreichen, dass die Stop-Loss-, Tekprofit- und Trailing-Werte als Prozentsatz anstelle von Pips angezeigt werden?

Diese Formel ist zu unübersichtlich und funktioniert überhaupt nicht

StopLoss=NormalizeDouble(Bid-(Bid-TrailingStop)/100*TRAL_PERCENT,Digits);

Ich möchte die einfachste Form des Prozentsatzes haben.

Doppelter Stoploss = 0,05;

--------

Gewinn=Gebot-Stop-Verlust in Prozent(es ist ein unschönes Beispiel, aber nur zur Verdeutlichung)

Ich danke Ihnen.

Ein schlampiges Beispiel führt zu einer schlampigen Antwort. Um sie zu verstehen, müssen Sie wissen, woran der Prozentsatz gemessen wird.

 
Андрей Касторский:
.. Wer braucht Hilfe bei der Erstellung eines EA, können Sie mir eine E-Mail schicken. Ich werde helfen

Hilfe nehmen den Preis von Null bar, hier ist die Diskussion

https://www.mql5.com/ru/forum/160683/page237#comment_5350688

 
Alexey Viktorov:

Ein fadenscheiniges Beispiel führt zu einer fadenscheinigen Antwort. Um das zu verstehen, muss man wissen, woran die Prozentsätze gemessen werden.

Ich hab's.

Ich werde versuchen, mich klarer auszudrücken.

Mein Code ist ursprünglich folgendermaßen geschrieben:

extern double StopLoss =0;

extern double TakeProfit =0;

extern double SL_PERCENT = 0,02;

extern double TP_PERCENT = 0.03;

extern double TRALL_PERCENT = 0.01;

extern double Lots =0.5;


Ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,NormalizeDouble(OrderOpenPrice+(OrderOpenPrice + StopLoss)/100*SL_PERCENT,Digits),NormalizeDouble(OrderOpenPrice-(OrderOpenPrice - TakeProfit)/100*TP_PERCENT,Digits),",Magic,0,Red);

StopLoss wird ausgelöst, aber nicht um 0,02 %, sondern um 0,43 %, was nicht korrekt ist. Ich weiß nicht, wie es mit TakeProfit aussieht, da ich es noch nie ausprobiert habe, aber es scheint ebenfalls falsch zu sein.

Ich habe einige Hinweise darauf, dass der Code nicht korrekt ist.

Noch eine Sache, die vielleicht wichtig ist. Meine Bestellungen sind für alle meine Depots für 3-4 Paare geöffnet. Manchmal um fünf.


Außerdem möchte ich solche Parameter wie StopLoss, Takeprofit, TrailingStop in Prozent und nicht in Punkten ändern.

Zum Beispiel,

1) Takeprofit=OrderOnProfit+%TP_PERCENT

2) Stoploss=OrderOnPrice-%SL_PERCENT

D.h.

ticket=OrderSend(Symbol(),OP_BUY,1,Ask,0,%,%,",Magic,0,clrGreen);


Ich weiß nicht, wie ich sie für die Zwecke der Nachverfolgung weiter modifizieren kann.

Ich habe ein Beispiel aus dem Lernprogramm genommen, aber ich mache offensichtlich etwas falsch.

3.) TrailingStop=Bid-%TRALL_PERCENT

Fall 0: // Kaufauftrag

if (NormalizeDouble(OrderOpenPrice-SL*Point,Digits)*SL_PERCENT/100<=(OrderOpenPrice-Ask) // If below

NormalizeDouble(Bid-(Bid-TS)/100*TRAL_PERCENT,Digits)

|| NormalizeDouble(SL,Digits)==0)

{

SL=Bid-TS*Point; //dann ändern

string Text="Kaufen "; // Text für Kaufen

Ändern=true; // zugewiesen zu ändern.

}


Ich hoffe wirklich, dass ich das erklären konnte.

Ich danke Ihnen.

 

Wie kann man die Eröffnung eines Geschäfts (OrderSend) genau zu Beginn der Kerze korrekt umsetzen - OnTimer und/oder OnTick,

Um das Terminal nicht zu überlasten (20-30 gleichzeitig geöffnete und verfolgte Charts)?

entdeckt, dass die Verzögerung beim Erscheinen eines neuen Ticks zu Beginn einer Kerze bis zu 5-10 Sekunden betragen kann; der Abstand zum vorherigen Tick ist signifikant (negativ für Transaktionsbedingungen)

p.s. Gleichzeitig soll der Expert Advisor über ein mögliches Geschäft 1-2 Minuten vor der Geschäftseröffnung informieren, d.h. vor Beginn der Kerzeneröffnung.

 
maxsoft:

Wie kann man die Eröffnung eines Geschäfts (OrderSend) genau zu Beginn der Kerze korrekt umsetzen - OnTimer und/oder OnTick,

um das Terminal nicht zu überlasten (20-30 gleichzeitig geöffnete und verfolgte Charts)?

Es wurde herausgefunden, dass die Verzögerung beim Erscheinen eines neuen Ticks am Anfang einer Kerze bis zu 5-10 Sekunden betragen kann, mit einem signifikanten Abstand zum vorherigen Tick (es ist negativ für Handelsbedingungen)

p.s. In diesem Fall soll der Expert Advisor 1-2 Minuten vor der Geschäftseröffnung, d.h. vor Beginn der Kerzeneröffnung, über ein mögliches Geschäft informieren.

Sie müssen alle offenen Charts im Timer anzeigen, um zu sehen, ob ein neuer Balken erscheint.

Sie müssen ein Array von Zeigern auf Instanzen von Klassen erstellen - eine Klasse für jeden Zeitrahmen jedes offenen Charts.

Die Klasse, die das Öffnen einer neuen Bar überwacht, finden Sie in diesem Artikel.

Öffnen Sie das Diagramm und fügen Sie es der Liste der offenen Diagramme hinzu. Schließen Sie das Diagramm - löschen Sie es aus dem Array.

In der Schleife im Timer durchlaufen Sie ein Array von Zeigern auf Instanzen von Klassen und prüfen die Tatsache der Öffnung eines neuen Balkens, die die Klasse im Falle der Bildung eines neuen Balkens zurückgeben wird.

 
Artyom Trishkin:

Sie müssen alle offenen Charts im Timer anzeigen, um zu sehen, ob ein neuer Balken erscheint.

Sie müssen ein Array von Zeigern auf Klasseninstanzen erstellen ...

Wie sieht es mit der Verwendung von MQL4 aus?

Und was ist mit - "...es soll 1-2 Minuten vor der Geschäftseröffnung, d.h. bevor sich eine Kerze öffnet, eine vorläufige Meldung über ein mögliches Geschäft machen...", d.h. innerhalb eines Balkens

 

Willkommen zum Thema https://www.mql5.com/ru/forum/208120#comment_5412193

Ich kann keinen Konsens finden.

Играем в блиц ЧТО? ГДЕ? КОГДА? 3 вопроса по 20 секунд
Играем в блиц ЧТО? ГДЕ? КОГДА? 3 вопроса по 20 секунд
  • 2017.07.07
  • www.mql5.com
Народ, подскажите пожалуйста, заморочился я тут по поводу AccountBalance() и AccountLeverage(). 1...
 

Bevor ich den Doppeltyp anzeige, normalisiere ich ihn auf 2 Dezimalstellen, aber manchmal funktioniert das nicht. Warum? Hier ist ein Teil des Codes.

prof[num]=(string)NormalizeDouble((double)prof[num]+(double)profit2,2);

Typ prof[] ist String

Und es treten folgende Probleme auf


 
Vladimir Tkach:

Bevor ich den Doppeltyp anzeige, normalisiere ich ihn auf 2 Dezimalstellen, aber manchmal funktioniert das nicht. Warum? Hier ist ein Teil des Codes.

Typ prof[] ist String

Es treten folgende Probleme auf


DoubleToString()

DoubleToString

Konvertiert einen numerischen Wert in eine Zeichenkette.

stringDoubleToString(
doppelterWert,//Zahl
intdigits=8//Anzahl der Dezimalstellen
);

Parameter

Wert

[in] Der Wert ist ein Fließkommawert.

Ziffern

[in] Das Format der Genauigkeit. Wenn der Zahlenwert zwischen 0 und 16 liegt, wird die Zeichenkettendarstellung der Zahl mit der angegebenen Anzahl von Dezimalstellen ermittelt. Liegt der Wert der Ziffern zwischen -1 und -16, so wird eine Zeichenkette zur Darstellung der Zahl im wissenschaftlichen Format mit der angegebenen Anzahl von Dezimalstellen ausgegeben. In allen anderen Fällen wird die Zahl mit 8 Dezimalstellen dargestellt.

Zurückgegebener Wert

Eine Zeichenfolge, die die Zeichendarstellung der Zahl im angegebenen Präzisionsformat enthält.

Beispiel:

Print("DoubleToString(120.0+M_PI) : ",DoubleToString(120.0+M_PI);
Print("DoubleToString(120.0+M_PI,16) : ",DoubleToString(120.0+M_PI,16);
Print("DoubleToString(120.0+M_PI,-16) : ",DoubleToString(120.0+M_PI,-16);
Print("DoubleToString(120.0+M_PI,-1) : ",DoubleToString(120.0+M_PI,-1));
Print("DoubleToString(120.0+M_PI,-20) : ",DoubleToString(120.0+M_PI,-20);

 

Irgendein wundersamer Käfer oder etwas anderes.

Wir fügen die Eingaben hinzu:

input datetime test                                =0;

Kompilieren. Mit dem Datum 1970.01.01 Null ist es nicht möglich, die Stunde in den Einstellungen auf 00, 01 oder 02 zu setzen.
Grund der Beschwerde: