[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 113

 
mukata >> :

Und was ist mit der Frage?

Es ist schneller, in einer Variablen zu speichern, als jedes Mal eine Funktion aufzurufen.

Übrigens ist es einfach, das im Tester zu überprüfen.

 
StatBars >> :
Wo hast du deinen Code versteckt? Ich wollte es nur optimieren, und es ist schon...


//+------------------------------------------------------------------+
//| Copyright © 2009, ::: -- SAMER -- ::: |
//| E-MAIL: camep@inbox.ru icq: 422372555 |
//+------------------------------------------------------------------+

extern double TakeProfit = 500;
extern double Lots = 0.1;
extern double Stoploss = 30;
extern double TrailingStop = 30;
extern int iWPRperiod1 = 50;
extern int iWPRperiod2 = 60;
extern int iWPRperiod3 = 60;
extern int iWPRperiod4 = 50;
extern int slowing = 3;
extern int period = 3;
extern int period2 = 5;

int start()
{
double a;
int b;
int total;
int ticket;
int cnt;
int iWPRperiod1;
int iWPRperiod2;
int iWPRperiod3;
int iWPRperiod4;
int slowing;
int period;
int period2;

if(Bars<100)
{
Print("bars less than 100");
return(0);
}

if(TakeProfit<10)
{
Print("TakeProfit less than 10");
return(0);
}

total=OrdersTotal();
if(total<1)
{

if(AccountFreeMargin()<(1000*Lots))
{
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}

if((iWPR(NULL,0,iWPRperiod1,0)>iWPR(NULL,0, iWPRperiod2,0)) < iStochastic(NULL,0,period2,period,slowing,0,0,0,0) )

{
ticket = OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-Stoploss*Point, Ask+TakeProfit*Point,"comment",16384,0,Green);

if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
{
else Print("Error opening BUY order : ",GetLastError());
return(0);
}

if((iWPR(NULL,0,iWPRperiod1,0)>iWPR(NULL,0, iWPRperiod2,0)) > iStochastic(NULL,0,period2,period,slowing,0,0,0,0) )
{
ticket = OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+Stoploss*Point,Bid-TakeProfit*Point,"macd sample",16384,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
}
else Print("Error opening SELL order : ",GetLastError());
return(0);
}
return(0);
}

for(cnt=0; cnt < total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL &&
OrderSymbol()==Symbol())

{
if(OrderType()==OP_BUY)
{
if(iWPR(NULL,0,iWPRperiod1,0)>iWPR(NULL,0, iWPRperiod2,0))
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet)
return(0);
}

if(TrailingStop>0)
{
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
return(0);
}
}
}
}
else
{
if(iWPR(NULL,0,iWPRperiod3,0)<iWPR(NULL,0, iWPRperiod4,0))
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);
return(0);
}
if(TrailingStop>0)
{
if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
return(0);
}
}
}
}
}
}
return(0);
}

 
TheXpert >> :

Es ist schneller, in einer Variablen zu speichern, als jedes Mal eine Funktion aufzurufen.

Übrigens lässt sich das im Prüfgerät leicht überprüfen.

Danke, das habe ich mir auch gedacht.

Aber wie viel Code ich in diesem Forum gelesen habe - niemand macht das, jeder ruft die Funktion jedes Mal auf. Ich befinde mich in der gleichen Situation.

Das mit der Funktion verstehe ich, aber was ist mit dem Array?

P.S. kürzlich hier...

 
//+------------------------------------------------------------------+
//| Copyright © 2009, ::: -- SAMER -- ::: |
//| E-MAIL: camep@inbox.ru icq: 422372555 |
//+------------------------------------------------------------------+

extern double TakeProfit = 500;
extern double Lots = 0.1;
extern double Stoploss = 30;
extern double TrailingStop = 30;
extern int iWPRperiod1 = 50;
extern int iWPRperiod2 = 60;
extern int iWPRperiod3 = 60;
extern int iWPRperiod4 = 50;
extern int slowing = 3;
extern int period = 3;
extern int period2 = 5;

int start()
{
   double a;
   int b;
   int total;
   int ticket;
   int cnt;
   int iWPRperiod1;
   int iWPRperiod2;
   int iWPRperiod3;
   int iWPRperiod4;
   int slowing;
   int period;
   int period2;

   if(Bars<100)
   {
      Print("bars less than 100");
      return(0);
   }

   if( TakeProfit<10)
   {
      Print("TakeProfit less than 10");
      return(0);
   }

   total=OrdersTotal();
   if( total<1)
   {

      if(AccountFreeMargin()<(1000* Lots))
      {
         Print("We have no money. Free Margin = ", AccountFreeMargin());
         return(0);
      }

      if((iWPR(NULL,0, iWPRperiod1,0)>iWPR(NULL,0, iWPRperiod2,0)) < iStochastic(NULL,0, period2, period, slowing,0,0,0,0) )
      {
         ticket = OrderSend(Symbol(),OP_BUY, Lots,Ask,3,Ask- Stoploss*Point, Ask+ TakeProfit*Point,"comment",16384,0,Green);

         if( ticket>0)
         {
            if(OrderSelect( ticket, SELECT_BY_TICKET, MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
            else Print("Error opening BUY order : ",GetLastError());
            return(0);
         }
      }
      if((iWPR(NULL,0, iWPRperiod1,0)>iWPR(NULL,0, iWPRperiod2,0)) > iStochastic(NULL,0, period2, period, slowing,0,0,0,0) )
      {
         ticket = OrderSend(Symbol(),OP_SELL, Lots,Bid,3,Bid+ Stoploss*Point,Bid- TakeProfit*Point,"macd sample",16384,0,Red);
         if( ticket>0 && OrderSelect( ticket, SELECT_BY_TICKET, MODE_TRADES))Print("SELL order opened : ",OrderOpenPrice());
         else 
         {
            Print("Error opening SELL order : ",GetLastError());
            return(0);
         }
      }
      return(0);
   }  

   for( cnt=0; cnt < total; cnt++)
   {
      OrderSelect( cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELL && OrderSymbol()==Symbol()) 
      {
         if(OrderType()==OP_BUY)
         {
            if(iWPR(NULL,0, iWPRperiod1,0)>iWPR(NULL,0, iWPRperiod2,0))
            {
               OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
               return(0); 
            }
            if( TrailingStop>0)
            {
               if(Bid-OrderOpenPrice()>Point* TrailingStop)
               {
                  if(OrderStopLoss()<Bid-Point* TrailingStop)
                  {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point* TrailingStop,OrderTakeProfit(),0,Green);
                     return(0);
                  }
               }
            }
         }
         else
         {
            if(iWPR(NULL,0, iWPRperiod3,0)<iWPR(NULL,0, iWPRperiod4,0))
            {
               OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);
               return(0);
            }
            if( TrailingStop>0)
            {
               if((OrderOpenPrice()-Ask)>(Point* TrailingStop))
               {
                  if((OrderStopLoss()>(Ask+Point* TrailingStop)) || (OrderStopLoss()==0))
                  {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point* TrailingStop,OrderTakeProfit(),0,Red);
                     return(0);
                  }
               }
            }
         }
      }
   }
return(0);
}

Die einfachsten Syntaxfehler habe ich behoben, es bleiben die "einfachen" - die logischen. :)

 
if((iWPR(NULL,0, iWPRperiod1,0)>iWPR(NULL,0, iWPRperiod2,0)) < iStochastic(NULL,0, period2, period, slowing,0,0,0,0) )
if((iWPR(NULL,0, iWPRperiod1,0)>iWPR(NULL,0, iWPRperiod2,0)) > iStochastic(NULL,0, period2, period, slowing,0,0,0,0) )
Es ist ein seltsames Design.
 
StatBars >> :

wie man das alles zu mir kopiert ^^

wenn sie in ein Programm kopiert werden, ist es eine einzige Zeile.

 
FOREXMASTER писал(а) >>

wie man das alles zu mir kopiert ^^

Wenn man sie in ein Programm kopiert, wird alles zu einer Zeile.

Dateien:
 
StatBars >> :

>> Dankeschön!)

 
TheXpert >> :

Es ist schneller, in einer Variablen zu speichern, als jedes Mal eine Funktion aufzurufen.

Übrigens ist es einfach, das im Prüfgerät zu überprüfen.

Ich verstehe die Funktion, aber was ist mit dem Array?

Ich muss auch viel umschreiben, um es im Testprogramm laufen zu lassen.

Es ist schneller, eine Variable zu speichern, als jedes Mal eine Funktion aufzurufen, und ist es genauso schnell, ein Array-Element zu lesen wie eine einfache Variable?

Oder länger - handelt es sich um ein Array, bei dem Sie den Index nachschlagen müssen, oder ist es dasselbe wie bei einer Variablen?

>> Ich verstehe diese Feinheiten nicht ganz.

 
mukata >> :

Die Funktion ist klar, aber was ist mit dem Array?

Ich verstehe diese Dinge nicht wirklich.

Es ist besser, dies anhand eines Codebeispiels zu zeigen.


Bei einem Array gibt es Mehrdeutigkeiten.


Ich bin der Meinung, dass ein EA keine Arrays enthalten sollte, die sich auf die Dateninterpretation beziehen. Sie gehören in Indikatoren.

Viele Menschen hier denken anders. Und sie versuchen, alles in den Expert Advisor zu packen.