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

 
trader781:

1) Der Compiler wird sich beschweren, wenn die zweite Dimension nicht angegeben wird, und es wird sofort die Meldung "specify class type, unknown parameters" angezeigt.

2) dann stirbt der Bot sofort beim Start mit "critical error array out of range".

3) setzeint count1=-1; dann durchlaufe die Schleife. Was ist hier los?

Schauen Sie sich die Antworten ab und zu an: 1 und 2 und 3 und ...

Seit mehr als einer Woche machen Sie dasselbe und es wird immer schlimmer, obwohl Sie bereits eine Antwort erhalten haben und auf den Fehler hingewiesen wurden. Im ersten Code hat sich der Compiler nicht beschwert, dass die zweite Dimension nicht vorhanden ist, aber in den nachfolgenden Codes fängt er an, sich zu beschweren? Ist der Compiler defekt? Sie können auch jeden Code mit Arrays öffnen und sehen, wie sie erstellt werden, und dasselbe tun.

 
Artyom Trishkin:

So etwas gibt es nicht. Die MAs sind bereits von so vielen Leuten durchforstet worden, dass man nur noch auf einen neuen Gedanken eines frischgebackenen Händlers warten muss. Nur ein Scherz.

Die Wahrheit ist, dass ich es leid bin, so viele Jahre lang mit einer MA-Flasche herumzustochern. Sie hinken hinterher. Sie sollten wahrscheinlich in einem anderen Bereich eingesetzt werden, aber nicht zum Einfangen von Trendströmen.

Es gibt alle möglichen Arten von Mashkas.

Im Großen und Ganzen gibt es überall nur Drücker.

 
Victor Nikolaev:

Es gibt alle möglichen Arten von Mash-ups.

Im Großen und Ganzen werden alle Pilze überall verwendet.

Was will ich damit sagen? Das ist es, was ich sagen will - in einem anderen Gewand, nicht frontal.
 
Vitaly Muzichenko:


Noch nicht fertig. Ich hätte hier nicht geschrieben, wenn ich bei anderen eine ähnliche Situation vorgefunden hätte. Ich denke, Sie verstehen selbst, dass eine Zahlenfolge und eine Liste von Strukturen nicht dasselbe sind, sonst gäbe es eine weitere Gleichung mit einer unendlichen Anzahl von Unbekannten.

Artyom Trishkin:

Wie wäre es damit?



#property strict




struct myorder
{
int    Ticket;
double orderopenprice;
int   ordertype;
double profit;
double stoploss;
double  lot;
};
myorder orders[];




int    i;  
int    Magic=444;    



//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
  
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
CalcOrders();
  
  }
//+------------------------------------------------------------------+
void CalcOrders()
{
int count1=0;

for(i=OrdersTotal()-1; i>=0; i--)
     {
      if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) && (OrderSymbol()==Symbol())
         && (OrderMagicNumber()==Magic) && (OrderType()<2))
         {
         count1++;
         ArrayResize(orders,count1);
         orders[count1-1].Ticket=OrderTicket();
         orders[count1-1].lot=OrderLots();
         orders[count1-1].orderopenprice=OrderOpenPrice();
         orders[count1-1].ordertype=OrderType();
         orders[count1-1].profit=OrderProfit();
         orders[count1-1].stoploss=OrderStopLoss();
         }    
     }
     ArraySort(orders,WHOLE_ARRAY,0,MODE_ASCEND);
    
}
  
Und was das Einstellen des Codes hier angeht - es nervt mich, wenn jemand den Code einstellt und dann durch die Seiten blättern muss. Auf diese Weise ist es kompakter.
 
trader781:
bis ich es tue. Ich würde hier nicht schreiben, wenn ich eine ähnliche Situation bei anderen gefunden hätte.
Bitte fügen Sie den Code nicht als Datei, sondern in eine Nachricht ein. So sieht man von einem Mobiltelefon aus?
 
trader781:
bis ich es tue. Ich hätte hier nicht geschrieben, wenn ich das Gleiche bei anderen gefunden hätte. Ich denke, Sie verstehen selbst, dass Zahlenreihen und Strukturlisten nicht dasselbe sind, sonst würden Sie eine weitere Gleichung mit einer unendlichen Anzahl von Unbekannten erhalten.
#property strict




struct myorder
{
int    Ticket;
double orderopenprice;
int   ordertype;
double profit;
double stoploss;
double  lot;
};
myorder orders[];




int    i;  
int    Magic=444;    



//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
  
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
CalcOrders();
  
  }
//+------------------------------------------------------------------+
void CalcOrders()
{
int count1=-1;

for(i=OrdersTotal()-1; i>=0; i--)
     {
      if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) && (OrderSymbol()==Symbol())
         && (OrderMagicNumber()==Magic) && (OrderType()<2))
         {
         count1++;
         ArrayResize(orders,count1,10);
         orders[count1].Ticket=OrderTicket();
         orders[count1].lot=OrderLots();
         orders[count1].orderopenprice=OrderOpenPrice();
         orders[count1].ordertype=OrderType();
         orders[count1].profit=OrderProfit();
         orders[count1].stoploss=OrderStopLoss();
         }    
     }
     ArraySort(orders,WHOLE_ARRAY,0,MODE_ASCEND);
    
}
  
Und was das Einstellen des Codes hier angeht - es nervt mich, wenn jemand den Code einstellt und dann durch die Seiten blättern muss. Auf diese Weise ist es kompakter.

Falsch. Verfolgen Sie anhand Ihres Codes, wie groß Ihr Array sein wird.

Man muss nachdenken, zumindest ein bisschen. Sie brauchen nicht zu raten. Denken Sie nach. Jeder Schritt des Programms. Oder warten Sie darauf, dass es jemand für Sie schreibt? Dies ist ein freiberuflicher Dienst - manchmal werden Sie beauftragt, Funktionen zu schreiben.

 
Artyom Trishkin:

Falsch. Verfolgen Sie anhand Ihres Codes, wie groß Ihr Array sein wird.

Sie sollten zumindest ein wenig darüber nachdenken. Sie sollten nicht versuchen, zu raten. Denken Sie nur. Jeder Schritt des Programms. Oder warten Sie darauf, dass es jemand für Sie schreibt? Dies ist ein freiberuflicher Dienst - manchmal werden Sie beauftragt, Funktionen zu schreiben.

So sehe ich das

1) zu Null addieren, wenn Ordnung gefunden wird

2) Ändern Sie die Größe auf 0, reservieren Sie 10

3) Schreiben Sie 0 als die erste Ordnungszahl, 1 als die zweite, usw.

Was die Freiberuflichkeit betrifft, so bestreite ich nicht, dass sie alles schreiben werden, aber man muss es trotzdem selbst umschreiben. Sie müssen nicht ununterbrochen dorthin fahren.
 
trader781:
bis ich es tue. Ich hätte hier nicht geschrieben, wenn ich das auch bei anderen gefunden hätte. Ich denke, Sie verstehen selbst, dass die Zahlenfolge und die Liste der Strukturen nicht dasselbe sind, sonst wäre es eine weitere Gleichung mit einer unendlichen Anzahl von Unbekannten.
int count1=-1;

for(i=OrdersTotal()-1; i>=0; i--)
     {
      if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) && (OrderSymbol()==Symbol())
         && (OrderMagicNumber()==Magic) && (OrderType()<2))
         {
         count1++;
         ArrayResize(orders,count1,10);
         orders[count1].Ticket=OrderTicket();
         }    
     }
     ArraySort(orders,WHOLE_ARRAY,0,MODE_ASCEND);
    
}
  
Und was das Einstellen des Codes hier angeht - es nervt mich, wenn jemand den Code einstellt und dann durch die Seiten blättern muss. Der Grund dafür ist, dass die Kodierung keinen Einfluss auf die Qualität des Projekts hat.

Ich habe nicht allzu viel geschrieben, sondern nur eine kleine Videoantwort aufgenommen.

Artem hilft, wo er nur kann, aber er gibt mir keinen Fisch, sondern nur eine Angel)

trader781, schauen Sie sich die Dokumentation manchmal an, sie ist jetzt an allen Ecken und Enden voll.
 
trader781:

so wie ich es sehe

1) zu Null addieren, wenn ein Auftrag gefunden wird

2) Ändern Sie die Größe auf 0, reservieren Sie 10

3) Schreiben Sie 0 als erste Ordnungszahl, 1 als zweite Ordnungszahl, usw.

Was die Freelance-Agentur angeht, so bestreite ich nicht, dass sie alles schreiben wird, aber Sie müssen es trotzdem selbst umschreiben. Gehen Sie nicht nonstop dorthin.

Und wie wollen Sie etwas in ein Array mit einer Größe von Null schreiben?

Stecken Sie Geld in eine Brieftasche, die Sie nicht haben...

 
Artyom Trishkin:

Und wie wollen Sie etwas in ein Array mit einer Größe von Null schreiben?

Geld in eine Brieftasche stecken, die es nicht gibt ...

Beitrag 844 überarbeitet, damit ich hier nicht wieder Code schreiben muss.

Was das Array mit der Größe Null betrifft - 0 kann eine ganze Zahl sein, es kann das Äquivalent eines booleschen fals sein, es kann ein void sein, und es kann ein Startpunkt sein.