Ein wenig Hilfe? - Seite 2

 
WHRoeder:
  1. Nein, natürlich nicht. RTFM. Du bekommst nur ein neues Häkchen, wenn du vom Start zurückkehrst.
  2. RTFM & Einschränkungen des Testers Sie können NICHT im Tester schlafen
  3. Was sind die Rückgabewerte der Funktion? Wie kann ich sie verwenden? - MQL4-Forum


Vielen Dank für Ihre Hilfe. Ich habe die while-Schleife und die Unterbrechung der Startfunktion bei jeder Auftragsausführung entfernt, die Funktion IsTesting (vorerst) entfernt und mein OrderSend scheint zu funktionieren.


Wenn ich es jetzt ausführe, egal wo ich eine Print()-Funktion habe, erscheint nichts im Journal (oder im Logbuch), der anfängliche Auftrag öffnet sich gut und dann nichts - auch wenn ich meinen Druckauftrag als nächste Zeile im Code habe?

 
j.w.msb:

Vielen Dank für Ihre Hilfe, ich habe die while-Schleife und die Unterbrechung der Startfunktion bei jeder Auftragsausführung entfernt, die Funktion IsTesting (vorerst) entfernt und mein OrderSend scheint zu funktionieren.


Wenn ich es jetzt ausführe, egal wo ich eine Print()-Funktion habe, erscheint nichts im Journal (oder im Logbuch), die anfängliche Bestellung öffnet sich gut und dann nichts mehr - auch wenn ich meine Druckbestellung als nächste Zeile im Code habe?


Wie sieht Ihr Code jetzt aus?
 
Tut mir leid, dass ich ein Alptraum bin! Ich habe versucht, Informationen über Fehler im Strategietester zu finden, aber Google ist nicht hilfreich :s
//+------------------------------------------------------------------+
//|                                                   SMA scripy.mq4 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
extern int z=1234;
int total;
//---
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int init()
  {
//---- 
   int i;
   total=0;
   if (OrdersTotal()!=0)
      {
      for (i=OrdersTotal()-1; i>=0; i--)                                                     
         {
         if (OrderSelect(i,SELECT_BY_POS))
            {
            if ((OrderSymbol()==Symbol())&&(OrderMagicNumber()==z))
               {
               if ((OrderType()==OP_BUY)&&(iMA(Symbol(),0,6,0,MODE_SMA,PRICE_CLOSE,0)<iMA(Symbol(),0,21,0,MODE_SMA,PRICE_CLOSE,0)))
                  { 
                  OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),0,Green);                  
               }
               if ((OrderType()==OP_SELL)&&(iMA(Symbol(),0,6,0,MODE_SMA,PRICE_CLOSE,0)>iMA(Symbol(),0,21,0,MODE_SMA,PRICE_CLOSE,0)))
                  {
                  OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),0,Green);                  
               }
               else 
                  {
                  total++;                                                                 
               }
            }
         }
      }
   }
//----
   return;
}
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
//----
   return(0);
}
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int start()
   {
//----
   int i,L;
   if (AccountBalance()>50)                                                                                     
   {
//-----
double SMA6=iMA(Symbol(),0,6,0,MODE_SMA,PRICE_CLOSE,0);
double SMA21=iMA(Symbol(),0,21,0,MODE_SMA,PRICE_CLOSE,0);
double RSI70=iRSI(Symbol(),PERIOD_D1,14,PRICE_CLOSE,0)<70;
double RSI30=iRSI(Symbol(),PERIOD_D1,14,PRICE_CLOSE,0)>30;                                                                                                            
//----
   if (total==0)
      {
      if ((RSI70)&&(SMA6>SMA21))
         {                                                                                                                       
         OrderSend(Symbol(),OP_BUY,0.1,Ask,0,0,0,"",z,0,Red); 
         Print("WE ARE HERE");
         total+=1;                                                       
      }
      if ((RSI30)&&(SMA6<SMA21))
         {
         OrderSend(Symbol(),OP_SELL,0.1,Bid,0,0,0,"",z,0,Blue);
         total+=1;
      }  
   }
//---
   if (total!=0)
      {
      L=0;
      for (i=OrdersTotal()-1; i>=0; i--)                                                    
         {
         if (OrderSelect(i,SELECT_BY_POS))
            {
            if ((OrderSymbol()==Symbol())&&(OrderMagicNumber()==z))
               {
               if ((OrderType()==OP_BUY)&&(SMA6<SMA21))
                  { 
                  OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),0,Green);
                     total+=-1;
                     break;
               }
               if ((OrderType()==OP_SELL)&&(SMA6>SMA21))
                  {
                  OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),0,Green);                 
                     total+=-1;
                     break;
               }
               else 
                  {
                  L++;                                                                  
               }
            }
            total=L;
         }
      }
   }
//----
}
//----
return;
}
//-------------------------------------------
 

double, int, string, bool, datetime, color, ........ was muss ich verwenden? ....

//-----
double SMA6=iMA(Symbol(),0,6,0,MODE_SMA,PRICE_CLOSE,0);
Print("SMA6=  ",SMA6);
double SMA21=iMA(Symbol(),0,21,0,MODE_SMA,PRICE_CLOSE,0);
Print("SMA21=  ",SMA21);
double RSI70=iRSI(Symbol(),PERIOD_D1,14,PRICE_CLOSE,0)<70;
Print("RSI70=  ",RSI70);
double RSI30=iRSI(Symbol(),PERIOD_D1,14,PRICE_CLOSE,0)>30;
Print("RSI30=  ",RSI30);                                                                                                            
//----

Sind sie doppelt?

         OrderSend(Symbol(),OP_BUY,0.1,Ask,0,0,0,"",z,0,Red); 
         Print("WE ARE HERE");

SEEEEEE Was sind Funktionsrückgabewerte? Wie verwende ich sie? - MQL4-Forum

große Erklärung

Wenn eine Funktion einen int zurückgibt, wie z.B. OrderSend(), können wir Code wie diesen verwenden, um zu prüfen, ob die Funktion funktioniert hat und einen Fehler in den Protokollen zu melden, wenn sie nicht funktioniert hat....

int TicketNumber;

TicketNumber = OrderSend( . . . . . . . . );

**(*******************)
   {
   Print(******************);
   }
else
   {
   Print(************************);
   }

. Sehen Sie sich den Link an, den Sie von WHRoeder erhalten haben, und Sie finden das, was ich hier mit Sternen versteckt habe ......

Verwenden Sie es auch für die Überprüfung der Schließung der Trades

Machen Sie etwas ähnliches in Ihrem code.... auf diese Weise, wenn ordersend fehlschlägt, wissen Sie welche Art und woher der Fehler kommt

.

was passiert, wenn orderclose fehlschlägt.......?????

 

Sowohl RSI als auch MA sind Doppelwerte, also müssen die Variablen auch Doppelwerte sein, oder?

https://docs.mql4.com/indicators/iRSI && https://docs.mql4.com/indicators/iMA

Ich habe die Druckfehler codiert, aber es wird nichts in das Journal gedruckt, so dass ich nicht herausfinden kann, welche Fehler auftreten? Übersehe ich immer noch etwas Offensichtliches? Jetzt bin ich wieder dabei, einen Verkauf zu öffnen und dann nicht abschließen zu können...

//+------------------------------------------------------------------+
//|                                                   SMA scripy.mq4 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
extern int z=1234;
int total;
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int init()
  {
//---- 
   int i;
   total=0;
   if (OrdersTotal()!=0)
      {
      for (i=OrdersTotal()-1; i>=0; i--)                                                     
         {
         if (OrderSelect(i,SELECT_BY_POS))
            {
            if ((OrderSymbol()==Symbol())&&(OrderMagicNumber()==z))
               {
               if ((OrderType()==OP_BUY)&&(iMA(Symbol(),0,6,-3,MODE_SMA,PRICE_CLOSE,0)<iMA(Symbol(),0,21,0,MODE_SMA,PRICE_CLOSE,0)))
                  { 
                  OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),0,Green);                  
               }
               if ((OrderType()==OP_SELL)&&(iMA(Symbol(),0,6,-3,MODE_SMA,PRICE_CLOSE,0)>iMA(Symbol(),0,21,0,MODE_SMA,PRICE_CLOSE,0)))
                  {
                  OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),0,Green);                  
               }
               else 
                  {
                  total++;                                                                 
               }
            }
         }
      }
   }
//----
   return;
}
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int start()
   {
//----
   int ticket,i,L;
   bool x;
   if (AccountBalance()>50)                                                                                     
   {
//-----
double SMA6=iMA(Symbol(),0,6,-3,MODE_SMA,PRICE_CLOSE,0);
Print("SMA6 is ",SMA6);
double SMA21=iMA(Symbol(),0,21,0,MODE_SMA,PRICE_CLOSE,0);
Print("SMA21 is ",SMA21);
double RSI70=iRSI(Symbol(),PERIOD_D1,14,PRICE_CLOSE,0)<70;
Print("RSI70 is ",RSI70);
double RSI30=iRSI(Symbol(),PERIOD_D1,14,PRICE_CLOSE,0)>30; 
Print("RSI30 is ",RSI30);                                                                                                           
//----
   if (total==0)
      {
      if ((RSI70)&&(SMA6>SMA21))
         {                                                                                                                       
         ticket=OrderSend(Symbol(),OP_BUY,v(AccountBalance()),Ask,0,0,0,"",z,0,Red); 
         total+=1;                                                       
         if (ticket<0)
            {
            Print("OrderSend Failed", GetLastError());
         }
      }
      if ((RSI30)&&(SMA6<SMA21))
         {
         ticket=OrderSend(Symbol(),OP_SELL,v(AccountBalance()),Bid,0,0,0,"",z,0,Blue);
         total+=1;
         if (ticket<0)
            {
            Print("OrderSend Failed", GetLastError());
         }
      }  
   }
//---
   if (total!=0)
      {
      L=0;
      for (i=OrdersTotal()-1; i>=0; i--)                                                    
         {
         if (OrderSelect(i,SELECT_BY_POS))
            {
            if ((OrderSymbol()==Symbol())&&(OrderMagicNumber()==z))
               {
               if ((OrderType()==OP_BUY)&&(SMA6<SMA21))
                  { 
                  x=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),0,Green);
                     if (x==false)
                        {
                        Print("Error is ", GetLastError());
                     }
                     else total+=-1;
                     break;
               }
               if ((OrderType()==OP_SELL)&&(SMA6>SMA21))
                  {
                  x=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),0,Green);   
                     if (x==false)
                        {
                        Print("Error is ", GetLastError());
                     }
                     else 
                        {
                        total+=-1;
                     }
                     break;
               }
               else 
                  {
                  L++;                                                                  
               }
            }
            total=L;
         }
      }
   }
//----
}
//----
return;
}
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
//----
   return(0);
}
//-------------------------------------------------------------------+
double v(double k)
{
   double v=((k*0.015)/1000);
   if (v<MarketInfo(Symbol(),MODE_MINLOT))
      {
      v=MarketInfo(Symbol(),MODE_MINLOT);
      return(v);
   }
   else
      {
      return(v);
   }
}
//-------------------------------------------------------------------+
 

duuuhhhh iRSI ist doppelt, aber der Vergleich Ausgaben 1 - so ersetzte ich RSI30 und RSI70 mit nur RSI und hatte einen Vergleich und alles funktioniert HOORAY! AUSSER wenn ich den SMA6 auf shift ändere gibt er immer SMA6=0 aus? warum?

Vielen Dank an alle für die Hilfe! Ich hoffe, dass ich beim nächsten Mal nicht mehr so viel ärgern muss!

 
j.w.msb:

Sowohl RSI als auch MA sind Doppelwerte, also müssen die Variablen auch Doppelwerte sein, oder?

https://docs.mql4.com/indicators/iRSI && https://docs.mql4.com/indicators/iMA

Ich habe die Druckfehler kodiert, aber es wird nichts in das Journal gedruckt, so dass ich nicht herausfinden kann, welche Fehler aufgetreten sind. Übersehe ich immer noch etwas Offensichtliches? Jetzt bin ich wieder zu öffnen, einen Verkauf und dann nicht in der Lage zu schließen...

Legen Sie den EA auf einen Chart eines Demokontos

Schauen Sie nicht nur im Terminal Journal nach ...
schauen Sie auch in Terminal Experts .....

was sehen Sie dort gedruckt

 
deVries:

platzieren Sie den EA auf einem Chart eines Demokontos

Schauen Sie nicht nur im Terminal Journal ...
schauen Sie auch im Terminal Experten .....

was sehen Sie dort gedruckt


Drucken und Ausführen jetzt :) danke für Ihre Hilfe - ich war falsch definieren iRSI<70 als ein Doppel (da es ein Vergleich war) und war Probleme verursachen. Es druckt jetzt und funktioniert wie erwartet, außer, wenn ich die SMA-Verschiebung ändern seine Drucke SMA=0?
 
j.w.msb:

Drucken und Ausführen jetzt :) danke für Ihre Hilfe - ich war falsch definieren iRSI<70 als ein Doppel (da es ein Vergleich war) und war Probleme verursachen. Es druckt jetzt und funktioniert wie erwartet, außer, wenn ich die SMA-Verschiebung ändern seine Drucke SMA=0?

Legen Sie eine SMA mit den gleichen Einstellungen in den Chart Ihres EA und sehen Sie, was Sie getan haben ...
 
   if (total==0)
      {
      if ((RSI70)&&(SMA6>SMA21))
         {                                                                                                                       
         ticket=OrderSend(Symbol(),OP_BUY,v(AccountBalance()),Ask,0,0,0,"",z,0,Red); 
         total+=1;                                                       
         if (ticket<0)
            {
            Print("OrderSend Failed", GetLastError());
         }
      }

Warum haben Sie insgesamt += 1;

In diesem Moment weiß ich nicht, ob ordersend erfolgreich war

und wenn es fehlschlägt, sehe ich nicht, welcher Ordertyp versucht wurde zu öffnen, es könnte auch ein Verkaufshandel sein, den Sie zu öffnen versucht haben

Grund der Beschwerde: