Strategische Vorausschau-Systeme - Seite 39

 
-Aleksey-:
Klärende Frage: Werden die Werte des bedingten Indikators für alle Kerzen auf dem Diagramm zu einem bestimmten Zeitpunkt benötigt oder für eine bestimmte Anzahl der letzten Kerzen?
Vorzugsweise für die letzten, die durch ein Fenster festgelegt wurden.
 

Hier ist ein Teil meines Arbeitscodes. Hatte nie ein Problem mit dem Schließen (habe es ein wenig optimiert)

int i, total = OrdersTotal(), Slippage = 50;

bool Ans;
for (i = total-1; i >=0; i--) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol()) {
if(OrderType()==OP_BUY) {
Print("CLOSE BUY");
Ans = false;
while(Ans==false) {
Ans = OrderClose(OrderTicket(),OrderLots(),Bid, Slippage, DodgerBlue);
Sleep(1000);
RefreshRates();
}
}
if(OrderType() == OP_SELL) {
Print("CLOSE SALE");
Ans = false;
while(Ans==false) {
Ans = OrderClose(OrderTicket(),OrderLots(),Ask, Slippage, Orange);
Sleep(1000);
RefreshRates();
}
}
}
}

 
rulabs:

Hier ist ein Teil meines Arbeitscodes. Hatte nie ein Problem mit dem Schließen (habe es ein wenig optimiert)

...

Vielen Dank!!! Ich werde es ausprobieren.
 
Farnsworth:
Vielen Dank!!! Ich werde es ausprobieren.
Vielen Dank für diesen Beitrag. Fragen Sie, ob Sie etwas brauchen.
 
Farnsworth:
vorzugsweise für letztere, die durch eine Art Fenster eingestellt werden.

Ich habe es wie folgt implementiert:

//---начало блока глобальных переменных---------------
int GLOBAL_DATA_LIMIT;
bool first_run=true;
//---конец блока глобальных переменных
//++++++++++++++++++++++++++++++++++++
//---начало блока инициализации
void OnInit()
   {
      GLOBAL_DATA_LIMIT= расчет числа данных(длины окна данных), необходимых для расчета окна условного индикатора заданной длины
      ....инициализация
  }
//---конец блока инициализации индикатора
//+++++++++++++++++++++++++++++++++++++++
//---начало блока обновления индикатора--
int OnCalculate (
                  const int rates_total,      // current size of the timeseries array
                  const int prev_calculated,  // size of the timeseries array got by reurn value the last time
                  const datetime& time[],     // Time
                  const double& open[],       // Open
                  const double& high[],       // High
                  const double& low[],        // Low
                  const double& close[],      // Close
                  const long& tick_volume[],  // Tick Volume
                  const long& volume[],       // Real Volume
                  const int& spread[]         // Spread
                )
   {
      if(rates_total<0)
      {
         printf("На графике отсутствуют исторические данные");
         return(0);
      }
      if(rates_total<GLOBAL_DATA_LIMIT)
      {
         printf("Недостаточно исторических данных, необходимое количество: "+string(GLOBAL_DATA_LIMIT));
         return(0);
      }
      if(prev_calculated==0) // срабатывает при первом запуске, или когда история поменялась
      {
         if (first_run==true) первый расчет при запуске - в момент первого тика после инициализации
         *{
            ArrayCopy(cur_price_array, close, 0, (rates_total-1)-GLOBAL_DATA_LIMIT, GLOBAL_DATA_LIMIT); - копируем в массив необходимое количество значений цены
            ...
            Со скопированным массивом проводим расчет
            Отображаем результат
            ...   
            first_run=false;
         *}
         else расчет на каждом тике
         {
         в это место вставить код *(без first_run=false;), если считать на каждом тике. Если считать не на каждом тике, а по новому бару, то вставить * в функцию isNewBar
         }         
      }
      
      if(isNewBar(_Period)) расчет на каждом баре
      {
          *{
                      ArrayCopy(cur_price_array, close, 0, (rates_total-1)-GLOBAL_DATA_LIMIT, GLOBAL_DATA_LIMIT); - копируем в массив необходимое количество значений цены
                      ...
                      Со скопированным массивом проводим расчет
                      Отображаем результат
                      ...
         *}
      }
      return(rates_total);
   } 
//---конец блока обновления индикатора---
 

Hierbei handelt es sich um ein Schema zur Berechnung eines oder mehrerer n Indikatorwerte auf der Grundlage von kopierten m(GLOBAL_DATA_LIMIT)-Kurswerten auf jedem Balken oder Tick.

Wenn sich die Vergangenheitswerte des berechneten Wertfensters nicht ändern, dann können Sie in der Berechnung(en) wie folgt vorgehen

-berechnet nur den neuen Wert (einen);

-das berechnete Wertefenster (Array mit Ergebnissen) um 1 Index nach links verschieben;

-Schreiben Sie einen neuen Wert in den letzten Index des Ergebnis-Arrays.


Ich weiß nicht, ob das klar ist. Der Code ist in MQL5, ich weiß nicht 4, aber es sollte ähnlich sein ich denke.

 
-Aleksey-:

...

Danke, ich werde es mir ansehen.
 
Risk:

Admins, absolute Macht führt zur Diktatur. Selbst unser politisch korrekter Timbo konnte diesen Marasmus nicht ertragen und ging irgendwohin :)

Es muss eine Opposition geben, die zumindest manchmal alles in die richtigen Bahnen lenkt, aber hier ist unklar, wer ernsthaft Bereiche der Mathematik definiert, während er ohne die Hilfe von Schülern die Ordnung nicht schließen kann. Was wird morgen passieren?

Wenn Sie die Opposition sind, bin ich der Papst. Sie lassen den Autor nicht zu Wort kommen, und Ihre Beiträge haben keinerlei Inhalt. Es gibt eine echte Opposition, und sie widersetzt sich konstruktiv. Und Trolle können nicht die Opposition sein, sie sind schlicht und einfach Themenzerstörer.
Sie werden für ein weiteres Verbot vorgeführt.
 
rulabs:
Vielen Dank für das Thema. Bitte fragen Sie uns, wenn Sie etwas brauchen.
Während eines Streits mit einem Kollegen hätte ich beinahe einen Beitrag verpasst, der mir sehr am Herzen lag. Jeder auf dieser Website trägt etwas anderes bei, daher kann ich ein "Danke" nicht ganz akzeptieren - wenn ein Thema interessant ist, ist das der Verdienst aller Teilnehmer :o)
 

Um das Thema am Leben zu erhalten:)

Am Montag um 11:15 Uhr Moskauer Zeit, ohne jegliche Analyse, eröffnete ich Paare in MT5 beobachtet (ich sollte es zu gewöhnen).

EURUSD und GBPUSD habe ich nicht eröffnet, weil sie flach waren. Ich werde es aber bis Freitag aufheben, ich sollte jeden Tag genau hinschauen und es eventuell korrigieren.

Wenn es jemanden interessiert, können Sie es sich ansehen.

Anmeldung: 729566

Investor: iuj2seh