[ARCHIV]Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Ohne dich kann ich nirgendwo hingehen - 5. - Seite 191

 
solnce600:

Herzlichen Dank für Ihre Hilfe.

Eröffnet aber im Tester bei jeder Minutenkerze den Handel. Infos unter diesem Link http://clip2net.com/s/2T98Y

Ich möchte, dass eine Order bei der 5-Minuten-Kerze geöffnet wird, aber nicht bei jeder Kerze.

Und nur, wenn die aktuelle Fünf-Minuten-Kerze > oder = 30 Punkte ist (vom Eröffnungskurs bis zu seinem Maximum)

D.h., eröffnen Sie einen Marktauftrag zum dreißigsten Pip vom Eröffnungskurs der null=aktuellen Fünf-Minuten-Periode.

Wenn die aktuelle Fünf-Minuten-Kerze weniger als 30 Pips vom Eröffnungskurs bis zu ihrem Maximum entfernt ist, sollten Sie keine Marktorder eröffnen.

Lassen Sie den EA einfach auf den Fünf-Minuten-Chart fallen, es wird so sein, wie Sie geschrieben haben.

Oder ersetzen Sie überall im Code Open[0] durch iOpen(Symbol (), PERIOD_M5, 0), dann wird es von jedem Chart aus funktionieren.

Die zweite Bedingung in Ihrem Code ist, dass der Schlusskurs des aktuellen Fünf-Minuten-Zeitraums >= Eröffnungskurs des Auftrags ist.

Nein, Close[0] ist der aktuelle Schlusskurs von Takt 0, d. h. nur der aktuelle Kurs. Sie hätten auch einfach Bid schreiben können, das Ergebnis ist das gleiche.


D.h., es wird nicht viele Aufträge geben, ich habe in Excel nachgerechnet, seit 1999 - etwas mehr als 3000 Aufträge für Euro in beide Richtungen.

Wir gehen zum nächsten Fünf-Minuten-Termin und wenn er, d.h. der aktuelle Fünf-Minuten-Termin > oder = 30 Pips ist, eröffnen wir bei den dreißigsten Pips, wenn weniger, gehen wir zum nächsten Fünf-Minuten-Termin ... und so weiter bis zum Ende des Charts.

Aber die Sache ist die, dass nach einer groben Schätzung die meisten Fünf-Minuten-Pläne, die > oder = 30 Pips sind, viel wahrscheinlicher über 15 Pips hinausfliegen, als dass sie durch einen 30-Pip-Stopp geschlossen werden.

Sie haben eine Bedingung - wenn es keine offenen Aufträge gibt

In meinem System können jedoch zwei Fünf-Minuten-Perioden mit den oben beschriebenen Parametern hintereinander gebildet werden, und wenn der Auftrag aus der vorherigen Fünf-Minuten-Periode nicht geschlossen wird, dann wird in der zweiten Fünf-Minuten-Periode kein Auftrag eröffnet.

Ich möchte, dass in jeder Fünf-Minuten-Periode ein Auftrag mit den oben beschriebenen Parametern eröffnet wird, unabhängig davon, ob es Aufträge im Handel gibt oder nicht.

Okay, dann lassen Sie uns die Bedingung ändern. Es kommt also heraus:

int start()

{

 double Price=iOpen (Symbol (),PERIOD_M5,0)+300*Point;        
 double SL=NormalizeDouble (Price-300*Point, Digits);         
 double TP=NormalizeDouble (Price+150*Point, Digits);    
 
 int last_order_bar = 0;
 int ot = OrdersTotal();

 if (ot>0) //если есть ордера в рынке
 {
   if (OrderSelect (ot-1,SELECT_BY_POS)) //выбрали последний ордер
      if (OrderType ()==OP_BUY || OrderType ()==OP_SELL) //проверили тип
         last_order_bar = iBarShift (Symbol (),PERIOD_M5,OrderOpenTime ()); //запомнили, на каком 5-минутном баре открыт последний ордер (если он есть)
 }
 
 if (OrdesTotal()==0 || last_order_bar>0) //если ордеров нет либо последний открыт не на текущем баре
    if (Bid>=Price)                       //если текущая цена доползла до цены открытия
       int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP );

}
 
beginner:
Ich interessiere mich für den Berater, die Objekte - zeichne ich die Kerze selbst?

Sie können das Prinzip verstehen:

//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Автор : TarasBY, taras_bulba@tut.by                                              |
//+-----------------------------------------------------------------------------------+
//|        Рисуем на чарте бары                                                       |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
void fDraw_Bars (string fs_Pref,          // Префикс имени объекта
                 int fi_NUMPeriod,        // Индекс (номер) периода, на котором будет виден объект
                 bool fb_IsNullBar,       // флаг рисования 0-го бара
                 double ar_Price[][][4])  // Массив с ценами
{
    int      li_widht = 6;
    string   ls_Name;
    color    lc_color = Aqua;
    datetime ldt_Time;
//----
    //---- Определяем время текущей свечи (её место в истории)
    if (fb_IsNullBar) {ldt_Time = Time[0];}
    else {ldt_Time = Time[1];}
    //---- Рисуем свечу
    ls_Name = StringConcatenate (fs_Pref, "_Candle_", TimeToStr (ldt_Time));
    if (ar_Price[0][1][3] < ar_Price[0][1][0]) {lc_color = Red;} else {if (ar_Price[0][1][3] == ar_Price[0][1][0]) {li_widht = 8;} else {lc_color = Blue;}}
    fDraw_OBJ (ls_Name, OBJ_TREND, ldt_Time, ar_Price[0][1][3], ar_Price[0][1][0], lc_color, li_widht, fi_NUMPeriod, "", 0, 10, "Arial", 0);
    //---- Рисуем тени свечи
    ls_Name = StringConcatenate (fs_Pref, "_Shadow_", TimeToStr (ldt_Time));
    if (ar_Price[0][1][3] <= ar_Price[0][1][0]) {lc_color = Gold;} else {lc_color = DeepSkyBlue;}
    fDraw_OBJ (ls_Name, OBJ_TREND, ldt_Time, ar_Price[0][1][1], ar_Price[0][1][2], lc_color, 1, fi_NUMPeriod, "", 0, 10, "Arial", 0);
//---- 
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
 
Diubakin:
Haben Sie sich den Test EA für die Funktion im Tester angesehen? Er schließt genau den maximalen Verlust mit dem maximalen Gewinn, egal wie viele Aufträge es gibt - zwei oder zwanzig.
Die Frage nach der Funktion bleibt vorerst offen, da ich morgen noch einige weitere Funktionen in Ihren Test-EA einfügen werde, um ein reines Experiment durchzuführen. Ich habe es im visuellen Modus beobachtet und fast alle Double Closes sind die letzten, die früheren schließen an SL und TP, d.h. ich habe nichts zur Auswahl. Ich habe "Stops and Takes" entfernt, um eine Auswahl zu haben. Morgen zeige ich Ihnen Ihren Expert Advisor mit allen zusätzlichen Funktionen und Kommentaren! Sie können sich selbst davon überzeugen, wie die Funktion funktioniert. Ich möchte wirklich, dass sie zeigt, dass ich mich geirrt habe! Wenn ich Recht habe, werde ich mein Bestes geben! Bis morgen!
 
alsu:

Lassen Sie Ihren EA einfach auf einem Fünf-Minuten-Chart, es wird sein, wie Sie geschrieben haben.

Oder ersetzen Sie Open[0] durch iOpen(Symbol (), PERIOD_M5, 0) überall im Code, dann wird es von jedem Chart aus funktionieren.

Nein, Close[0] ist der aktuelle Schlusskurs von Takt 0, d. h. nur der aktuelle Kurs. Sie können auch einfach Bid schreiben, das Ergebnis ist das gleiche.


OK, dann ändern wir die Bedingung. Es kommt heraus:




Vielen Dank für Ihre Hilfe. Es ist in Ordnung. Aber......

1. In etwa fünf Minuten wird mehr als 1 Auftrag eröffnet.

2. Einige Aufträge werden bei Stop-Aufträgen geschlossen, deren Preis sich von dem im Code vorgeschriebenen Preis unterscheidet.

Ich habe die Auftragsdaten in der beigefügten Datei markiert.

 
alsu:

Werfen Sie einfach den Expert Advisor auf den Fünf-Minuten-Chart, es wird sein, wie Sie geschrieben haben.

Oder ersetzen Sie Open[0] durch iOpen(Symbol (), PERIOD_M5, 0) überall im Code, dann wird es von jedem Chart aus funktionieren.

Nein, Close[0] ist der aktuelle Schlusskurs von Takt 0, d. h. nur der aktuelle Kurs. Sie können auch einfach Bid schreiben, das Ergebnis ist das gleiche.


OK, dann ändern wir die Bedingung. Es kommt heraus:




Vielen Dank für Ihre Hilfe. Es ist in Ordnung. Aber......

1. In etwa fünf Minuten wird mehr als 1 Auftrag eröffnet.

2. Einige Aufträge werden durch Stop-Aufträge geschlossen, deren Preis sich von dem im Code vorgeschriebenen Preis unterscheidet.

Informationen zu denoben genannten Aufträgen finden Sie unter folgendem Link

http://clip2net.com/s/2Tfym

 

Es tut mir leid. Bitte helfen Sie mir. Ich kopiere ein Programm mit einigen Änderungen. Der Compiler gibt mir einen Fehler: '(' - function definition unexpected F:\forex\MetaTrader NordFX\experts\ia.mq4 (305, 16) .

Was bedeutet das?

- Ich habe versucht, diesen Teil des Programms zu entfernen - er sagt auch Folgendes.

- Ich habe versucht, diesen Teil unverändert zu lassen - das Ergebnis ist das gleiche (gleicher Fehler)

auf das erfolgreich kompilierte native Programm.

 
TarasBY:

Das Prinzip ist nachvollziehbar:



Ich danke Ihnen!
 
lopuh:

Es tut mir leid. Bitte helfen Sie mir. Ich kopiere ein Programm mit einigen Änderungen. Der Compiler gibt mir einen Fehler: '(' - function definition unexpected F:\forex\MetaTrader NordFX\experts\ia.mq4 (305, 16) .

Was bedeutet das?

- Ich habe versucht, diesen Teil des Programms zu entfernen - er sagt auch Folgendes.

- Ich habe versucht, diesen Teil unverändert zu lassen - das Ergebnis ist das gleiche (gleicher Fehler)

auf das erfolgreich kompilierte native Programm.

Hier drüben

Der Fehler deutet darauf hin, dass Sie eine Funktion innerhalb einer anderen Funktion definieren. Alle Funktionen müssen global definiert werden

 

Ich brauche Hilfe.

Ich suche eine Funktion oder ein Skript, das einen Screenshot zu einem bestimmten Zeitpunkt machen kann, z. B. beim Öffnen/Schließen einer Pose.

Wenn ich nicht muss, habe ich ab und zu eine gefunden, aber jetzt kann ich sie nicht mehr finden.

HILFE!
 
DhP:

Ich brauche Hilfe.

Ich suche eine Funktion oder ein Skript, das einen Screenshot zu einem bestimmten Zeitpunkt machen kann, z. B. beim Öffnen/Schließen einer Pose.

Wenn ich nicht muss, stoße ich ab und zu auf eine, aber jetzt kann ich sie nicht mehr finden.

HILFE!
Es gibt einen Expert Advisor von Igor Kim, der in einem bestimmten Intervall einen Screenshot macht