Aiuto per la codifica - pagina 705

 


double BU1=iMA(Symbol(),0,ShortSma,0,MODE_SMA,PRICE_CLOSE,i+1);

double BL1=iMA(Symbol(),0,LongSma,0,MODE_SMA,PRICE_CLOSE,i);

stringa SBUY="false";stringa SSEL="false";

if(BU1<Close[1]&&BL1<Close[1])SBUY="true";if(BL1>Close[1]&&BU1>Close[1])SSEL="true";

Ora funziona, qualcosa era sbagliato con Trade dopo TP.....

Grazie per il tuo aiuto Mladen.

 

ciao signor mladen

come potrebbe tradurre questa parola:

http://forexsystemsru.com/1075962-post327.html

Analisi dei cluster


per quanto riguarda


 

signor mladen:

potrebbe fare MTF di esso

migliore considerazione

 

Ciao cari codificatori,

Ho probabilmente una domanda semplice, ma mi sono bloccato al momento su:

Il mio EA apre e compra e vende ordini senza problemi, ma quando arriva

a SIGNAL_CLOSEBUY o SIGNAL_CLOSESELL non chiude gli ordini.

Qui uso un RSI_Filter come trigger per chiudere gli ordini di acquisto o vendita.

Ho copiato il mio codice, sarei molto felice se qualcuno potesse dare un'occhiata.

Grazie in anticipo!

#define SIGNAL_NONE      0
#define SIGNAL_BUY       1
#define SIGNAL_SELL      2
#define SIGNAL_CLOSEBUY  3
#define SIGNAL_CLOSESELL 4

extern int    MaxShortTrades   = 1;
extern int    MaxLongTrades    = 1;
int           Order            = SIGNAL_NONE;

// RSI Filter
double RSIfilter=iRSI(Symbol(),0,RSIPeriod,PRICE_CLOSE,BarShift);

// Trade Signal Indicator
double NLD1,NLD2;
      NLD1 = iCustom(NULL,0,"indicator",0,Length,0,0,1,0,0,0,1);
      NLD2 = iCustom(NULL,0,"indicator",0,Length,0,0,1,0,0,0,2);        

// Amount of long / short trades      
int longs  = 0;
int shorts = 0;
double j;
      
      for(j=OrdersTotal()-1;j>=0; j--)
        {
         if(OrderType()==OP_BUY)  longs++;  // Check # of long trades.
         if(OrderType()==OP_SELL) shorts++; // Check # of short trades
        }
                
// place orders
if(longs < MaxLongTrades && NLD1 > NLD2 && RSIfilter>55) Order  = SIGNAL_BUY;        
if(shorts < MaxShortTrades && NLD1 < NLD2 && RSIfilter<45) Order = SIGNAL_SELL;
   

// Signal Begin(Exit Buy)
if (RSIfilter<50) Order=SIGNAL_CLOSEBUY;

if(Order==SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars!=BarCount))))
              {
               dummyResult=OrderClose(OrderTicket(),OrderLots(),Bid,Slippage*PipMultiplier,MediumSeaGreen);
               if(EachTickMode) TickCheck = True;
               if(!EachTickMode) BarCount = Bars;
               return(0);
              }

// Signal Begin(Exit Sell)                                                              
if (RSIfilter>50) Order=SIGNAL_CLOSESELL;

if(Order==SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars!=BarCount))))
                 {
                  dummyResult=OrderClose(OrderTicket(),OrderLots(),Ask,Slippage*PipMultiplier,DarkOrange);
                  if(EachTickMode) TickCheck = True;
                  if(!EachTickMode) BarCount = Bars;
                  return(0);
                 }
 
tfi_markets:

Ciao cari codificatori,

Ho probabilmente una domanda semplice, ma mi sono bloccato al momento su:

Il mio EA apre e compra e vende ordini senza problemi, ma quando arriva

a SIGNAL_CLOSEBUY o SIGNAL_CLOSESELL non chiude gli ordini.

Qui uso un RSI_Filter come trigger per chiudere gli ordini di acquisto o vendita.

Ho copiato il mio codice, sarei molto felice se qualcuno potesse dare un'occhiata.

Grazie in anticipo!

#define SIGNAL_NONE      0
#define SIGNAL_BUY       1
#define SIGNAL_SELL      2
#define SIGNAL_CLOSEBUY  3
#define SIGNAL_CLOSESELL 4

extern int    MaxShortTrades   = 1;
extern int    MaxLongTrades    = 1;
int           Order            = SIGNAL_NONE;

// RSI Filter
double RSIfilter=iRSI(Symbol(),0,RSIPeriod,PRICE_CLOSE,BarShift);

// Trade Signal Indicator
double NLD1,NLD2;
      NLD1 = iCustom(NULL,0,"indicator",0,Length,0,0,1,0,0,0,1);
      NLD2 = iCustom(NULL,0,"indicator",0,Length,0,0,1,0,0,0,2);        

// Amount of long / short trades      
int longs  = 0;
int shorts = 0;
double j;
      
      for(j=OrdersTotal()-1;j>=0; j--)
        {
         if(OrderType()==OP_BUY)  longs++;  // Check # of long trades.
         if(OrderType()==OP_SELL) shorts++; // Check # of short trades
        }
                
// place orders
if(longs < MaxLongTrades && NLD1 > NLD2 && RSIfilter>55) Order  = SIGNAL_BUY;        
if(shorts < MaxShortTrades && NLD1 < NLD2 && RSIfilter<45) Order = SIGNAL_SELL;
   

// Signal Begin(Exit Buy)
if (RSIfilter<50) Order=SIGNAL_CLOSEBUY;

if(Order==SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars!=BarCount))))
              {
               dummyResult=OrderClose(OrderTicket(),OrderLots(),Bid,Slippage*PipMultiplier,MediumSeaGreen);
               if(EachTickMode) TickCheck = True;
               if(!EachTickMode) BarCount = Bars;
               return(0);
              }

// Signal Begin(Exit Sell)                                                              
if (RSIfilter>50) Order=SIGNAL_CLOSESELL;

if(Order==SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars!=BarCount))))
                 {
                  dummyResult=OrderClose(OrderTicket(),OrderLots(),Ask,Slippage*PipMultiplier,DarkOrange);
                  if(EachTickMode) TickCheck = True;
                  if(!EachTickMode) BarCount = Bars;
                  return(0);
                 }

due problemi che devi risolvere prima di procedere:

  1. Devi prima selezionare un ordine - non hai mai selezionato l'ordine prima di tentare di chiuderlo
  2. Non stai controllando qual è il tipo di ordine che vuoi chiudere - controlla il tipo e poi, in base al tipo di ordine intraprendi ulteriori azioni - e regola il prezzo di chiusura su bid o ask, a seconda del tipo di ordine
 
mladen:

due questioni che devi risolvere prima di procedere:

  1. Devi prima selezionare un ordine - non hai mai selezionato l'ordine prima di tentare di chiuderlo
  2. Non stai controllando qual è il tipo di ordine che vuoi chiudere - controlla il tipo e poi, in base al tipo di ordine intraprendi ulteriori azioni - e regola il prezzo di chiusura a bid o ask, a seconda del tipo di ordine

Caro Mladen,

ti ringrazio molto per i tuoi utili suggerimenti.

Se ho capito bene ho bisogno di implementare qualcosa come il codice qui sotto

per selezionare un "buy_ticket" l'EA deve chiudere. Il codice non è ancora testato, e una sorta di "pseudo stato".

int buy_ticket=0;
int sell_ticket=0;
int ticket;

// Iterate through tickets
for(int i=OrdersTotal()-1; i>=0; i--)
    {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol())
         {
           if(OrderType()== OP_BUY)
              buy_ticket=OrderTicket();
            else
            if(OrderType() == OP_SELL)
               sell_ticket=OrderTicket();
           }
        }

// Close Ticket with trigger
if (RSIfilter<50) Order=SIGNAL_CLOSEBUY;

if (RSIfilter>50) Order=SIGNAL_CLOSESELL; 

                
if(Order==CLOSE_BUY && buy_ticket!=0)
         {
         if(OrderSelect(buy_ticket,SELECT_BY_TICKET))
            {
            if(!OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,clrDodgerBlue))
               Print("Error closing Buy #",(string)OrderTicket()," Error code ",(string)GetLastError());
            }
         }
      else
      if(Order==CLOSE_SELL && sell_ticket!=0)
         {
         if(OrderSelect(sell_ticket,SELECT_BY_TICKET))
            {
            if(!OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,clrDodgerBlue))
               Print("Error closing Sell #",(string)OrderTicket()," Error code ",(string)GetLastError());
            }
         }
    
 
tfi_markets:

Caro Mladen,

ti ringrazio molto per i tuoi utili suggerimenti.

Se ho capito bene ho bisogno di implementare qualcosa come il codice qui sotto

per selezionare un "buy_ticket" l'EA deve chiudere. Il codice non è ancora testato, e una sorta di "pseudo stato".

int buy_ticket=0;
int sell_ticket=0;
int ticket;

// Iterate through tickets
for(int i=OrdersTotal()-1; i>=0; i--)
    {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol())
         {
           if(OrderType()== OP_BUY)
              buy_ticket=OrderTicket();
            else
            if(OrderType() == OP_SELL)
               sell_ticket=OrderTicket();
           }
        }

// Close Ticket with trigger
if (RSIfilter<50) Order=SIGNAL_CLOSEBUY;

if (RSIfilter>50) Order=SIGNAL_CLOSESELL; 

                
if(Order==CLOSE_BUY && buy_ticket!=0)
         {
         if(OrderSelect(buy_ticket,SELECT_BY_TICKET))
            {
            if(!OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,clrDodgerBlue))
               Print("Error closing Buy #",(string)OrderTicket()," Error code ",(string)GetLastError());
            }
         }
      else
      if(Order==CLOSE_SELL && sell_ticket!=0)
         {
         if(OrderSelect(sell_ticket,SELECT_BY_TICKET))
            {
            if(!OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,clrDodgerBlue))
               Print("Error closing Sell #",(string)OrderTicket()," Error code ",(string)GetLastError());
            }
         }
    

Hai solo 1 ordine (stesso simbolo magico, intendo) aperto allo stesso tempo?

Se sì, allora funzionerà.

 

Cari amici,

L'ea allegato è costantemente aperto ordini a lotto fisso(è aperto tutti gli ordini 0,10)

Non cambio o controllo il valore del lotto degli ordini aperti!


Nelle impostazioni sono disponibili i valori "Lots" e "MaximumRisk" , ma non sono efficaci sui valori di lotto degli ordini!

Potete aiutarmi per favore?

 

ciao signor mladen

potresti fare una finestra secondaria vuota simile a questa immagine

per quanto riguarda

 

Ciao Mladen, ho scaricato il tuo

stepma_pdf_4_4.ex4 così come l'istgramma,

li ho copiati in MT4. Trascinandoli nella finestra del grafico

Ottengo il seguente messaggio, vedi nell'immagine:

Potresti dirmi come posso usare il tuo indicatore?


Lea


ps. lo stesso è successo con: medie_-_mtf__alerts_7_4.ex4 e istogramma

File:
warning.jpg  20 kb