Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 382

 
Link_x:

Anche così non chiude gli ordini, non mi piace.
Sembra che sia tutta colpa mia, che non sono in grado di trovare, a causa dell'inesperienza.

Inoltre, se usiamo GetLastError(), studiamo qual è il problema.
 
Link_x:
Non riesco a capirlo.
Ok, ho già trovato un'alternativa. :)

Lasciate che MTS faccia trade senza SL e TP, ma chiudete tutti se il profitto potenziale è maggiore di X.
È possibile chiudere gli ordini in questo modo?
Dobbiamo tenere traccia degli ordini in questo modo?
Il primo parametro della funzione OrderClose(.......) deve essere il biglietto della posizione (deve essere trovato prima con OrderSelect() )
 
Capite la variabile sl, avete un numero intero, poi avete una frazione.
 
vadynik:

La funzione è frazionaria o non dovrebbe esserlo?

Buon anno! Bevi qualcosa e non preoccuparti!!!!!!!!!!!!!!!!!! :-)
 
Link_x:

Anche così non chiude gli ordini, non mi piace.
Sembra che siano i miei difetti, che non sono in grado di trovare a causa dell'inesperienza.


guru, dove stai andando... ?... :-))) sei fuori di testa ...

ci sono folle che pregano, non sanno dove andare, e lui non riesce a mettere bene i piedi... :-)))

 
vadynik:

La funzione è frazionaria o non dovrebbe esserlo?
void VirtualTral(int Dist_Tral,int Start_Tral,int Magic,int SL)

\\здесь у тебя SL - целая, не знаю, какое значение ты сюда посылаешь
{

double dist=Dist_Tral;
double start=Start_Tral;
double sl=SL;

//здесь уже дробная, но так как до этого была целая, значит....
 
if(OrdersTotal()<=0)
ObjectDelete("Stop"); 

int i, k=OrdersTotal();

  for (i=k-1; i>=0; i--) 
   {
          if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
     {  

             if (Bid-NormalizeDouble(OrderOpenPrice(),Digits)>NormalizeDouble(start*Point,Digits))
      
          {                                                                                                                        
                    if((NormalizeDouble(Bid-sl*Point,Digits))>(NormalizeDouble(dist*Point,Digits)))//здесь sl подразумевается как отступ от цены, тогда dist должна быть ценой
                {         
                                                 
                          sl=NormalizeDouble(Bid-dist*Point,Digits); //а здесь sl - это уже цена, вполне определенная
                          //Print(+dist); 
                          //Print(+sl); 
                          ObjectCreate("Stop",OBJ_HLINE,0,D'2013.02.20 12:30',sl); // и здесь, это определенное значение цены
                                                                        
                          ObjectSet("Stop",OBJPROP_STYLE,1);                         
                          ObjectMove("Stop",0,D'2013.02.20 12:30',sl);            
   
 
vadynik:

Perché devo contare la differenza tra la domanda e l'offerta e confrontare questo delta con la distanza e se è maggiore è necessario tirare su lo stop, non capisco dove esattamente il difetto?



Facciamolo in numeri

se((NormalizeDouble(Bid-sl*Point,Digits))>(NormalizeDouble(dist*Point,Digits))

Supponiamo che l'offerta sia 1,3333, sl sia 100, dist sia 20, allora

1.3333-100 * 0.0001=1.3233 che è più di 20 * 0.0001 = 0.02 sempre

 
gyfto:

Ho una domanda più debole sull'usabilità. Il grafico può essere fatto scorrere a sinistra e a destra, così come può essere schiacciato e allungato. Ma come faccio a scorrere su e giù?

Ho capito, con il grafico può essere trascinato su e giù con il mouse.

 
Integer:
r772ra

Grazie per il vostro aiuto, cari commercianti - programmatori. :)
 

Per favore consigliate come calcolare le percentuali in MQL4

per esempio x=10+3% come scriverlo programmaticamente?

Non riesco a trovarlo nel libro di riferimento.