[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 347
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Bitte helfen Sie mir, diesen Code zu verbessern, um einen einfachen Expert Advisor zu erhalten. Das Prinzip ist einfach: Wir eröffnen 2 Positionen Sell und Bui mit festgelegten Stopps zum aktuellen Kurs. Wenn dann eines oder beide auslösen, eröffnen wir neue Positionen. Das Prinzip scheint einfach zu sein, aber es funktioniert trotzdem nicht. Vielen Dank!
//+------------------------------------------------------------------+
//| 2DiffOrders.mq4 |
//| Copyright © 2008, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
extern double lots=0.01;
extern int SL_in_pips;
extern int TP_in_pips;
int x2;
int init()
{
if(SL_in_pips<=MarketInfo(Symbol(),MODE_STOPLEVEL) && SL_in_pips>0)
{
SL_in_pips=MarketInfo(Symbol(),MODE_STOPLEVEL);
Alert("Stoploss установлен слишком близко к цене открытия. Должен быть минимум ",MarketInfo(Symbol(),MODE_STOPLEVEL),"pt.");
}
if(TP_in_pips<=MarketInfo(Symbol(),MODE_STOPLEVEL) && TP_in_pips>0)
{
TP_in_pips=MarketInfo(Symbol(),MODE_STOPLEVEL);
Alert("Takeprofit установлен слишком близко к цене открытия. Должен быть минимум ",MarketInfo(Symbol(),MODE_STOPLEVEL),"pt.");
}
x2=1;
while(x2!=0)
{
if(OrderSend(Symbol(),0,lots,Ask,2,Bid-15*Point,Bid+15*Point,0)!=-1)
{
Alert("Ордер типа BUY успешно открыт");
OrderSend(Symbol(),1,lots,Bid,2,Ask+15*Point,Ask-15*Point,0);
x2=GetLastError();
if(x2==0)
Alert("Ордер типа SELL успешно открыт");
if(x2!=0)
Alert("Ордер типа SELL не открыт. Ошибка №: ",x2);
}else
{
x2=GetLastError();
if(x2!=0)
Alert("Ордер типа BUY не открыт. Ошибка №: ",x2);
}
}
//----
return(0);
Dies scheint nur scheinbar genau richtig zu sein, aber in der Maschinendarstellung kann das letzte Bit unterschiedliche Werte annehmen. D.h. 2,9999, 3 oder 3,00000001
Um solche Missverständnisse auszuräumen, gibt es in MQL die Funktion NormalizeDouble().
Ja, NormalizeDouble() hilft, danke.
Aber es ist immer noch unklar, wie das möglich ist, es scheint eine einfache Division zu sein, und wenn man 0,5 oder 0,9 oder sogar 0,31 durch 0,1 dividiert, ist alles in Ordnung.
und hier hat er eindeutig 2,9, es ist nicht klar... der Taschenrechner ist genauer :-)
Danke an Reshetov und splxgf für ihre Hilfe.
Aber es ist immer noch nicht klar, wie das möglich ist, es scheint eine einfache Division zu sein. Und wenn man 0,5 oder 0,9 oder sogar 0,31 durch 0,1 dividiert, ist es in Ordnung.
und hier ist es 2,9, das ist nicht klar... der Taschenrechner ist genauer :-)
Taschenrechner haben Rundungsfunktionen eingebaut. Und sie lösen das Problem auf die gleiche Weise, weil sie den gleichen mathematischen Coprozessor zur Berechnung von Gleitkommazahlen verwenden.
Hallo!
Können Sie mir bitte einen Tipp geben?!!!
Ich weiß selbst nicht, wie ich es machen soll.
Aufgabe:
EA gibt einmal am Tag 1-2 Bestellungen auf.
Der Anfangswert der Variablen wird manuell festgelegt und kann einen Wert zwischen 1 und 10 annehmen.
Sie müssen die zuvor eingestellte Variable in 1er-Schritten auf einen Wert von - 10 ändern
an jedem Arbeitstag des EA, nur um 1, wenn an diesem Tag kein TP ausgeführt wird.
Wenn TP ausgeführt wird, gibt die Variable den Wert - 1 zurück.
Das Zählen von SL ist nicht geeignet, da es sich um einen oder zwei Werte handeln kann und der Wert nur einmal pro Tag geändert werden kann.
D.h.
Variable = 1
Tag 1 SL - Variable =2
Tag 2 SL - variabel =3
Tag 3 SL - variabel =4
Tag 4 TP - Variable =1
Tag 5 SL - Variable =2
... Und so weiter.
Hilfe!
Ich danke Ihnen.
Bitte helfen Sie mir, diesen Code zu verbessern, um einen einfachen Expert Advisor zu erhalten. Die Idee ist einfach: Wir eröffnen 2 Positionen Sell und Bui mit festgelegten Stopps zum aktuellen Kurs. Wenn dann eines oder beide auslösen, eröffnen wir neue Positionen. Das Prinzip scheint einfach zu sein, aber es funktioniert trotzdem nicht. Vielen Dank!
Kenner, bitte helfen Sie.
Es gibt einen Code, der ein Momentum für eine einzelne Periode berechnet und es mit einer großen Periode integriert, um es dann als Indikator auszugeben.
Ich muss einen Indikator mit einer bestimmten Periode schreiben, der den Durchschnitt der resultierenden Kurve findet und ihn als Indikator ausgibt.
Der Code ist beigefügt:
#property indicator_separate_window
#Eigenschaft indicator_buffers 1
#property indicator_color1 DodgerBlue
#Eigenschaft indicator_width1 2
//------- Externe Indikatorparameter ----------------------------------------+
extern int MTM_Period = 1;
//extern int MTM_Integr_Period = 1000;
//extern int Applied_Price = 0; // Verwendeter Preis:
// 0 - PREIS_SCHLIESSEN
// 1 - PREIS_OFFEN
// 2 - PREIS_HOCH
// 3 - PREIS_NIEDRIG
// 4 - PREIS_MEDIAN
// 5 - PREIS_TYPISCH
// 6 - PREIS_GEWICHTET
extern NumberOfBars = 1000; // Anzahl der Balken (0-all)
//------- Indikatorpuffer ---------------------------------------------------+
double buf0[];
//+----------------------------------------------------------------------------+
//| Benutzerdefinierte Initialisierungsfunktion für Indikatoren |
//+----------------------------------------------------------------------------+
void init() {
SetIndexPuffer (0, buf0);
SetIndexEmptyValue(0, 0);
SetIndexLabel (0, "i-mtm_integr");
SetIndexStyle (0, DRAW_LINE);
}
//+----------------------------------------------------------------------------+
//| Benutzerdefinierte Indikator-Deinitialisierungsfunktion |
//+----------------------------------------------------------------------------+
void deinit() {
Kommentar(");
}
//+----------------------------------------------------------------------------+
//| Benutzerdefinierte Indikator-Iterationsfunktion |
//+----------------------------------------------------------------------------+
void start() {
int LoopBegin, i,j, per=3;
double mtm, mtmsum;
if (NumberOfBars==0) LoopBegin=Bars-1;
else LoopBegin=AnzahlTakte;
LoopBegin=MathMin(LoopBegin, Bars-1);
for (i=LoopBegin; i>=0; i--) {
mtm=Schluss[i]-Schluss[MTM_Periode+i];
mtmsum=mtmsum+mtm;
buf0[i]=mtmsum;
}
/* for (i=LoopBegin-per;i>=per;i--){
mtm=Schluss[i]-Schluss[MTM_Periode+i];
mtmsum[i]=0+mtm;
for (j=per;j<=0;j--){
mtmsum[i]=0+mtmsum[i+j];
mtmsum[i]=mtmsum[i]/per;
buf0[i]=mtmsum[i];
}
}*/
}
//+----------------------------------------------------------------------------+
Kenner, bitte helfen Sie.
Es gibt einen Code, der ein Momentum für eine einzelne Periode berechnet und es mit einer großen Periode integriert, um es dann als Indikator auszugeben.
Ich muss einen Indikator mit einer bestimmten Periode schreiben, der den Durchschnitt der resultierenden Kurve findet und ihn als Indikator ausgibt.
Dies scheint nur scheinbar genau richtig zu sein, aber in der Maschinendarstellung kann das letzte Bit unterschiedliche Werte annehmen. D.h. 2,9999, 3 oder 3,00000001
Um solche Missverständnisse auszuräumen, hat MQL die Funktion NormalizeDouble()
Warum wird die Funktion NormalizeDouble() nicht standardmäßig für alle Werte von Ask, Bid, Low usw. ausgeführt?
Jeder ist darauf hereingefallen und muss es dann "manuell" reparieren... Seltsam, dass MT nicht lesen kann, was es selbst hervorgebracht hat.
Danke, gibt es eine Garantie, dass die Daten in start() verfügbar sind?
Sie können versuchen, RefreshRates() zu verwenden - siehe Beispiele in der Standardhilfe von MetaEditor
In der EA-Optimierung gibt es eine Option "Als Bericht speichern", aber die "Eingabeparameter" werden im Internet Explorer nicht angezeigt,
obwohl sie, dem html-Code nach zu urteilen, dort vorhanden sind. Im Allgemeinen wurde die Optimierung im Hinblick auf diese Parameter eingeleitet.
Weiß jemand, wie man sie in einem Explorer sehen kann?
(Es gibt auch die Möglichkeit, sie mit einem separaten Befehl in eine Textdatei zu kopieren, aber es ist besser, sie im IE zu sehen)