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

 


Grazie mille.Swan
 

Potete dirmi, per favore, se apro un ordine

OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, oSL, oTP, "", ExpertID, 0, Red)

Se viene attivato uno Stop Loss, aprire un doppio lotto all'apertura dell'ordine successivo, cosa che viene fatta automaticamente

 
vik-777 >> :

Potete dirmi per favore se apro un ordine

OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, oSL, oTP, "", ExpertID, 0, Red)

Se viene attivato uno Stop Loss, aprite un lotto raddoppiato alla prossima apertura dell'ordine che avviene automaticamente


Mettete queste righe all'inizio della funzione START e usate la variabile _SL[0] per determinare il risultato del trade precedente.

se (OrderSelect(Tic,SELECT_BY_TICKET)==true)
{
if (OrderComment()=="[sl]")_SL[0]=-1;
if (OrderComment()=="[tp]")_SL[0]=1;
}

 

Problema.

C'è un EA. Se le variabili Lot, Porog, Otstup, SL, TP sono impostate nel "corpo" del programma, allora l'EA funziona. Se queste variabili sono impostate come "esterne" (impostandole tramite le impostazioni), allora l'EA non funziona (nel "corpo" dell'EA, queste variabili hanno un valore di ZERO).

Quale può essere il problema? Dove cercare una soluzione?

/*
extern double Lot = 0.1;    

extern double Porog = 5.0;  
extern double Otstup = 5.0; 

extern double SL = 5.0; 
extern double TP = 15.0; 
*/

int init()
  {
   return(0);
  }
int deinit()
  {
   return(0);
  }

int start()
  {
  int MagicNumber = 8; 
  int ticket;
  int err;
  int q=0;

double Lot = 0.1;    
double Porog = 5.0;  
double Otstup = 5.0; 
double SL = 5.0; 
double TP = 15.0; 
 

Potreste suggerire una funzione per implementare una finestra di dialogo in cui è possibile specificare i valori delle variabili.

Per esempio, c'è uno script di acquisto (acquisto con Sl e Tp impostati), quando lo si esegue, viene visualizzata una finestra di dialogo in cui è possibile specificare ad esempio la dimensione del lotto, quindi premere Ok e l'ordine viene eseguito!

Grazie!

 

Cari professionisti, per favore consigliate...

Nel mio indicatore uso un testo che visualizza i dati sul valore della curva dell'indicatore sul grafico

{ObjectCreate("P"+Time[ ai],OBJ_TEXT,0,Time[ ai],High[ ai]+ Label);
ObjectSetText("P"+Time[ ai]," "+DoubleToStr( HL,2),7,"Arial",Black);}
Devo spostarlo sul parametro Label per mantenere il testo sulla curva. Ma quando passiamo a un altro periodo o aumentiamo/diminuiamo il grafico, la scala del grafico cambia e dobbiamo modificare di nuovo. Lo spostamento del testo può essere impostato diversamente, per esempio in pixel dello schermo?
 
kon12 писал(а) >>

Cari professionisti, per favore consigliate...

Nel mio indicatore uso un testo che visualizza i dati sul valore della curva dell'indicatore sul grafico

Per fare in modo che il testo non si sovrapponga alla curva, dobbiamo spostarlo del parametro Label. Ma quando si passa a un altro periodo o si aumenta/diminuisce il grafico, la scala del grafico cambia e bisogna modificare di nuovo. Lo spostamento del testo può essere impostato diversamente, per esempio in pixel dello schermo?

Puoi usare

OBJ_LABEL 23 È un'etichetta di testo. Non usa coordinate. La funzione ObjectSet() è usata per impostare le coordinate in pixel relative all'angolo di riferimento (proprietà OBJPROP_CORNER, OBJPROP_XDISTANCE, OBJPROP_YDISTANCE). Per cambiare il testo, si usa la funzione ObjectSetText().

 
Non capisco bene come? Allego una foto dell'indicatore. Il punto è che il testo è legato a punti specifici dell'indicatore.
 
kon12 писал(а) >>
Non capisco bene come? Allego una foto dell'indicatore. Il punto è che il testo è attaccato a punti specifici dell'indicatore.

Allora dovete rendere l'etichetta dinamica. Per ogni periodo di tempo il suo. Una volta dentro e dimenticarsene. Ma prima, dovete selezionarlo.

 
kon12 >> :
Lo spostamento del testo può essere impostato diversamente, per esempio in pixel dello schermo?

La risposta più corretta è no.