Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 860

 
Hallo! Gibt es einen Roboter, der auf dem Alligator-Indikator + EMA (233) + Stochastik basiert? Und was halten Sie von dieser Strategie?
 
Lizaku:
Hallo! Gibt es einen Roboter, der auf Alligator + EMA (233) + Stochastik-Indikator basiert? Wenn Sie mir einen Link geben können. Und was halten Sie von dieser Strategie?

Der gleitende Durchschnitt ist hier eindeutig unnötig, da der Alligator bereits aus drei gleitenden Durchschnitten besteht. Bleiben noch Alligator und Stochastic:

Alligator + Stochastik

 
Wie kann man im Skript/Berater überprüfen, ob die Berechnung des Indikators beendet ist und welcher Indikator aufgerufen wird? Bislang musste ich Sleep() einsetzen, aber ich habe einen halben Tag verloren, weil ich nicht verstanden habe, warum die Werte in den Puffern Null sind...
 
Es ist immer Mitternacht.
 
Aleksey Vyazmikin:
Wie kann ich im Skript/Berater überprüfen, ob die Berechnung des Indikators abgeschlossen ist und welcher Indikator aufgerufen wird? Bislang musste ich Sleep() einsetzen, aber ich habe einen halben Tag verloren, weil ich nicht verstanden habe, warum die Werte in den Puffern Null sind...

Ich verwende den folgenden Zyklus

 int n = 0;
    do
     {
      // Пытаемся получить нужное значение;
      if(значение не получено)
       {
        n++;
        Sleep(100);
       }
     }
    while(значение не получено && n < 7 && !IsStopped());
 
Alexey Viktorov:

Ich verwende einen Zyklus wie diesen.

Danke. Ich hatte gehofft, es gäbe ein Standardwerkzeug dafür, ich verstehe nur nicht, warum Puffer mit Nullen gefüllt und dann berechnete Werte hineingeschrieben werden sollten - es würde einen Pufferkopierfehler geben und es wäre in Ordnung...

 
Aleksey Vyazmikin:

Ich danke Ihnen. Ich hatte gehofft, dass es ein hausinternes Tool dafür gibt, es ist nur nicht klar, warum Puffer mit Nullen gefüllt und dann berechnete Werte dort eingefügt werden sollten - es würde einen Pufferkopierfehler geben und das wäre in Ordnung...

Ich habe interne Werkzeuge, ich habe einmal versucht, es herauszufinden, aber ohne Erfolg. Ich kann mich nicht einmal mehr daran erinnern, in welchem Abschnitt der Dokumentation dies erwähnt wird. Das hat etwas mit Synchronisation zu tun, wenn ich mich richtig erinnere.

 

Guten Tag, ich schreibe einen Indikator, der auf 5-Band-Bollinger-Linien basiert. Als letzten Schritt habe ich begonnen, Bedingungen für die Bildung eines Musters in Bezug auf die Indikatorlinien zu schreiben, aber beim Testen erhalte ich 2 Varianten: entweder schließt sich der Alarm irgendwie von selbst, oder es passiert nichts. Hier ist ein Fragment:

Können Sie mir sagen, was hier behoben werden kann, wenn es etwas zu beheben gibt?

int OnCalculate (const int rates_total,      // размер входных таймсерий 
                 const int prev_calculated,  // обработано баров на предыдущем вызове 
                 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 
 {
 
//----     
//--- переменные
   int pos; // позиция
   static datetime prevtime = 0;
   int shift1;
   int shift2;
   int shift3;
   string pattern, period;
   int setPattern = 0;
   int alert = 0;
   double O, O1, O2, C, C1, C2, L, L1, L2, H, H1, H2;   
  
//----

//----   
//--- check for bars count - проверка колчества баров
   if(rates_total<ExtPlotBegin)
      return(0);
//--- начало вычисления
   if(prev_calculated>1) pos=prev_calculated-1;
   else pos=0;
//--- главный цикл
   for(int i = pos ; i < rates_total;i++)
    {
      int shift = 0;
      shift1 = shift + 1;
      shift2 = shift + 2;
      shift3 = shift + 3;      
      O = open[shift1];
      O1 = open[shift2];
      O2 = open[shift3];
      H = high[shift1];
      H1 = high[shift2];
      H2 = high[shift3];
      L = low[shift1];
      L1 = low[shift2];
      L2 = low[shift3];
      C = close[shift1];
      C1 = close[shift2];
      C2 = close[shift3]; 
      //--- middle line
      ExtMLBuffer[i]=SimpleMA(i,ExtBandsPeriod,close);
      //--- calculate and write down StdDev
      ExtStdDevBuffer[i]=StdDev_Func(i,close,ExtMLBuffer,ExtBandsPeriod);
      //--- upper line
      ExtTLBuffer[i]=ExtMLBuffer[i]+ExtBandsDeviations*ExtStdDevBuffer[i];
      //--- mediumH line
      ExtMDHBuffer[i]=ExtMLBuffer[i]+ExtBandsDeviationsM*ExtStdDevBuffer[i];
      //--- mediumL line
      ExtMDLBuffer[i]=ExtMLBuffer[i]-ExtBandsDeviationsM*ExtStdDevBuffer[i];  
      //--- lower line
      ExtBLBuffer[i]=ExtMLBuffer[i]-ExtBandsDeviations*ExtStdDevBuffer[i];
     
      // Импульсная свеча от нижней границы Боллинджера
        if(((O <= H) && (H <= ExtMDLBuffer[i])) && ((L >= C) && (C <= ExtBLBuffer[i])))
        {
            Alert("Pin up!");
            PlaySound ("UpperBandAlert.wav"); 
         }
            Sleep(5000);
    }                  
//---- OnCalculate done. Return new prev_calculated. Расчет закончен, возврат к новым предыдущим барам
   return(rates_total);
  }
//+-
 

Hallo.

Volumen der ersten Position =0.1, Volumen der letzten Position =0.2, wie erhalte ich das Volumen der letzten Position =0.2?

Im Hedge-Konto ist dies der Fall:

double Lot_pos_b()
  {
   int total=0;
   double lot=0;
   for(int i=PositionsTotal()-1;i>=0;i--)
      if(m_position.SelectByIndex(i)) // selects the position by index for further access to its properties
         if(m_position.Symbol()==m_symbol.Name() && m_position.Magic()==m_magic)
            if(m_position.PositionType()==POSITION_TYPE_BUY)
              {
               lot=m_position.Volume();
              }
//---
   return(lot);
  }
Wie erhalte ich bei einem Netting-Konto das Lot? Diese Funktion liefert 0,3 statt 0,2.
 
lil_lil:

Hallo.

Volumen der ersten Position =0.1, Volumen der letzten Position =0.2, wie erhalte ich das Volumen der letzten Position =0.2?

Bei einem Hedge-Konto verhält es sich folgendermaßen:

Wie erhält man im Netting-Konto das Lot-Volumen? Diese Funktion liefert 0,3 statt 0,2.

Sehen Sie sich die zur Position gehörenden Geschäfte an und sehen Sie deren Volumen.

Drucken Sie einfach alle gefundenen Abschlüsse einer Position aus (Eigenschaften jeder Position) - finden Sie heraus, wonach Sie dort suchen müssen.

Grund der Beschwerde: