Fragen Sie! - Seite 142

 

Bitte um Hilfe bei einem EA

Ich versuche, einen Verkaufsauftrag zu schließen und einen neuen Kaufauftrag zu eröffnen. Der Kaufauftrag wird geöffnet, aber der Verkaufsauftrag gibt Fehler 4051

Ich verwende

ticket = OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, Gold);// Position schließen

und

ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

 

Wie kann man die magische Zahl ändern?

Hallo zusammen,

Ich benutze den Differenz-EA (Kopie von einem Original-EA), um Differenzpaare im Differenz-Chart-Fenster zu handeln, und ich möchte die magische Zahl ändern, aber ich weiß nicht, wie die magische Zahl funktioniert? Könnten Sie mir bitte sagen:

1. Wie funktioniert die magische Zahl?

2. Wie kann ich die magische Zahl ändern?

3. Kann ich eine beliebige Zahl nehmen, um die magische Zahl zu ändern, oder MUSS ich eine bestimmte Zahl in einigen Regeln verwenden?

4. Könnten Sie mir ein Beispiel für die Änderung der magischen Zahl bei der magischen Zahl meines EA geben: 16763 ?

Vielen Dank für Ihre Hilfe!

 

Die magische Nummer ist nichts anderes als ein eindeutiger Bezeichner. Sie kennzeichnet jede Instanz desselben EA und unterscheidet ihn gleichzeitig von allen anderen EA, die Sie möglicherweise laufen haben.

Wenn die magische Zahl eine externe Variable ist, können Sie sie in eine beliebige Zahl ändern. Vergewissern Sie sich nur, dass es nicht dieselbe Zahl ist wie bei einem anderen EA, den Sie gerade laufen haben.

Wenn es sich nicht um eine externe Variable handelt, suchen Sie im Code nach der Variable und ändern Sie sie in eine beliebige Zahl.

Ich hoffe, das hilft.

Lux

 
luxinterior:
Die magische Nummer ist nichts anderes als eine eindeutige Kennung. Sie unterscheidet jede Instanz desselben EAs und unterscheidet ihn auch von allen anderen EAs, die Sie möglicherweise laufen haben.

Wenn die magische Zahl eine externe Variable ist, ändern Sie sie einfach in eine beliebige Zahl. Vergewissern Sie sich nur, dass es nicht dieselbe Zahl ist wie bei einem anderen EA, der bei Ihnen läuft.

Wenn es sich nicht um eine externe Variable handelt, dann suchen Sie im Code nach der Variable und ändern Sie sie in eine beliebige Zahl, die Sie möchten.

Ich hoffe, das hilft.

Lux

Hallo Lux,

Du meinst, ich kann die magische Zahl meines EAs ändern: 16763 in 16764; 16765 ect... ?

Vielen Dank für Ihre schnelle Antwort.

Luu

 
luu:
Hallo Lux,

Sie meinen, ich kann die magische Zahl meines EAs ändern: 16763 zu 16764; 16765 ect...?

Vielen Dank für Ihre schnelle Antwort.

Luu

Ganz genau! Solange die Nummer eindeutig ist, spielt es keine Rolle, welche Nummer Sie wählen.

Sie brauchen sie nicht wirklich zu ändern, es sei denn, Sie haben einen besonderen Grund dafür.

Lux

 
luxinterior:
Ganz genau! Solange die Nummer einmalig ist, spielt es keine Rolle, welche Nummer Sie wählen.

Sie brauchen es nicht wirklich zu ändern, es sei denn, Sie haben einen besonderen Grund dafür.

Lux

Vielen Dank für Ihre Hilfe, Lux!

Luu

 

EA Abschlussauftrag Probleme

Freunde ı haben einen EA mit Unterstützung Widerstand Indikator.EA muss Aufträge auf Ziel Gewinn abzuschließen.Aber es fehlt irgendwann.Wie kann ı loswerden dieses Problem.Bitte helfen Sie mir

 

Bitte um Hilfe bei einem einfachen generischen Skript.

Hallo

Kann mir jemand bitte mit einem einfachen Skript helfen.

Hier ist, was ich brauche.

Ein sehr allgemeines Skript, das für jedes Symbol verwendet werden kann und 3-4 Aufträge für SELL_STOP und BUY_STOP platziert

Sagen wir, ich möchte einen Buy_Stop 20 Punkte über dem aktuellen Preis platzieren, die zweite Order 40 Punkte über dem aktuellen Preis, die dritte 80 Punkte und so weiter.

Das Gleiche gilt für Sell_Stop

Ich habe versucht, das Skript anhand einiger Beispiele zusammenzustellen, aber da ich mit der Sprache C nicht vertraut bin, habe ich einige Probleme.

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""// improved.mq4

int start()

{

int ticket,i;

int cnt=1;

int Dist_SL =10; // Voreingestellter SL (pt)

int Dist_TP =100; // Voreingestellte TP (pt)

string Symbol=Symbol(); // Symbol

RefreshRates();

double bid =MarketInfo(Symb,MODE_BID);

double ask =MarketInfo(Symb,MODE_ASK);

double point =MarketInfo(Symb,MODE_POINT);

int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);

if (Dist_TP < Min_Dist) // Wenn es weniger als erlaubt ist

{

Dist_TP=Min_Dist; // Setzen der zulässigen

Alert(" Erhöhte die Entfernung von TakeP = ",Dist_TP," pt");

}

//-------------------------------------------------------------------- 6 --

Alert("Die Anfrage wurde an den Server gesendet. Warte auf Antwort..");

for(i=100;i<400;i=i+100)

{

double TP=(ask+i*Point) + Dist_TP*Point; // Angeforderter Preis von TP

ticket=OrderSend(Symb,OP_BUYSTOP,0.1,ask+i*Point,1,(ask+i*Point)-Dist_SL*Point,TP);

Sleep(500);

int Error=GetLastError(); // Fehlgeschlagen

switch(Error) // Überwindbare Fehler

{

case 130:Alert("Der SL ist falsch. Wiederholung..");

RefreshRates(); // Daten aktualisieren

if (Dist_SL < Min_Dist) // Wenn er kleiner als erlaubt ist

{

Dist_SL=Min_Dist; // Erlaubten Wert setzen

Alert(" Erhöht den Abstand von SL = ",Dist_SL," pt");

}

i=i-50;

Alert (i);

Alert (Dist_SL);

cnt=cnt+1;

Alert (cnt);

wenn (cnt==3)break;

continue; // Bei der nächsten Iteration

case 135:Alert("Der Preis hat sich geändert. Ich versuche es erneut..");

RefreshRates(); // Daten aktualisieren

continue; // Bei der nächsten Iteration

case 136:Alert("Keine Kurse. Warten auf einen neuen Tick...");

while(RefreshRates()==false) // Bis zu einem neuen Tick

Sleep(1); // Zyklusverzögerung

continue; // Bei der nächsten Iteration

case 146:Alert("Das Handelssubsystem ist beschäftigt und versucht es erneut...");

Sleep(500); // Einfache Lösung

RefreshRates(); // Daten aktualisieren

continue; // Bei der nächsten Iteration

}

switch(Error) // Kritische Fehler

{

case 2 : Alert("Häufiger Fehler.");

break; // Beenden von 'switch'

case 5 : Alert("Veraltete Version des Client-Terminals.");

break; // Beenden von 'switch'

case 64: Alert("Das Konto ist gesperrt.");

break; // Beenden Sie 'switch'

case 133:Alert("Der Handel ist verboten");

break; // Beenden von 'switch'

default: Alert("Aufgetretener Fehler ",Error);// Andere Alternativen

}

//break;

}

//-------------------------------------------------------------------------- 9 --

Alert ("Das Skript hat seine Operationen abgeschlossen ---------------------------");

return; // Beenden von start()

}

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

Es funktioniert irgendwie, aber ich habe oft Probleme mit dem Stop Loss.

 

Heres meine Idee, wenn wir die Schlange mit dem gaußschen sr Rate innerhalb der wechseln können

ssrc-Indikator tauschen, könnte sich das auszahlen, was meinen Sie?

ssrc es wäre die einseitige gaußsche sr rate spearmen rank korrelation

"osgsrspc" lol .(ich habe versucht, es zu codieren, aber es ging über meinen Kopf)

ssrc_bar.mq4

ssrc.mq4

os_gaussian_sr_rate.mq4

Dateien:
 

Neue Frage: 5. Dezimalstelle und Money Management

In einem anderen Forum, das ich häufig besuche und das sich an Kunden eines bestimmten EA richtet, beschwerte sich ein Kunde über die Tatsache, dass der EA-Entwickler das Problem der 5.

Der Entwickler behauptete vor einigen Monaten, dass dieses Problem nur mit einem speziellen Skript zu lösen sei. Jetzt, 4 Monate später, habe ich gesagt, dass es lächerlich ist, dass das Problem noch nicht behoben wurde - und behauptet, dass es nur ein paar Zeilen Code braucht, um "Point" neu zu definieren, ähnlich wie die hier beschriebene Methode .

Und jetzt kommt die Frage. Der Entwickler besteht immer noch darauf, dass dieses Problem super kompliziert ist und eine spezielle Skriptprogrammierung erfordert, um es zu beheben. Hier ist die Erklärung des Entwicklers:

Hallo John. Sie haben Recht. Mehr und mehr Broker gehen zu Bruchteilen von Pips über. Das Problem mit den Bruchteilen von Pips ist jedoch kein Fehler in [Name entfernt]. Es ist ein Problem mit der Art und Weise, wie die MT4-Plattform den Unterschied in der Anzahl der Dezimalstellen definiert. Wir programmieren den EA und die Indikatoren so um, dass sie den Unterschied erkennen. Dies sollte in der Definition der Variable "Point" innerhalb der MT4-Plattform enthalten sein und EAs verwenden diese Definition, um die Dezimalstellen zu bestimmen. Viele MT4-Plattformen geben jedoch nicht mehr als 4 Dezimalstellen an den EA weiter, so dass ein spezielles Scripting erforderlich ist. Unsere Herausforderung besteht darin, dass wir die Variable "Point" im gesamten EA und in allen Indikatoren verwenden. Es ist also nicht so einfach, ein paar Zeilen Code hinzuzufügen, um "Point" neu zu definieren. Ich hoffe, dass ich bis Ende nächster Woche ein funktionierendes Fractional Pip Programm habe.

Meine Frage lautet also wie folgt: Ist jemand von Ihnen als erfahrener Programmierer auf diese komplizierte Skriptanforderung oder auf Probleme mit dem Wert "Point" der MT4-Plattform gestoßen?

Selbst wenn man davon ausgeht, dass "Point" auf 4 Dezimalstellen begrenzt ist, würde das bedeuten, dass man sich nur um Paare mit Point = 0,001 ---- kümmern muss, was immer noch nur ein oder zwei Zeilen Code erfordert.

Oder Sie könnten "Digits" anstelle von "Point" verwenden - was immer noch nur ein paar Zeilen Code erfordert.

Oder Sie könnten einfach eine boolesche Variable wie "UseFractionalPips = true;" verwenden, um "Point" neu zu definieren.

Ich habe wirklich das Gefühl, dass der Entwickler das Problem entweder komplizierter macht als es ist (oder vielleicht andere Motive hat). Ich habe einfach noch nie von diesem Problem gelesen oder gehört, dass "Point" auf nur 4 Dezimalstellen begrenzt ist - und selbst wenn es so wäre, könnte man "Digits" oder andere Methoden verwenden, um "Point" ohne spezielles Scripting neu zu definieren.

Ich programmiere erst seit 18 Monaten in MT4, daher dachte ich, ich würde mich an einige erfahrenere Programmierer wenden, um zu erfahren, wie kompliziert die "Lösung" für den Umgang mit gebrochenen Pip-Preisen in MT4 ist.

Irgendwelche Ideen?

Vielen Dank im Voraus für Ihre Hilfe,

-B