[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 419

 
melnikas:

Il mio caso è così difficile?

double ExtVolumesBuffer[];

hai ragione sulla posizione. Dovreste specificare la dimensione dell'array prima di usarlo. O fare un altro buffer

 
//+------------------------------------------------------------------+
int deinit()
  {    
  return(0);
  }
//+------------------------------------------------------------------+
int start()
  {
  f1(); //Как сделать, что-бы после вызова функции, программа могла остановиться?
  Alert("Есть сигнал"); // И до этого места работа программы бы не дошла
  return(0);
  }
//+------------------------------------------------------------------+  
  int f1()
    {
    return(f2());
    }
//+------------------------------------------------------------------+    
  int f2()
    {  
    return(deinit()); //Тут, по задумке, нужно остановить работу всей программы
    }
//+------------------------------------------------------------------+  
Oppure, da una funzione chiamata, il funzionamento del programma non può essere fermato? (Codice di esempio da usare nell'indicatore)
 
fore-x:
Oppure, da una funzione chiamata, il programma non può essere fermato? (Codice di esempio, da usare nell'indicatore)
return(deinit());

Cosa intendi per stop? rimuovere l'EA/indicatore dal grafico?


su deinit():

la chiamata di deinit non porta alla disattivazione dell'indicatore/indicatore, ma la disattivazione porta alla chiamata di deinit

 
ilunga:

Cosa intendi per stop? rimuovere l'EA/indicatore dal grafico?


su deinit():

non è la chiamata a deinit che causa la disabilitazione dell'indicatore/esperto, è la disabilitazione che causa la chiamata di deinit

Stop significa fermare l'esecuzione della funzione di partenza - dalla funzione chiamata. Come return(0).

Riguardo a deinit, ne sono consapevole, per questo non so come risolvere questo enigma. A quanto pare non si può fare così.

 
fore-x:

Stop significa fermare l'esecuzione della funzione di partenza - dalla funzione chiamata. Come return(0).

Su deinit, lo so, è per questo che non so come risolvere questo puzzle. A quanto pare non si può fare così.

Allora cosa vi impedisce di restituire (-1) o qualcos'altro con questa funzione e fare una chiamata a questa funzione in start() con un controllo? per esempio, così:

int start()
  {
  if (f1() == -1) return (0);
  Alert("Есть сигнал"); // И до этого места работа программы бы не дошла
  return(0);
  }
//+------------------------------------------------------------------+  
  int f1()
    {
if (все плохо) return (-1); else return(0);
    }
 
ilunga:

Allora cosa vi impedisce di restituire (-1) o qualcos'altro con questa funzione e fare una chiamata a questa funzione in start() con un controllo? per esempio così:

//+------------------------------------------------------------------+
int start()
  {
  if(f1() < 0) return(0);
  Alert("Есть сигнал"); // И до этого места работа программы бы не дошла
  return(0);
  }
//+------------------------------------------------------------------+  
  int f1()
    {
    return(f2());
    }
//+------------------------------------------------------------------+    
  int f2()
    {  
    return(-1); //Тут, по задумке, нужно остановить работу всей программы
    }
//+------------------------------------------------------------------+  
Ti capisco, volevo solo evitare movimenti inutili nel codice, chiarito. Grazie per l'esempio!
 
ilunga:

hai ragione sulla posizione. Dovreste specificare la dimensione dell'array prima di usarlo. O fare un altro buffer

Grazie mille!
 


dkfl.zrjdktdbx 09.12.2011 16:56

Buona sera, ho riscontrato che il robot di trading non chiude le posizioni, circa una volta su 50, quando raggiunge un profitto. Poi deve chiudere tutto, ordini pendenti e tutto il resto, e impostare di nuovo. La mancata chiusura crea confusione negli ordini e un drawdown.


Quindi immaginate, a volte si scopre che un ordine chiuso a takeprofit, Clowes Price - prezzo di chiusura dell'ordine - è uguale a zero!!!!!

Vedi la quinta linea nello screenshot qui sotto, è la quinta linea, l'ordine chiuso su takeprofit. E nella nona riga dal basso Il prezzo di chiusura dell'ordine è uguale a zero!!!!!

Sembra che non ci sia niente di particolarmente complicato nel codice... Ve lo mostro subito.

Quando faccio un ordine, salvo il tempo nella finestra di wremjapomnim. Non appena un ordine viene chiuso a currentprofit, cancello tutti gli ordini e di nuovo ricordo il tempo nel wremjapomnim pyrimen e impostarli.

for ( i=OrdersHistoryTotal();i>0;i--){ OrderSelect(i-1,SELECT_BY_POS,MODE_HISTORY  );
Alert( "wremjapomnim " ,wremjapomnim, "  OrderCloseTime(        )   ",  OrderCloseTime( ),  " ",i , " OrderTakeProfit( ) " ,OrderTakeProfit( ),
  " OrderClosePrice(    )  ",OrderClosePrice(   ) );
if ( OrderTakeProfit( )==OrderClosePrice(       )&&wremjapomnim<OrderCloseTime( )|| (NormalizeDouble(OrderClosePrice()-OrderTakeProfit(), Digits)<2*Point)
   &&wremjapomnim<OrderCloseTime(       )|| (NormalizeDouble(OrderClosePrice()-OrderTakeProfit(), Digits)>-2*Point)&&wremjapomnim<OrderCloseTime(       )){C=0;A=1 ;  Alert("C",C,"A",A);
   for ( int ii=OrdersTotal();ii>0;ii--){ OrderSelect(ii-1,SELECT_BY_POS );
   if( OrderMagicNumber( )==2000 &&OrderSymbol()==Symbol()|| OrderMagicNumber( )==1000 &&OrderSymbol()==Symbol()){ 
  OrderDelete(OrderTicket( )) ; Alert ("OrderDelete-vse",  GetLastError( ) ); stsBUY=0;stsSELL=0;
   OrderClose( OrderTicket( ), OrderLots( ), OrderClosePrice( ) , 0, CLR_NONE);Alert ("OrderClose-vse",  GetLastError( ) ); C=0; }     }              }
   
                                                      } 
 
L'avviso è sulla seconda e terza riga del codice e scrive tutto nel log, compreso il fatto cheOrderClosePrice( ) dell'ordine 49 è uguale a zero.
 

Dimmi come tracciare la formazione di un frattale nell'EA. Ho bisogno di aprire un ordine dopo la formazione di un nuovo frattale. Non so come funziona questo indicatore; ha una specie di linea superiore e una specie di linea inferiore.

Se, per esempio, si forma un frattale e il prezzo rompe quel minimo, il frattale sarà ridisegnato o avrò solo un altro frattale?

 
Ciao, potresti per favore dirmi come trovare il minimo e il massimo dell'ultima candela per esempio