Ich brauche Hilfe bei einem Code - Seite 2

 
deVries:


Für mich sieht es immer noch so aus, als wüssten Sie nichts über Codierung

und du tust nichts, um etwas über Programmieren zu lernen

Welchen Versuch haben Sie unternommen, um das zu machen?

Wenn du Hilfe willst, dann zeige deinen Versuch, es zu machen.

Es gibt immer noch nichts, womit man dir helfen könnte ...

Ja. Das ist völlig neu für mich. Gibt es ein Buch, auf das Sie mich verweisen können?
 
diamstar:
Ja. Das ist völlig neu für mich. Gibt es ein Buch, auf das Sie mich verweisen können?

Buch in einer Datei
Herunterladen - 2 Mb
 
deVries:

Buch in einer Datei
Herunterladen - 2 Mb
Ich danke Ihnen. Ich werde etwas schreiben, nachdem ich das Buch beendet habe, egal wie schlecht es ist.
 
diamstar :
30 Minuten


Hier ist etwas, das Ihnen beim Einstieg helfen kann.

Und was das alte Chinesisch betrifft, bleiben Sie bei mql, es sei denn, Sie sprechen bereits Chinesisch. Es ist einfacher, Sie können mehr Hilfe bekommen und wenn Sie jemals eine brillante Idee haben, wird mql Ihnen helfen, eine Menge Geld zu verdienen. Es macht auch Spaß.

Auf geht's :

 //+------------------------------------------------------------------+
//|                                               News_Trader_v1.mq4 |
//|                                            Copyright © 2013 _3DE |
//|                                        https://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2013 _3DE"
#property link        "https://www.metaquotes.net"
extern string   Note1       = "Set parameters in Pips not points !" ;
extern string   Note2       = "Set day of the month for the news !" ;
extern string   Note3       = "Set to zero to trade every day    !" ;
extern string   Note4       = "Leave SetDistance to zero if trading news !" ;
extern int      TakeProfit  = 25 ; // Take profit pips
extern int      StopLoss    = 20 ; // Stop loss pips (manual trading)
extern int      SetDistance = 0 ; // Sistance for BuyStop and SellStop from price at news time
extern int      DayOfNews   = 0 ; // Day of the month of news
extern int      NewsHour    = 0 ; // Hour of news
extern int      NewsMin     = 0 ; // Minute of news
extern int      Expiration  = 5 ; // Expiration of pending orderes
extern int      BEPips      = 11 ; // Move to break even after BEPips
extern int      TrailingStop= 0 ; // What distance to keep trailing
extern int      Slip        = 5 ; // Slippage
extern int      MagicNumber= 2210 ; // Must be unique for every chart
extern double   Lots        = 0.1 ;
extern bool     WriteLog= false ; // Write a log file 
extern string   TradeLog    = "MI_Log" ;
input    string   EaComment   = "NewsTrader_EA" ;

double h,l,ho,lo,hso,lso,htp,ltp,sp,price;

string filename;
int pointMultiply= 10 ;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   if ( Digits == 3 || Digits == 5 )
     {
      pointMultiply  *= 10 ;
      TakeProfit     *= 10 ;
      StopLoss       *= 10 ;
      BEPips         *= 10 ;
      TrailingStop   *= 10 ;
      SetDistance    *= 10 ;
     }
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----

//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   int i;
   int OrdersCondition,minofday,minofnews;

   filename= Symbol ()+TradeLog+ "-" + Month ()+ "-" + Day ()+ ".txt" ;

   if (BEPips> 0 ) DoBE(BEPips);

   if (TrailingStop> 0 ) DoTrail();

   OrdersCondition=CheckOrdersCondition();
   if ( Day ()==DayOfNews || DayOfNews== 0 )
     {
      minofday= Hour ()* 60 + Minute ();
      minofnews=NewsHour* 60 +NewsMin;

       if ((minofday==minofnews- 2 ) || (minofday==minofnews- 1 ))
        {
         h= iHigh ( NULL , PERIOD_M1 , 0 );
         l= iLow ( NULL , PERIOD_M1 , 0 );
         for (i= 1 ;i<= 3 ;i++) if ( iHigh ( NULL , PERIOD_M1 ,i)>h) h= iHigh ( NULL , PERIOD_M1 ,i);
         for (i= 1 ;i<= 3 ;i++) if ( iLow ( NULL , PERIOD_M1 ,i)<l) l= iLow ( NULL , PERIOD_M1 ,i);
         sp= Ask - Bid ;
         ho=h+sp+(pointMultiply)* Point ;
         lo=l-(pointMultiply)* Point ;
         hso=h+sp;
         lso=l;
         htp=ho+TakeProfit* Point -sp;
         ltp=lo-TakeProfit* Point +sp;
         //---
         ho= NormalizeDouble (ho, Digits );
         lo= NormalizeDouble (lo, Digits );
         hso= NormalizeDouble (hso, Digits );
         lso= NormalizeDouble (lso, Digits );
         htp= NormalizeDouble (htp, Digits );
         ltp= NormalizeDouble (ltp, Digits );
         if (SetDistance!= 0 )
           {
            price=( Ask + Bid )/ 2 ;
            h=price+SetDistance* Point ;
            l=price-SetDistance* Point ;
            ho= NormalizeDouble (h+sp, Digits );
            lo= NormalizeDouble (l-sp, Digits );
            hso= NormalizeDouble (ho-StopLoss* Point , Digits );
            htp= NormalizeDouble (ho+TakeProfit* Point , Digits );
            lso= NormalizeDouble (lo+StopLoss* Point , Digits );
            ltp= NormalizeDouble (lo-TakeProfit* Point , Digits );
           }
         if (OrdersCondition== 0 )
           {
             if (WriteLog)Write( "Opening BuyStop & SellStop, OrdersCondition=" +OrdersCondition+ " MinOfDay=" +minofday);
            OpenBuyStop();
            OpenSellStop();
           }

         if (OrdersCondition== 10 )
           {
             if (WriteLog)Write( "Opening SellStop, OrdersCondition=" +OrdersCondition+ " MinOfDay=" +minofday);
            OpenSellStop();
           }

         if (OrdersCondition== 1 )
           {
             if (WriteLog)Write( "Opening BuyStop , OrdersCondition=" +OrdersCondition+ " MinOfDay=" +minofday);
            OpenBuyStop();
           }
        }
     }
   if ((minofday>=minofnews) && (minofday<=minofnews+Expiration- 1 ))
     {

       if (OrdersCondition== 1001 )
        {
         if (WriteLog)Write( "Deleting SellStop Because of BuyStop Hit, OrdersCondition=" +OrdersCondition+ " MinOfDay=" +minofday);
         DeleteSellStop();
        }

       if (OrdersCondition== 110 )
        {
         if (WriteLog)Write( "Deleting BuyStop Because of SellStop Hit, OrdersCondition=" +OrdersCondition+ " MinOfDay=" +minofday);
         DeleteBuyStop();
        }
     }

   if (minofday>=minofnews+Expiration)
     {
       if (OrdersCondition== 11 )
        {
         if (WriteLog)Write( "Deleting BuyStop and SellStop Because 5 min expired, OrdersCondition=" +OrdersCondition+ " MinOfDay=" +minofday);
         DeleteBuyStop();
         DeleteSellStop();
        }

       if ((OrdersCondition== 10 ) || (OrdersCondition== 110 ))
        {
         if (WriteLog)Write( "Deleting BuyStop Because 5 min expired, OrdersCondition=" +OrdersCondition+ " MinOfDay=" +minofday);
         DeleteBuyStop();
        }

       if ((OrdersCondition== 1 ) || (OrdersCondition== 1001 ))
        {
         if (WriteLog)Write( "Deleting SellStop Because 5 min expired, OrdersCondition=" +OrdersCondition+ " MinOfDay=" +minofday);
         DeleteSellStop();
        }
     }

//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| int CheckOrdersCondition()                                       |
//+------------------------------------------------------------------+

int CheckOrdersCondition()
  {
   int result= 0 ;
   for ( int i= 0 ;i< OrdersTotal ();i++)
     {
       OrderSelect (i, SELECT_BY_POS , MODE_TRADES );
       if (( OrderType ()== OP_BUY ) && ( OrderSymbol ()== Symbol ()) && ( OrderMagicNumber ()==MagicNumber))
        {
         result+= 1000 ;
        }
       if (( OrderType ()== OP_SELL ) && ( OrderSymbol ()== Symbol ()) && ( OrderMagicNumber ()==MagicNumber))
        {
         result+= 100 ;
        }
       if (( OrderType ()== OP_BUYSTOP ) && ( OrderSymbol ()== Symbol ()) && ( OrderMagicNumber ()==MagicNumber))
        {
         result+= 10 ;
        }
       if (( OrderType ()== OP_SELLSTOP ) && ( OrderSymbol ()== Symbol ()) && ( OrderMagicNumber ()==MagicNumber))
        {
         result+= 1 ;
        }

     }
   return (result); // 0 means we have no trades
  }
// OrdersCondition Result Pattern
//    1    1    1    1
//    b    s    bs   ss
//  
//+------------------------------------------------------------------+
//|void OpenBuyStop()                                                |
//+------------------------------------------------------------------+

void OpenBuyStop()
  {
   int ticket,tries;
   tries= 0 ;
   if (! GlobalVariableCheck ( "InTrade" ))
     {
       while (tries< 3 )
        {
         GlobalVariableSet ( "InTrade" , TimeCurrent ());   // set lock indicator
         ticket= OrderSend ( Symbol (), OP_BUYSTOP ,Lots,ho,Slip,hso,htp,EaComment,MagicNumber, 0 ,Red);
         if (WriteLog)Write( "in function OpenBuyStop OrderSend Executed , ticket =" +ticket);
         GlobalVariableDel ( "InTrade" );   // clear lock indicator
         if (ticket<= 0 )
           {
            tries++;
           }
         else tries= 3 ;
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OpenSellStop()
  {
   int ticket,tries;
   tries= 0 ;
   if (! GlobalVariableCheck ( "InTrade" ))
     {
       while (tries< 3 )
        {
         GlobalVariableSet ( "InTrade" , CurTime ());   // set lock indicator
         ticket= OrderSend ( Symbol (), OP_SELLSTOP ,Lots,lo,Slip,lso,ltp,EaComment,MagicNumber, 0 ,Red);
         if (WriteLog)Write( "in function OpenSellStop OrderSend Executed , ticket =" +ticket);
         GlobalVariableDel ( "InTrade" );   // clear lock indicator
         if (ticket<= 0 )
           {
            tries++;
           }
         else tries= 3 ;
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void DoBE( int byPips)
  {
   for ( int i= 0 ; i< OrdersTotal (); i++)
     {
       OrderSelect (i, SELECT_BY_POS , MODE_TRADES );
       if ( OrderSymbol ()== Symbol () && ( OrderMagicNumber ()==MagicNumber)) // only look if mygrid and symbol...
        {
         if ( OrderType ()== OP_BUY ) if ( Bid - OrderOpenPrice ()>byPips* Point ) if ( OrderStopLoss ()< OrderOpenPrice ())
           {
             if (WriteLog)Write( "Movine StopLoss of Buy Order to BE+1" );
             OrderModify ( OrderTicket (), OrderOpenPrice (), OrderOpenPrice ()+ Point , OrderTakeProfit (),Red);
           }
         if ( OrderType ()== OP_SELL ) if ( OrderOpenPrice ()- Ask >byPips* Point ) if ( OrderStopLoss ()> OrderOpenPrice ())
           {
             if (WriteLog)Write( "Movine StopLoss of Buy Order to BE+1" );
             OrderModify ( OrderTicket (), OrderOpenPrice (), OrderOpenPrice ()- Point , OrderTakeProfit (),Red);
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void DoTrail()
  {
   for ( int i= 0 ; i< OrdersTotal (); i++)
     {
       OrderSelect (i, SELECT_BY_POS , MODE_TRADES );
       if ( OrderSymbol ()== Symbol () && ( OrderMagicNumber ()==MagicNumber)) // only look if mygrid and symbol...
        {

         if ( OrderType ()== OP_BUY )
           {
             if ( Bid - OrderOpenPrice ()> Point *TrailingStop)
              {
               if ( OrderStopLoss ()< Bid - Point *TrailingStop)
                 {
                   OrderModify ( OrderTicket (), OrderOpenPrice (), Bid - Point *TrailingStop, OrderTakeProfit (), 0 ,Green);
                   return ;
                 }
              }
           }

         if ( OrderType ()== OP_SELL )
           {
             if (( OrderOpenPrice ()- Ask )>( Point *TrailingStop))
              {
               if (( OrderStopLoss ()>( Ask + Point *TrailingStop)) || ( OrderStopLoss ()== 0 ))
                 {
                   OrderModify ( OrderTicket (), OrderOpenPrice (), Ask + Point *TrailingStop, OrderTakeProfit (), 0 ,Red);
                   return ;
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void DeleteBuyStop()
  {
   for ( int i= 0 ; i< OrdersTotal (); i++)
     {
       OrderSelect (i, SELECT_BY_POS , MODE_TRADES );
       if ( OrderSymbol ()== Symbol () && ( OrderMagicNumber ()==MagicNumber) && ( OrderType ()== OP_BUYSTOP ))
        {
         OrderDelete ( OrderTicket ());
         if (WriteLog)Write( "in function DeleteBuyStopOrderDelete Executed" );
        }

     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void DeleteSellStop()
  {
   for ( int i= 0 ; i< OrdersTotal (); i++)
     {
       OrderSelect (i, SELECT_BY_POS , MODE_TRADES );
       if ( OrderSymbol ()== Symbol () && ( OrderMagicNumber ()==MagicNumber) && ( OrderType ()== OP_SELLSTOP ))
        {
         OrderDelete ( OrderTicket ());
         if (WriteLog)Write( "in function DeleteSellStopOrderDelete Executed" );
        }

     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Write( string str)
  {
   int handle;

   handle= FileOpen (filename, FILE_READ | FILE_WRITE | FILE_CSV , "/t" );
   FileSeek (handle, 0 , SEEK_END );
   FileWrite(handle,str+ " Time " + TimeToStr ( CurTime (), TIME_DATE | TIME_SECONDS ));
   FileClose (handle);
  }
//+------------------------------------------------------------------+


Ich habe ein paar Bits und Teile des Codes hinzugefügt, um es für den Nachrichtenhandel und die manuelle Eingabe geeignet zu machen. Es wird wahrscheinlich Ihren Zweck erfüllen.

Dieser EA war ursprünglich dazu gedacht, die Nachrichten zu handeln, also geben Sie den Nachrichtentag des Monats, Stunde und Minute, die Gewinnmitnahme in Pips, Ablauf in Minuten ein – wie viele Minuten nach den Nachrichten, um die ausstehenden Aufträge zu schließen, wenn die Bewegung nicht stattgefunden hat , BEPips – wenn eine Order ausgelöst wird und verschwendet wird, um die Gewinnschwelle zu erreichen, nach wie vielen Pips Gewinn. Bei If Trailing Stop = 0 erfolgt kein Trailing. Wenn Sie das Trailing festlegen, legen Sie die Anzahl der Pips fest, die vom Preis ferngehalten werden sollen, wenn Sie im Gewinn sind.

Für den manuellen Handel können Sie DayOfNews auf Null belassen, damit EA jeden Tag zur angegebenen Stunde und Minute handelt, oder Sie können den Tag jeden Tag manuell festlegen, wenn Sie handeln.

Außerdem müssen Sie StopLoss auf die gewünschte Anzahl von Pips (nicht Punkte) einstellen.

Stellen Sie die SteDistance auf einen beliebigen Abstand vom Preis zum angegebenen Zeitpunkt ein, zu dem Sie die Pending Orders haben möchten (30 Pips, glaube ich, dass Sie gesagt haben).

Legen Sie Ablauf in Minuten fest, wie viele Minuten die Bestellungen aktiv sein sollen, bevor EA sie löscht, wenn sie nicht ausgeführt werden.

Wie auch immer, schau dir den Code an und wenn du Fragen hast, poste sie hier oder schicke mir eine PN.

 
diamstar:
Ich danke Ihnen. Ich werde etwas schreiben, nachdem ich das Buch beendet habe, egal wie schlecht es ist.


Das ist die richtige Einstellung :)

Wenn Sie es versuchen, werden Sie Menschen finden, die Ihnen helfen werden.

 
diamstar:
Vielen Dank! Ich werde etwas schreiben, nachdem ich das Buch beendet habe, egal wie schlecht.


diamstar, Lernen macht Spaß, wenn man die richtige Hilfe bekommt. Fallen Sie nicht darauf herein und glauben Sie nicht, dass es sich nicht lohnt, wenn es anfangs wie Altchinesisch aussieht.

Lassen Sie sich auch nicht von denen entmutigen, die nicht wirklich helfen wollen. Es gibt viel Hilfe, man muss sie nur finden.

Hier ist ein Ratschlag für Sie, wenn Sie lernen wollen:

1. halten Sie Kontakt zu Menschen, die bereit sind, ihr Wissen, ihre Ressourcen, ihren Code usw. zu teilen. Du wirst sie brauchen.

2. Lesen Sie die Dokumentation und stellen Sie Fragen, damit Sie gut verstehen, was Sie lesen müssen. Sie müssen nicht alles auswendig lernen, Sie müssen nur wissen, was es gibt und wo Sie es finden können.

3. überanstrengen Sie sich nicht, wenn Sie versuchen, jedes Stückchen Code selbst zu schreiben. Das ist, als würde man das Rad neu erfinden.

4. besorgen Sie sich alle kostenlosen EAs, die Sie herunterladen können, und gehen Sie den Code durch. Verstehen Sie, wie er strukturiert ist, verstehen Sie, was jede Funktion tut und studieren Sie dann, wie sie es tut.

5. Sie können den Code in jedem Texteditor oder als Skript in MetaEditor kopieren und unter einem aussagekräftigen Namen für die Zukunft speichern oder sich einfach Notizen machen, was Sie in welchem EA mögen, damit Sie es finden, wenn Sie es brauchen.

Ich hoffe es hilft.

Viel Glück!

 
thrdel:


Hier ist etwas, das Ihnen den Einstieg erleichtern könnte.

Und was die Sache mit dem alten Chinesisch angeht: Wenn Sie nicht bereits Chinesisch sprechen, bleiben Sie bei mql. Es ist einfacher, Sie bekommen mehr Hilfe und wenn Sie jemals eine glänzende Idee haben, wird mql Ihnen helfen, eine Menge Geld zu verdienen. Außerdem macht es Spaß.

Also los geht's:


Ich habe ein paar Codestücke hinzugefügt, um es für den Nachrichtenhandel und die manuelle Eingabe geeignet zu machen. Es wird wahrscheinlich für Ihren Zweck geeignet sein.

Dieser EA wurde ursprünglich für den Handel mit den Nachrichten gedacht, so dass Sie die Eingabe der Nachrichten Tag des Monats, Stunde und Minute, Take-Profit in Pips, Expiration in Minute - wie viele Minuten nach der Nachricht, um die ausstehenden Aufträge zu schließen, wenn die Bewegung nicht geschehen, BEPips - wenn eine Bestellung ausgelöst wird und verschwendet, um zu bewegen, um zu brechen, nach wie viele Pips in Gewinn. Wenn der Trailing-Stop = 0 ist, gibt es kein Trailing. Wenn Sie den Trailing-Stop setzen, geben Sie die Anzahl der Pips an, die Sie vom Preis fernhalten wollen, wenn Sie im Gewinn sind.

Für den manuellen Handel können Sie DayOfNews auf Null belassen, so dass EA jeden Tag zur angegebenen Stunde und Minute handelt, oder Sie können den Tag jeden Tag manuell festlegen, wenn Sie handeln.

Außerdem müssen Sie StopLoss auf die von Ihnen gewünschte Anzahl von Pips (nicht Punkten) einstellen.

Stellen Sie SteDistance auf den Abstand zum Preis zum angegebenen Zeitpunkt ein, den Sie für die Pending Orders benötigen (30 Pips, wie Sie sagten).

Setzen Sie Expiration in minutes auf die Anzahl der Minuten, die die Orders aktiv sein sollen, bevor EA sie löscht, wenn sie nicht ausgeführt werden.

Wie auch immer, schauen Sie sich den Code an, und wenn Sie Fragen haben, posten Sie sie hier oder schreiben Sie mir.


Ich denke, dass der Auftraggeber ein unerfahrener Programmierer ist. Ich bezweifle, dass er/sie Ihren Code verstehen wird.

Wären Sie in der Lage gewesen, Ihren Code zu verstehen, als Sie anfingen zu lernen?

 
GumRai:


Ich denke, dass der OP ein Programmieranfänger ist. Ich bezweifle, dass er/sie Ihren Code verstehen wird.

Wären Sie in der Lage gewesen, Ihren Code zu verstehen, als Sie anfingen zu lernen?

Ich bin wirklich dankbar. Ich werde den Code ausprobieren und noch das Buch lesen, damit ich alles verstehen kann. Ich werde Sie auf dem Laufenden halten, wenn ich auf ein Problem stoße. Danke
 
GumRai:


Ich denke, dass der OP ein Programmieranfänger ist. Ich bezweifle, dass er/sie Ihren Code verstehen wird.

Wären Sie in der Lage gewesen, Ihren Code zu verstehen, als Sie anfingen zu lernen?


Nun GumRay, der Code ist da, die Dokumentation für mql ist verfügbar, der Code hat einige Erklärungen und wir sind hier um zu helfen. Wie ich schon sagte: "Wenn Sie Fragen haben, posten Sie sie hier oder schreiben Sie mir eine E-Mail".

Das bedeutet nicht, dass ich alle Antworten habe, sondern nur, dass ich bereit bin zu helfen, wenn diamstar bereit ist zu lernen.

"Ich bezweifle, dass er/sie deinen Code verstehen wird." im Moment oder nicht ganz. Auch der Code ist vielleicht nicht 100%ig das, wonach er/sie sucht (ich habe mein Bestes gegeben, angesichts der verfügbaren Informationen), aber es ist ein guter Anfang.

Sie wissen, wie viel einfacher es ist, mit praktischen Beispielen zu lernen, nicht wahr?

Ich bin mir bewusst, dass dieser EA für einen Neuling sehr viele Informationen enthält und viele Fragen aufwirft, aber dafür sind wir ja hier, nicht wahr?

Sicherlich war ich nicht in der Lage, all das zu verstehen, als ich lernte (ich lerne immer noch), zumindest nicht alles beim ersten Mal, aber diamstar hat es geschafft, das richtige Forum zu finden, um um Hilfe zu bitten und scheint entschlossen zu sein, zu lernen.

Lasst uns ihm/ihr alles Gute wünschen und helfen, wenn wir können.

 
thrdel:


Nun GumRay, der Code ist da, die Dokumentation für mql ist verfügbar, der Code hat einige Erklärungen und wir sind hier um zu helfen. Wie ich schon sagte: "Wenn Sie Fragen haben, posten Sie sie hier oder schreiben Sie mir eine E-Mail".

Das bedeutet nicht, dass ich alle Antworten habe, sondern nur, dass ich bereit bin zu helfen, wenn diamstar bereit ist zu lernen.

"Ich bezweifle, dass er/sie Ihren Code verstehen wird." für jetzt oder nicht ganz. Auch der Code ist vielleicht nicht 100%ig das, wonach er/sie sucht (ich habe mein Bestes versucht, angesichts der verfügbaren Informationen), aber es ist ein guter Anfang.

Sie wissen, wie viel einfacher es ist, mit praktischen Beispielen zu lernen, nicht wahr?

Ich bin mir bewusst, dass dieser EA für einen Neuling sehr viele Informationen enthält und viele Fragen aufwirft, aber dafür sind wir ja hier, nicht wahr?

Sicherlich war ich nicht in der Lage, all das zu verstehen, als ich lernte (ich lerne immer noch), zumindest nicht alles beim ersten Mal, aber diamstar hat es geschafft, das richtige Forum zu finden, um um Hilfe zu bitten und scheint entschlossen zu sein, zu lernen.

Lasst uns ihm/ihr alles Gute wünschen und helfen, wenn wir können.

Ich bin wirklich dankbar für jede Hilfe, die ich bekomme. Egal wie komplex der Code ist, es ist eine große Hilfe, die ich vielleicht nicht in Monaten gefunden hätte, und die Bücher, die ich lese, machen das Verständnis relativ einfach. Man lernt zu lesen und zu verstehen, bevor man etwas Sinnvolles schreibt.