Hilfe für einen Neuling - Tag- und Zeitfunktionen - Seite 3

 

Entschuldigung abstract_mind


Das Format des Codes zeigt es hier nicht richtig an, wie Sie es oben beschrieben haben.

 
EagleEye:

Wie sollte der Code also aussehen?

//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()

// oneliner start
bool sunday_cond = (TimeDayOfWeek(TimeCurrent())==0) && (Hour()>=23);
bool monday_cond = (TimeDayOfWeek(TimeCurrent())==1) && (Hour()<=15);
bool mytradeallowed = false;
if   (
       (OrdersTotal()==0)
        &&
       ( sunday_cond || monday_cond )
     )
      {
       mytradeallowed = true;  
      }


if (Bars<100 || IsTradeAllowed()==false || mytradeallowed==false){ return;}
// oneliner end

if( CalculateCurrentOrders(Symbol())==0) CheckForOpen();

versuchen Sie dies. Ich hoffe, ich haevnt etwas spät in der Nacht verpasst.

ich weiß, dass die Bedingungen in eine Zeile gepackt werden können, aber ich wollte, dass die anderen Mitglieder auch ein paar Beiträge schreiben LOL

in der Tat ist es auf diese Weise (mehr separate Zeilen) verständlicher, zumindest für einen Neuling.

// oneliner start
if (
     (Bars<100 || IsTradeAllowed()==false)
     || 
     (
      ( 
       (TimeDayOfWeek(TimeCurrent())==0) && (Hour()>=23)
       ||
       (TimeDayOfWeek(TimeCurrent())==1) && (Hour()<=15)
      )
      (OrdersTotal()==0)  
     )
    ) 
   { return;}
// oneliner end

//now in one line, i coulndt resist LOL
if ((Bars<100 || IsTradeAllowed()==false)||(((TimeDayOfWeek(TimeCurrent())==0) && (Hour()>=23)|| (TimeDayOfWeek(TimeCurrent())==1) && (Hour()<=15))(OrdersTotal()==0))){ return;}
 
meikel:

Versuchen Sie dies. Ich hoffe, ich haevnt etwas spät in der Nacht verpasst.

Ich weiß, dass die Bedingungen in eine Zeile gepackt werden können, aber ich wollte die anderen Mitglieder auch ein paar Beiträge machen lassen LOL

Danke meikel.


Ich bekomme immer noch die Fehler:


'bool' - Semikolon erwartet Z:\ForexTrading\GabEA_From Mike\GAPeaOnlySunday.mq4 (86, 1)
'(' - Initialisierung erwartet Z:\ForexTrading\GabEA_From Mike\GAPeaOnlySunday.mq4 (86, 20)
'TimeDayOfWeek' - Komma oder Semikolon erwartet Z:\ForexTrading\GabEA_From Mike\GAPeaOnlySunday.mq4 (86, 21)
')' - unsymmetrische rechte Klammer Z:\ForexTrading\GabEA_From Mike\GAPeaOnlySunday.mq4 (86, 52)
')' - unsymmetrische rechte Klammer Z:\ForexTrading\GabEA_From Mike\GAPeaOnlySunday.mq4 (86, 68)
'(' - Initialisierung erwartet Z:\ForexTrading\GabEA_From Mike\GAPeaOnlySunday.mq4 (87, 20)
'TimeDayOfWeek' - Komma oder Semikolon erwartet Z:\ForexTrading\GabEA_From Mike\GAPeaOnlySunday.mq4 (87, 21)
')' - unsymmetrische rechte Klammer Z:\ForexTrading\GabEA_From Mike\GAPeaOnlySunday.mq4 (87, 48)
')' - unsymmetrische rechte Klammer Z:\ForexTrading\GabEA_From Mike\GAPeaOnlySunday.mq4 (87, 52)
und dann geht es weiter mit der ')' - unausgewogenen rechten Klammer

 
Ohne den vollständigen Code gibt es für uns nichts mehr zu tun.
 
meikel:
Ohne den vollständigen Code gibt es für uns nichts mehr zu tun.

Der vollständige Code ist hier zu finden:



//+------------------------------------------------------------------+
//|                                                        GAPea.mq4 |
//+------------------------------------------------------------------+

extern double    Lots = 1;
extern int       iTakeProfit=10000;
extern int       iStopLoss=1000;
extern int       iTrailingStop=100;
extern int       min_gapsize=20;
extern int       MagicNumber=13;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
{
//----
   
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }  

//+------------------------------------------------------------------+
//| Calculate open positions                                         |
//+------------------------------------------------------------------+
int CalculateCurrentOrders(string symbol)
  {
   int buys=0, sells=0;

   for(int i=0; i<OrdersTotal(); i++)
     {
      if(OrderSelect( i, SELECT_BY_POS, MODE_TRADES)==false) break;
      if(OrderSymbol()==Symbol())
        {
         if(OrderType()==OP_BUY)  buys++;
         if(OrderType()==OP_SELL) sells++;
        }
     }

   if( buys>0) return( buys);
   else       return(- sells);
  } 


//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void CheckForOpen()
  {

   double current_openprice=iOpen(Symbol(), PERIOD_M15, 0);
   double previous_highprice=iHigh(Symbol(), PERIOD_M15, 1);
   double previous_lowprice=iLow(Symbol(), PERIOD_M15, 1);
   double point_gap=MarketInfo(Symbol(), MODE_POINT);
   int spread_gap=MarketInfo(Symbol(), MODE_SPREAD);
   datetime current_time=iTime(Symbol(), PERIOD_M15, 0);
   

   if( current_openprice > previous_highprice + ( min_gapsize + spread_gap)* point_gap )
      {
      OrderSend(Symbol(),OP_SELL, Lots,Bid,3,Bid+ iStopLoss*Point,Bid- iTakeProfit*Point,"Sell#", MagicNumber,0,Red);
      }

    if( current_openprice < previous_lowprice - ( min_gapsize + spread_gap)* point_gap )
      {
      OrderSend(Symbol(),OP_BUY, Lots,Ask,3,Ask- iStopLoss*Point,Ask+ iTakeProfit*Point,"Buy#", MagicNumber,0,Green);
      }
   return;
}

Continues below (text to long)
 
EagleEye:

Der vollständige Code ist hier zu finden:



Der Rest des Codes:


//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()

bool sunday_cond = (TimeDayOfWeek(TimeCurrent())==0) && (Hour()>=23);
bool monday_cond = (TimeDayOfWeek(TimeCurrent())==1) && (Hour()<=15);
bool mytradeallowed = false;
if (
     (Bars<100 || IsTradeAllowed()==false)
     || 
     (
      ( 
       (TimeDayOfWeek(TimeCurrent())==0) && (Hour()>=23)
       ||
       (TimeDayOfWeek(TimeCurrent())==1) && (Hour()<=15)
      )
      (OrdersTotal()==0)  
     )
    ) 
   { return;}

   if( CalculateCurrentOrders(Symbol())==0) CheckForOpen();
   
   if ( CalculateCurrentOrders(Symbol()) != 0)
   {
      if(OrderType()==OP_BUY)
      {
         if(Bid-OrderOpenPrice()>Point* iTrailingStop)
         {
            if(OrderStopLoss()<Bid-Point* iTrailingStop)
            {
               OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point* iTrailingStop,OrderTakeProfit(),0,Blue);
            }
         }
      }
      if(OrderType()==OP_SELL)
      {
         if(OrderOpenPrice()-Ask > Point* iTrailingStop)
         {
            if(OrderStopLoss() > Ask+Point* iTrailingStop)
            {
               OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point* iTrailingStop,OrderTakeProfit(),0,Blue);
            }
         }
      }
   }

//----
    Comment("GAPea v1\n",
            ".................................\n",
            "FX Acc Server:",AccountServer(),"\n",
            "Date: ",Month(),"-",Day(),"-",Year()," Server Time: ",Hour(),":",Minute(),":",Seconds(),"\n",
            "Minimum Lot Sizing: ",MarketInfo(Symbol(),MODE_MINLOT),"\n",
            "Account Balance:  $",AccountBalance(),"\n",
            "Symbol: ", Symbol(),"\n",
            "Price:  ",NormalizeDouble(Bid,4),"\n",
            "Pip Spread:  ",MarketInfo("EURUSD",MODE_SPREAD),"\n",
            "...............................","\n",
            "Lots=" + Lots,"\n",
            "TakeProfit=" + iTakeProfit,"\n",
            "StopLoss=" + iStopLoss,"\n",
            "TrailingStop=" + iTrailingStop,"\n",
            "MagicNumber=" + MagicNumber,"\n");
//----
   return(0);
  }
//+------------------------------------------------------------------+
 

gelöst

erster Fehler, fehlende Klammer

int start()
{ // <- this one, i have overseen this in the first posts
bool


zweiter, fehlendes && (mein Code LOL

if (
     (Bars<100 || IsTradeAllowed()==false)
     || 
     (
      ( 
       (TimeDayOfWeek(TimeCurrent())==0) && (Hour()>=23)
       ||
       (TimeDayOfWeek(TimeCurrent())==1) && (Hour()<=15)
      )
      && /// <- i have forgot this
      (OrdersTotal()==0)  
     )
    ) 
   { return;}

keine Fehler, keine Warnung

ich mache das nicht oft, aber der Fernseher ist heute schrecklich und so habe ich diesen Thread und das Rätsel zur Unterhaltung genutzt

Dateien:
debug.mq4  5 kb
 
meikel:

gelöst

erster Fehler, fehlende Klammer


zweiter, fehlendes && (mein Code LOL

keine Fehler, keine Warnung



meikel..... Es funktioniert!!! Ich meine "keine Fehler" :)


Jetzt muss ich es Sonntag testen, um zu sehen, ob es funktioniert.


Vielen Dank für eure Hilfe.


Ich halte Sie nach Sonntag auf dem Laufenden.

 
EagleEye:

meikel..... Es funktioniert!!! Ich meine "keine Fehler" :)


Jetzt muss ich es Sonntag testen, um zu sehen, ob es funktioniert.


Danke für deine Hilfe.


Ich halte dich nach Sonntag auf dem Laufenden.

Sie können es jetzt oder morgen testen, ändern Sie einfach die Tages- und Zeitwerte ...

 
meikel:

Sie können es jetzt oder morgen testen, ändern Sie einfach den Tag und die Zeitwerte ...

Das einzige, was ich im Moment testen kann, ist, dass der EA nicht während der Woche handelt, wie er es früher tat b 4.


Und dann warten Sie auf den Sonntag Lücke und sehen Sie es Handel, wie es tun sollte.