[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 113

 
mukata >> :

e la domanda?

È più veloce memorizzare in una variabile che chiamare una funzione ogni volta.

A proposito, è facile da controllare nel tester.

 
StatBars >> :
Dove hai nascosto il tuo codice? Volevo solo modificarlo, ed è già...


//+------------------------------------------------------------------+
//| 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 >> :

È più veloce memorizzare in una variabile che chiamare una funzione ogni volta.

A proposito, può essere facilmente controllato nel tester.

Grazie, è quello che ho pensato anch'io.

Ma quanto codice ho letto su questo forum - nessuno lo fa, tutti chiamano la funzione ogni volta. Sono nello stesso posto.

Ho capito con la funzione, ma che dire dell'array?

P.S. recentemente qui...

 
//+------------------------------------------------------------------+
//| 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);
}

Gli errori di sintassi più facili che ho corretto, ti rimangono quelli "facili" - quelli logici. :)

 
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) )
È un design strano.
 
StatBars >> :

come copiare tutto a me ^^

quando viene copiato in un programma, è tutta una linea.

 
FOREXMASTER писал(а) >>

come copiare tutto a me ^^

copiandolo in un programma lo rende tutto di una riga.

File:
 
StatBars >> :

>> grazie!)

 
TheXpert >> :

È più veloce memorizzare in una variabile che chiamare una funzione ogni volta.

A proposito, è facile da controllare nel tester.

Capisco la funzione, ma che dire dell'array?

Devo riscrivere molto per farlo funzionare anche nel tester.

È più veloce memorizzare una variabile che chiamare una funzione ogni volta, ed è altrettanto veloce leggere un elemento dell'array come una semplice variabile?

O più a lungo - è un array in cui è necessario cercare l'indice, o lo stesso che per una variabile?

>> Non capisco bene queste sottigliezze.

 
mukata >> :

La funzione è chiara, ma che dire dell'array?

Non capisco davvero queste cose.

È meglio mostrare con un esempio di codice.


Ci sono ambiguità con un array.


Credo che un EA non dovrebbe contenere array relativi all'interpretazione dei dati. Appartengono agli indicatori.

Molte persone qui la pensano diversamente. E cercano di stipare tutto nell'Expert Advisor.

Motivazione: