[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 113

 
r772ra:

Zyklus durch die Positionen

Vielen Dank, ich werde jetzt alles ausprobieren! Vielen Dank!
 
r772ra:

Zyklus durch die Positionen

Ausprobiert, hat nicht geklappt. Also ja, ich kann es finden. Aber das Problem ist, dass ich die folgende Situation erhalte:

Zum Beispiel habe ich am 01.01. eine Position eröffnet, aber die Bedingung wurde erst am 02.01. ausgelöst. D.h. vom Eröffnungskurs der Order auf der negativen Seite hat der Kurs am zweiten Tag 50 Pips überschritten. Wenn die Bedingung erfüllt ist, wird die Aktion ausgeführt. Und die Aktion besteht darin, den Handel um 1/3 zu reduzieren, d.h. das Volumen des Handels um den Faktor drei zu verringern. Aber die Aktion funktioniert, bis das Lot vollständig geschlossen ist. Wir können ein Flag setzen: Wenn b=0 ist, ist die Aktion ausgeführt. Und am Ende der Aktion ist b=1. Wenn wir die Flagge am Ende des Tages nicht löschen, wird der Handel einmal ausgeführt, und das war's, wenn wir ihn anhand der Historie testen. Wenn wir das Kennzeichen auf Null setzen, wird die Aktion, sobald das Kennzeichen auf Null gesetzt ist, erneut mit der Reduzierung der Aufträge beginnen, bis sie vollständig abgeschlossen ist. Ich dachte, es wäre möglich, das Volumen des ursprünglich eröffneten Handels und des dann geänderten Volumens zu vergleichen, aber beim Vergleich werden sie immer gleich sein. Wenn wir das Volumen des Loses verringern, verringert sich auch das Volumen des Geldes auf dem Konto, daher wird das ursprüngliche Volumen neu berechnet. D.h. es ist auch nicht so, dass ich denke, für den 3. Ich habe keine Ahnung, haben Sie eine andere Idee?

 
Boneshapper:

Guten Tag!

Liebe Fachleute, könnten Sie mich bitte beraten.

Wenn der Preis um 50 Pips über dem offenen Preis dieser Order liegt, muss die Order geändert werden.

OrderSelect(0, SELECT_BY_POS,MODE_TRADES);

double OPEN = OrderOpenPrice();
double maximus = OPEN + 0,00500;
Warnung ("maximus = ",maximus);
double minimus = OPEN - 0,00500;
RefreshRates();//Daten auffrischen.
timecur = TimeToStr(TimeCurrent(),TIME_SECONDS); //Berechnen der aktuellen Zeit im Format HH:MM.
if ((timecur > "00:00:00") && (timecur < "22:58:00") && (Deal_s == 1) && (Deal_bb == 0)&& (Bid > maximus))
{
OrderSelect(0, SELECT_BY_POS,MODE_TRADES);
Lootup = OrderLots () * 0,34;
Lootdown = OrderLots () * 0,34;
OrderClose(OrderTicket(), Lootdown, Ask, 10, CLR_NONE);
Alert (GetLastError());
Deal_bb = 1;
}

Wenn es tagsüber passiert, kann ich es schaffen. Wie kann man überprüfen, ob der Eröffnungskurs + 50 P durch den Preis für jedes Los kontrolliert wird, bis es in einigen Tagen geschlossen wird?

Sie messen eine Saite und messen dann nach Saiten - original!!!!
Sie brauchen nichts zu erfinden: Zuerst prüfen Sie die Zeitauflösung und dann nur die Nachlaufaufträge. Bewährte Lösungen für beides finden Sie hier und hier.

 
Boneshapper:

Ausprobiert, hat nicht geklappt. Es funktioniert, aber das Problem ist: Ich kann es nicht finden. Aber das Problem ist, dass ich die folgende Situation erhalte:

Zum Beispiel, 01.01 eröffnete ich ein Geschäft, aber die Bedingung ist nur 02.01 ausgelöst. D.h. aus dem Preis der Eröffnung des Optionsscheins in der negativen Seite hat der Preis 50 Pips am zweiten Tag übergeben. Wenn die Bedingung erfüllt ist, wird die Aktion ausgeführt. Und die Aktion besteht darin, den Handel um 1/3 zu reduzieren, d.h. das Volumen des Handels um den Faktor drei zu verringern. Aber die Aktion funktioniert, bis das Lot vollständig geschlossen ist. Wir können ein Flag setzen: Wenn b=0 ist, ist die Aktion ausgeführt. Und am Ende der Aktion ist b=1. Wenn wir die Flagge am Ende des Tages nicht löschen, wird der Handel einmal ausgeführt, und das war's, wenn wir ihn anhand der Historie testen. Wenn wir das Kennzeichen auf Null setzen, wird die Aktion, sobald das Kennzeichen auf Null gesetzt ist, erneut mit der Reduzierung der Aufträge beginnen, bis sie vollständig abgeschlossen ist. Ich dachte, es wäre möglich, das Volumen des ursprünglich eröffneten Handels und des dann geänderten Volumens zu vergleichen, aber beim Vergleich werden sie immer gleich sein. Wenn wir das Volumen des Loses verringern, verringert sich auch das Volumen des Geldes auf dem Konto, daher wird das ursprüngliche Volumen neu berechnet. D.h. es ist auch nicht so, dass ich denke, für den 3. Ich habe keine Ahnung, haben Sie eine andere Idee?

Was haben die Tage damit zu tun? Sie schreiben einfach auf, was Sie wollen, und der Algorithmus wird Ihnen mitgeteilt. Es scheint mir, dass Sie nicht die Tage, sondern den Gewinn/Verlust des Auftrags prüfen sollten und dann Ihre Auswahl treffen. 50 (oder was auch immer) Pips sind für Sie wichtig...

 
TarasBY:

Man steckt die Zeit in eine Schnur und misst sie dann mit Schnüren - das ist originell!
Sie müssen nichts erfinden: Zuerst prüfen Sie die Zeitauflösung, und dann führen Sie die Aufträge einfach nach. Bewährte Lösungen für beides finden Sie hier und hier.

Vielen Dank für Ihre Antwort, Sie haben mir einen Link zu genau dem gegeben, was ich brauche. Ich werde es jetzt versuchen, aber ich denke, es wird funktionieren.

Es tut mir leid wegen der Fehler, aber ich bin neu im Programmieren und noch nicht sehr gut darin.

 
artmedia70:

Was haben die Tage mit irgendetwas zu tun? Sie schreiben einfach auf, was Sie wollen, und der Algorithmus wird Ihnen mitgeteilt. Es scheint mir, dass Sie nicht die Tage, sondern den Gewinn/Verlust eines Auftrags prüfen und sich darauf verlassen sollten, weil 50 (oder was auch immer) Punkte für Sie wichtig sind...

Ja, Sie haben Recht. Mein Gewinn/Verlust ist das, worauf ich mich verlasse. TarasBY hat mir genau gesagt, was ich brauche. Ich werde es mir jetzt ansehen.

Vielen Dank für Ihre freundliche Aufmerksamkeit!

 

Bitte sagen Sie mir, ob es eine Kim-Funktion für die Suche nach Fraktalen gibt.

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 07.10.2006                                                     |
//|  Описание : Возвращает экстремум ЗигЗага по его номеру.                    |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (NULL или "" - текущий символ)          |
//|    tf - таймфрейм                  (      0     - текущий ТФ)              |
//|    ne - номер экстремума           (      0     - последний)               |
//|    dp - ExtDepth                                                           |
//|    dv - ExtDeviation                                                       |
//|    bs - ExtBackstep                                                        |
//+----------------------------------------------------------------------------+
double GetExtremumZZPrice(string sy="", int tf=0, int ne=0, int dp=12, int dv=5, int bs=3) {
  if (sy=="" || sy=="0") sy=Symbol();
  double zz;
  int    i, k=iBars(sy, tf), ke=0;

  for (i=1; i<k; i++) {
    zz=iCustom(sy, tf, "ZigZag", dp, dv, bs, 0, i);
    if (zz!=0) {
      ke++;
      if (ke>ne) return(zz);
    }
  }
  Print("GetExtremumZZPrice(): Экстремум ЗигЗага номер ",ne," не найден");
  return(0);
}
Wie schreibe ich die gleiche Funktion, die die Anzahl der Fraktale in einem bestimmten Zeitraum zählt?
 
berezhnuy:

Können Sie mir sagen, ob es eine Kim-Funktion zum Auffinden von Fraktalen gibt?

Wie kann man die gleiche Funktion schreiben, die die Anzahl der Fraktale in einem bestimmten Zeitraum zählt?

Es geht ungefähr so:

void fGet_ExtremumsZZPrice (string fs_Symbol,           // инструмент
                            int fi_TF,                  // таймфрейм
                            datetime fdt_TimeControl,   // время, до которого ищем экстремумы
                            int fi_ExtDepth = 12,       // ExtDepth         
                            int fi_ExtDeviation = 5,    // ExtDeviation
                            int fi_ExtBackstep = 3)     // ExtBackstep
{
    double ld_Value, lda_Extremum[];
    int    li_size = iBarShift (fs_Symbol, fi_TF, fdt_TimeControl), li_IND = 0;
//---- 
    for (int li_Bar = 1; li_Bar < li_size; li_Bar++)
    {
        ld_Value = iCustom (fs_Symbol, fi_TF, "ZigZag", fi_ExtDepth, fi_ExtDeviation, fi_ExtBackstep, 0, li_Bar);
        if (ld_Value != 0.)
        {
            ArrayResize (lda_Extremum, li_IND + 1);
            lda_Extremum[li_IND] = ld_Value;
            li_IND++;
        }
    }
//---- 
}

Die Extrema des ZigZag von der aktuellen Zeit bis Time_Control werden in einem Array gesammelt.

 
Können Sie bitte eine Funktion vorschlagen, mit der das neue oder das alte Fraktal überprüft werden kann?
 
berezhnuy:
Können Sie bitte eine Funktion vorschlagen, mit der das neue oder das alte Fraktal überprüft werden kann?

Hier bin ich auf das Thema "Nützliche Funktionen" eingegangen und habe es Ihnen "auf dem Silbertablett" serviert:

//+----------------------------------------------------------------------------+
//| Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                    |
//+----------------------------------------------------------------------------+
//| Версия   : 07.10.2006                                                      |
//| Описание : Поиск ближайшего фрактала.                                      |
//+----------------------------------------------------------------------------+
//| Параметры:                                                                 |
//|   sy - наименование инструмента     (NULL - текущий символ)                |
//|   tf - таймфрейм                    (  0  - текущий ТФ)                    |
//|   mode - тип фрактала               (MODE_LOWER|MODE_UPPER)                |
//+----------------------------------------------------------------------------+
double FindNearFractal(string sy="0", int tf=0, int mode=MODE_LOWER) {
  if (sy=="" || sy=="0") sy=Symbol();
  double f=0;
  int d=MarketInfo(sy, MODE_DIGITS), s;
  if (d==0) if (StringFind(sy, "JPY")<0) d=4; else d=2;

  for (s=2; s<100; s++) {
    f=iFractals(sy, tf, mode, s);
    if (f!=0) return(NormalizeDouble(f, d));
  }
  Print("FindNearFractal(): Фрактал не найден");
  return(0);
}
Lebe und nutze es in guter Gesundheit! Es gibt alle möglichen Arten von ihnen! Sie brauchen nicht zu fragen, Sie brauchen nicht zu warten, Sie nehmen es einfach und nutzen es!
Grund der Beschwerde: