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

 

Ciao

il mio pulsante "inizia su dati storici" non è attivo

Quale potrebbe essere la ragione?

 
mukata:

Ciao

il mio pulsante "inizia su dati storici" non è attivo

Quale potrebbe essere la ragione?

Iniziare cosa?
 
Vinin:
I parametri sono giusti?
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.
 

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.

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{
            static int lt2=0;
               if(TimeCurrent()>lt2+20){
                  lt2=TimeCurrent();
                  Print("Need open buy. Trade Context Busy");
               }            
            return(-2);
         }
      }
      else{
         static int 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é????

 

Perché mi sto stancando di..... :-( i prezzi sono gli stessi e l'ordine si apre ancora.....

 
Cari professionisti !!!!! L'EA non fa trading su Demo e Real, ma nello Strategy Tester tutto è OK!

Potete dirmi per favore quale potrebbe essere il problema? Ho provato ad allegare diversi indicatori, tutti funzionano, ma solo nello Strategy Tester!

File:
 

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 );

 
solnce600:

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...

 
nikelodeon:

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".

 
solnce600:

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....

Motivazione: