Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1583

 
Valeriy Yastremskiy:

Die Logik ist lahm, alles ist da, sowohl die Arrays für die Tickets als auch die Bestellarten. Nur wird es nicht gefüllt, wenn Aufträge geöffnet werden, und das Array wird aus irgendeinem Grund in der TicketLimit-Funktion auf Null gesetzt. Auf den ersten Blick sieht es so aus.

Inwiefern ist es wie Schach? Uns fehlt ein Zug. Ich werde versuchen, sie zu analysieren. Vielen Dank, Valery.

 

Wie bekomme ich die Balkenstatistik richtig hin?

Das habe ich getan, die Zahl wird korrekt gezählt, aber wenn ich versuche, die Daten zu verwenden, erhalte ich "0".

//---
   int i,limit;
   datetime Start=0;
   if((rates_total-prev_calculated-1)<=0)return(0);
   limit=rates_total-prev_calculated-1;
   for(i=limit; i>=0; i--) 
     {
      Label1Buffer[i]=open[i];
      Label2Buffer[i]=close[i];
      if(Start!=time[i])
        {
         a+=1;                                        // кол-во баров
         if(Label1Buffer[i] <Label2Buffer[i]) u+=1;   // восходящие бары
         if(Label1Buffer[i] >Label2Buffer[i]) d+=1;   // нисходящие бары
         if(Label1Buffer[i]==Label2Buffer[i]) b+=1;   // Дожи
         Start=time[i];
        }
      if(Start==time[i]&&a<=limit)
        {
         Print(i," / ",u," / ",d," / ",b," / ",a," / ",limit);//
        }
      if(a==limit) 
        {
         ObjectCreate(0,"STAT1",OBJ_TEXT,0,time[0],high[0]+750*Point);
         ObjectSetText("STAT1",d,8,"Arial",clrBlack);
         ObjectCreate(0,"STAT2",OBJ_TEXT,0,time[0],low[0]-250*Point);
         ObjectSetText("STAT2",u,8,"Arial",clrBlack);
         Print(d/u);
        }
     }
2021.08.11 17:09:46.884 StatisticsADR EURUSD,Daily: 0
2021.08.11 17:09:46.884 StatisticsADR EURUSD,Daily: 1 / 3041 / 2971 / 41 / 6053 / 6053
2021.08.11 17:09:46.884 StatisticsADR EURUSD,Daily: 2 / 3041 / 2970 / 41 / 6052 / 6053
2021.08.11 17:09:46.884 StatisticsADR EURUSD,Daily: 3 / 3041 / 2969 / 41 / 6051 / 6053
2021.08.11 17:09:46.884 StatisticsADR EURUSD,Daily: 4 / 3041 / 2968 / 41 / 6050 / 6053
2021.08.11 17:09:46.884 StatisticsADR EURUSD,Daily: 5 / 3041 / 2967 / 41 / 6049 / 6053
2021.08.11 17:09:46.884 StatisticsADR EURUSD,Daily: 6 / 3041 / 2966 / 41 / 6048 / 6053

Vielleicht gibt es einen normalen Weg, aber ich "erfinde das Rad neu")

Bitte beraten Sie mich.

 
MakarFX:

Wie bekomme ich die Balkenstatistik richtig hin?

Das habe ich getan, die Zahl wird korrekt gezählt, aber wenn ich versuche, die Daten zu verwenden, erhalte ich "0".

Vielleicht gibt es einen normalen Weg, aber ich "erfinde das Rad neu")

Bitte beraten Sie mich.

Es sieht so aus, als hätten Sie alle int-Variablen und das Ergebnis der Division ist kleiner als 0, also 0;

Versuchen Sie es:

Print((double)d/u);
 
Galim_V:

Wie beim Schach? Ein Zug fehlt. Ich werde versuchen, mir einen Reim darauf zu machen. Vielen Dank, Valery.

в глобальной области
int ind=0, Ind=0;
......

 if(ParSar>MaxClose&&chekt==1){

    ticket=_OrderSend(NULL,OP_BUYSTOP,0.01,MaxClose+(spread*Point()),0);
ind++;
_Tacket[ind]=ticket; Ind=ind;
  }
    }
    if(MinClose!=0){
   if(ParSar<MinClose&&chekt==1){
    _price= NormalizeDouble( MinClose-(spread*Point()),Digits);
    ticket=_OrderSend(NULL,OP_SELLSTOP,0.01,_price,0);
ind++;
_Tacket[ind]=ticket; Ind=ind;
........

for(i=Ind,i<1,Ind--) // вместо Ind OrderTotal правильнее, если есть и другие ордера в терминале
{OrderSelect( _Tacket[i], SELECT_BY_TICKET )
проверки и действия
}
// Здесь запомнить тикет в массив _тикет и тип ордера тоже и запомнить последний индекс массива!!!

 //А потом в Ордер селект подставлять значение массива _тикет) Цикл по индексу массива _тикет от 1 до последнего индекса.
 
Mihail Matkovskij:

Es sieht so aus, als hätten Sie alle int-Variablen und das Ergebnis der Division ist kleiner als 0, also 0;

Versuchen Sie es:

Ich danke Ihnen.
 
Nochmals vielen Dank für all Ihre Hilfe bei meinem letzten Projekt.

Hier ist eine weitere Idee für den nächsten EA, vielleicht ist jemand bereits mit der ORBO (open Range Brake out) Strategie vertraut?

 

Können Sie mir sagen, ob es eine Funktion gibt, die diese Definition für die Eröffnung eines Auftrags vereinfacht?

if(Bid < OpenPrice && Bid > OpenPrice-10*Point)
if(Ask > OpenPrice && Ask < OpenPrice+10*Point)
Die Idee ist, dass ein Auftrag nicht eröffnet wird, wenn der Preis nicht in diesen Bereich fällt
 
MakarFX:

Können Sie mir sagen, ob es eine Funktion gibt, die diese Definition für die Eröffnung eines Auftrags vereinfacht?

Die Idee ist, dass ein Auftrag nicht eröffnet wird, wenn der Preis nicht in diesen Bereich fällt

Zeichne es auf das Papier.

OpenPrice _________________________

Angebot _________________________

OpenPrice-10*_Point________________________


Aus dem Bild können Sie ersehen, dass OpenPrice - Bid nicht höher sein sollte als 10*_Point

 
Alexey Viktorov:

Nun, zeichne es auf Papier.

OpenPrice _________________________

Angebot _________________________

OpenPrice-10*_Point________________________


Aus dem Bild können Sie ersehen, dass OpenPrice - Bid nicht mehr als 10*_Point betragen sollte

Modul Unterschied. Ohne Modul fällt nur die obere Zone in die Bedingung. | OpenPrice - Bid |> 10*_Point opening condition

 
Alexey Viktorov:

Nun, zeichne es auf Papier.

OpenPrice _________________________

Angebot _________________________

OpenPrice-10*_Point________________________


Aus dem Bild können Sie ersehen, dass OpenPrice - Bid nicht höher sein sollte als 10*_Point

Sie verblüffen mich.


Grund der Beschwerde: