[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 594

 

for(cnt=0;cnt<totale;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && // controlla la posizione aperta
OrderSymbol()==lSymbol()) // controlla il simbolo
{

?

 

Aiuto con il codice plz! Perché ottengo 138 in questo codice, e che cosa ha a che fare con esso? le offerte si aprono, ma quando si chiude il prezzo non è in qualche modo lo stesso, che cosa è? tutto è semplice. expert advisor in s candele dovrebbe chiudere l'affare e aprire quando il frattale è penetrato. grazie in anticipo per la punta

extern int s=5;



extern int stime=60;
extern int lots=1;
extern int slippage=5;
extern double sl=NULL;
extern double tp=NULL;
double upfr,dnfr=0.0;//levels of last fractals
double tClose=NULL;
double tOpen=NULL;
int flag=0;
int init()
{
//----



//----
return(0);
}
//+------------------------------------------------------------------+
//| funzione di deinizializzazione esperta |

//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//|funzione di avvio esperto |
//+------------------------------------------------------------------+

int start()//aprire su breakout e chiudere dopo s candele
{
//----
upfr=iFractals(Symbol(),PERIOD_H1,MODE_UPPER,4)
dnfr=iFractals(Symbol(),PERIOD_H1,MODE_LOWER,4);
//OPPER ORDINI SU PROBIT
if(upfr>0 && High[1]>upfr && flag==0) //se il frattale è su e il livello del frattale è superato
{
tOpen=Time[0];
tClose=tOpen+s*stime*60;
OrderSend(Symbol(),OP_BUY,lots,Bid,slippage,sl,tp);
flag=1;
}
if(dnfr>0 && Low[1]<dnfr && flag==0)//se il frattale è giù e il livello frattale è giù
{
tOpen=Time[0];
tClose=tOpen+s*stime*60;
OrderSend(Symbol(),OP_SELL,lots,Ask,sl, sl, tp);
flag=1;
}

// CHIUDI ORDINI PER FINE TEMPO
if(Time[0]>=tClose )// se il tempo prima della chiusura è passato
{
Print("CLOSE FUNCTION");
OrClose();
flag=0;
}


//----
return(0);
}
//+------------------------------------------------------------------+
//chiudere tutti gli ordini
void OrClose()
{
for(int i=OrdersTotal()-1;i>=1;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
OrderClose(OrderTicket(),lots,OrderOpenPrice(),0.0005);
}
}
return(0);
}
 
Qwertee:

Aiuto con il codice plz! Perché sto ottenendo un errore 138 in questo codice??? e che cosa ha a che fare con esso? le offerte si aprono, ma quando si chiude il prezzo è in qualche modo non lo stesso, che cosa è?

OrderClose(OrderTicket(),lots,OrderOpenPrice(),0.0005);

cambiarlo in

         if(OrderType()==OP_BUY)
           {
            OrderClose(OrderTicket(),OrderLots(),Bid,slippage);
           }
         else
           {
            OrderClose(OrderTicket(),OrderLots(),Ask,slippage);
           }
 
Buon pomeriggio. I professionisti che si sono occupati dell'indicatore Zigzag consigliano come ottenere gli ultimi due valori dei top: High e Low?
 

Buon pomeriggio.

Per favore, aiutatemi con l'apertura degli ordini. Sto usando un EA su un conto demo, quando ottengo una condizione di acquisto o vendita, mostra 130 errori.

Ecco la funzione di apertura dell'ordine:

int NewOrder(int Cmd,double Lot)
{double TP=0; //тейкпрофит
 double SL=0; //стоплосс
 double PR=0; //Цена
 while(!IsTradeAllowed()) Sleep(100);
 RefreshRates ();
 if(Cmd==OP_BUY)
   {PR=Ask;
    if(TakeProfit>0) TP=NormalizeDouble(Ask+TakeProfit*Point,Digits);
    if(StopLoss>0) SL=NormalizeDouble(Bid-StopLoss*Point,Digits);}
 if(Cmd==OP_SELL)
   {PR=Bid;
    if(TakeProfit>0) TP=NormalizeDouble(Bid-TakeProfit*Point,Digits);
    if(StopLoss>0) SL=NormalizeDouble(Ask+StopLoss*Point,Digits);}
 int tic=OrderSend(Symbol(),Cmd,Lot,PR,20,SL,TP,"",0,0,CLR_NONE);
 if(tic<0) Print("Ошибка открытия ордера: ",GetLastError());
return(tic);}

Ho controllato su altri EA e ho scoperto che tutto era a posto con il calcolo dei lotti.

Conto demo presso Alpari, tipo Micro. take e stop sono 100p, soot. 10 pips, come Alpari ha 5 mark.

 
Normalizzareil prezzo di apertura
 
FAQ:
Normalizzare il prezzo di apertura.


Come si fa a normalizzarlo?

Giusto?

PR=NormalizeDouble(Ask,Digits);

Se è così, non cambia nulla.

Non ho ancora molta esperienza nella programmazione. Puoi spiegare come normalizzarlo?

 
Poi controlla la dimensione dello stop e del profitto in anticipo, se è più grande del tuo stop e profitto - regolali. se è zero. allora devi prima impostare un ordine con stop e profitto zero, e poi modificarli ai livelli che vuoi.
 

Buona sera. Domanda: Quando chiudo parte di un trade, l'EA apre una specie di nuovo trade con un nuovo ticket. La magia del nuovo ordine rimane la stessa?

 
Installato MetaTrader 4, aperto un conto demo. Ho provato ad aprire/chiudere gli ordini. Come posso fare in modo che il terminale stesso faccia scattare un ordine di vendita quando il prezzo sale e un ordine di acquisto quando scende, usando informazioni come "hai bisogno di una differenza di 2 candele per chiudere il vecchio ordine e aprirne uno nuovo"?
Motivazione: