No, i parametri sono corretti. Controllato lo spostamento da 0 a 99. Tutti i valori da 1 a 99 corrispondono chiaramente al display, ma con un valore di spostamento di 0, i dati non corrispondono all'indicatore. Non riesco a capire come si prendono e qual è il mio errore.
Ho affrontato questo problema. Ho una funzione che mette un ordine pendente. Ma li piazza SOLO se non c'è nessun ordine al prezzo dato. Ma un ordine viene ripetuto allo stesso prezzo in modo strano. Ecco la funzione che piazza un ordine.
int fOrderOpenBuy(double PR1, double PTP){
bool chek1=false;
RefreshRates();
double lts=fGetLotsSimple(OP_BUY);
if(lts>0){
if(!IsTradeContextBusy()){
//double PR=Close[1]-(150*Point);double slts=ND(PR1-Point*StopLoss);
if(StopLoss==0)slts=0;
//проверка ордеровint TotalOrders=OrdersTotal();
for (int i=0; i<=TotalOrders; i++){
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true){
if (PR1==OrderOpenPrice()){chek1=true;}
Print ("Чек "+OrderOpenPrice()+" "+PR1);
}
}
if (chek1==false) { int irv=OrderSend(Symbol(),OP_BUYLIMIT,lts,PR1,Slippage,slts,PTP,NULL,Magic_N,0,CLR_NONE); }
if(irv>0){
PlaySound("ok");
return(irv);
}
else{
PlaySound("timeout");
Print ("Error open BUY. "+fMyErDesc(GetLastError()));
return(-1);
}
}
else{
staticint lt2=0;
if(TimeCurrent()>lt2+20){
lt2=TimeCurrent();
Print("Need open buy. Trade Context Busy");
}
return(-2);
}
}
else{
staticint lt3=0;
if(TimeCurrent()>lt3+20){
lt3=TimeCurrent();
if(lts==-1)Print("Need open buy. No money");
if(lts==-2)Print("Need open buy. Wrong lots size");
}
return(-3);
}
}
Esegue gli stessi prezzi aperti, ma la lineaif(PR1==OrderOpenPrice()){chek1=true;} non vuole essere eseguita. Qualcuno può rispondere al perché????
Se stiamo parlando di rachsite una volta per barra, io uso
se (b!=Bars){
b=Barre;
}
Così, il calcolo che è tra parentesi avviene solo una volta per barra...
Grazie mille.
Ho bisogno che le informazioni siano mostrate sulla prima barra dei minuti e solo su di essa.
La versione che proponi tu l'ho provata, ..... ma visualizza informazioni su 2 e 3 e così via... perché la seconda barra non è uguale alla prima e la terza non è uguale alla seconda, ecc.
Ho bisogno di stampare le informazioni una volta alla prima barra. E fino alla chiusura del prossimo ordine da parte dello STOP, la funzione distampa dovrebbe "riposare".
Ho bisogno che le informazioni siano visualizzate sulla prima e solo sulla prima barra dei minuti.
L'opzione che offrite l'ho provata, ..... ma visualizza informazioni su 2 e 3 e così via... perché la seconda barra non è uguale alla prima e la terza non è uguale alla seconda, ecc.
Ho bisogno di stampare le informazioni una volta alla prima barra. E la funzione distampa dovrebbe "riposare" fino alla chiusura del prossimo ordine da parte dello STOP.
Prova a usare una bandiera.
come
bool flag=false;
......
if (x1<0)&&(flag==false){Print();flag=true;}
Poi la stampa sarà stampata UNA volta sola.
E dopo che lo stop è scattato, resetta il flag a false e la stampa sarà eseguita ancora una volta....
Ciao
il mio pulsante "inizia su dati storici" non è attivo
Quale potrebbe essere la ragione?
Ciao
il mio pulsante "inizia su dati storici" non è attivo
Quale potrebbe essere la ragione?
I parametri sono giusti?
Buon divertimento a tutti :-)
Ho affrontato questo problema. Ho una funzione che mette un ordine pendente. Ma li piazza SOLO se non c'è nessun ordine al prezzo dato. Ma un ordine viene ripetuto allo stesso prezzo in modo strano. Ecco la funzione che piazza un ordine.
Esegue gli stessi prezzi aperti, ma la lineaif(PR1==OrderOpenPrice()){chek1=true;} non vuole essere eseguita. Qualcuno può rispondere al perché????
Perché mi sto stancando di..... :-( i prezzi sono gli stessi e l'ordine si apre ancora.....
Potete dirmi per favore quale potrebbe essere il problema? Ho provato ad allegare diversi indicatori, tutti funzionano, ma solo nello Strategy Tester!
Buon pomeriggio a tutti!
Puoi darmi un suggerimento...
Ecco un frammento di codice in cui ci sono due condizioni quando la funzione Print stampa un messaggio.
Il problema.
La funzione di stampa stampa il messaggio OGNI tick, ho bisogno che lo stampi solo sul primo tick e sul resto - riposato.
Per favore, consigliatemi come fermarlo dopo il primo segno di spunta.
Grazie.
se (OrderSelect (Ht-1,SELECT_BY_POS, MODE_HISTORY))
se ( OrderType ()==OP_SELL)
X1 = OrderProfit( );
se (OrderSelect (Ht-1,SELECT_BY_POS, MODE_HISTORY))
se ( OrderType ()==OP_SELL)
se(X1 < 0)
Stampa (" BASSO ", X1 );
Buon pomeriggio a tutti!
Puoi darmi un suggerimento...
Ecco un frammento di codice in cui ci sono due condizioni quando la funzione Print stampa un messaggio.
Il problema.
La funzione di stampa stampa il messaggio OGNI tick, ho bisogno che lo stampi solo sul primo tick e sul resto - riposato.
Per favore, consigliatemi come fermarlo dopo il primo segno di spunta.
Grazie.
se (OrderSelect (Ht-1,SELECT_BY_POS, MODE_HISTORY))
se ( OrderType ()==OP_SELL)
X1 = OrderProfit( );
se (OrderSelect (Ht-1,SELECT_BY_POS, MODE_HISTORY))
se ( OrderType ()==OP_SELL)
se(X1 < 0)
Stampa (" BASSO ", X1 );
Se è un rachsite una volta per barra, uso
se (b!=Bars){
b=Barre;
}
Quindi il calcolo che è tra parentesi avviene solo una volta per barra...
Se stiamo parlando di rachsite una volta per barra, io uso
se (b!=Bars){
b=Barre;
}
Così, il calcolo che è tra parentesi avviene solo una volta per barra...
Grazie mille.
Ho bisogno che le informazioni siano mostrate sulla prima barra dei minuti e solo su di essa.
La versione che proponi tu l'ho provata, ..... ma visualizza informazioni su 2 e 3 e così via... perché la seconda barra non è uguale alla prima e la terza non è uguale alla seconda, ecc.
Ho bisogno di stampare le informazioni una volta alla prima barra. E fino alla chiusura del prossimo ordine da parte dello STOP, la funzione distampa dovrebbe "riposare".
Grazie mille.
Ho bisogno che le informazioni siano visualizzate sulla prima e solo sulla prima barra dei minuti.
L'opzione che offrite l'ho provata, ..... ma visualizza informazioni su 2 e 3 e così via... perché la seconda barra non è uguale alla prima e la terza non è uguale alla seconda, ecc.
Ho bisogno di stampare le informazioni una volta alla prima barra. E la funzione distampa dovrebbe "riposare" fino alla chiusura del prossimo ordine da parte dello STOP.
Prova a usare una bandiera.
come
bool flag=false;
......
if (x1<0)&&(flag==false){Print();flag=true;}
Poi la stampa sarà stampata UNA volta sola.
E dopo che lo stop è scattato, resetta il flag a false e la stampa sarà eseguita ancora una volta....