[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);
           }
[Deleted]  
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?

[Deleted]  
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"?