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

 
webip:
Gente, per favore aiutatemi. Sono passati 5 giorni e non riesco a capirlo. Ho fatto il mio EA per modificare l'ordine di stop loss quando i criteri necessari si attivano. E stop loss - che dovrebbe essere impostato, prendere profitto dell'ultimo ordine chiuso. Ma quando inizia la modifica, il robot imposta sempre uno Stop Loss di 1,0000. Non capisco cosa c'è di sbagliato. Mi sono già scervellato. Qualcuno ha qualche variante, come prendere il take profit dell'ordine precedente e mettere lo stop loss dell'ordine attuale?

Bene... sembra che tu lo stia memorizzando in una variabile di tipo int, mentre tu vuoi che sia un double.

Il take dell'ordine corrente non è necessariamente impostato sullo stop loss dell'ordine precedente. Può essere messo in un posto dove non dovrebbe essere.

 
artmedia70:

Bene... Sembra che tu lo stia memorizzando in una variabile di tipo int, mentre dovresti memorizzarlo in double.

E non è detto che si possa mettere la presa dell'attuale sulla fermata del precedente... Può essere messo in un posto dove non dovrebbe essere.


ma è dove si può mettere. All'inizio ho anche pensato che stavo memorizzando nel tipo sbagliato, ma poi ho controllato e andava bene.
 
webip:
ma è dove puoi metterlo. All'inizio ho anche pensato che stavo memorizzando nel tipo sbagliato, ma poi ho controllato e andava bene.

Memorizzalo in una variabile doppia, molto probabilmente memorizzi il prezzo in una variabile int, così la parte frazionaria viene tagliata fuori.
 
artmedia70:
Memorizzalo in una variabile doppia, molto probabilmente memorizzi il prezzo in una variabile int, così la parte frazionaria è tagliata fuori.


Controllato di nuovo. Non ha capito nulla, ma tutte le variabili sono al loro posto. L'unico problema ora è che quando scatta il criterio di modifica di un ordine, il grafico di Strategy Tester semplicemente si blocca. Cosa devo fare? Credo che abbiamo memorizzato tutto in doppio.
 
webip:

Controllato di nuovo. Non ho capito niente, ma tutte le variabili sono al loro posto. L'unico problema ora è che, quando scatta il criterio di modifica di un ordine, il grafico di Strategy Tester semplicemente si blocca. Cosa devo fare? Credo che abbiamo memorizzato tutto in doppio.

Ho dimenticato di chiudere a chiave il frigorifero in cucina :)

Beh, cos'altro posso dirvi in un luogo spoglio?

Come questo? O sei sicuro di memorizzare i prezzi in una variabile di tipo double?

 
artmedia70:

Hanno dimenticato di chiudere a chiave il frigorifero in cucina :)

Beh, cos'altro posso dirvi sull'essenziale?



No. Il frigorifero è chiuso. :))

Non so quale sia il problema. Ho fatto tutte le variabili correttamente. Ecco il pezzo in cui viene modificato. Forse capirete qual è il problema.

int modify_2(int tip)
 {

 int ticket;  //номер ордера
 double 
 price,   //Цена открытия
 tp;     //Новое значение цены
 double ts;
 bool modify=false;
 double take;
 
  for(int n=1;n<=OrdersTotal();n++)
   {
    ticket=mas_ord[n][1];
    if(mas_ord[n][4]!=tip)
     continue;
    price=mas_ord[n][6];
    tp=mas_ord[n][2];                          
    
    switch(tip)
     {

      case 0:
     OrderSelect(1,SELECT_BY_POS,MODE_HISTORY);
      take=OrderTakeProfit();
       ts=take;
       modify=true;
       break;
      
      case 1:
       ts=Ask+Level_sell_138*Point;
       modify=true;        
     } 
    //--------------
    if(modify==false)
     continue;
    
    bool ans=OrderModify(ticket,price,ts,tp,0);
    
    if(ans==false)
     { 
      n--;
     }
     else ord_2=true;
   }
   return;
 }
 
webip:


No. Il frigorifero è chiuso. :))

Non so quale sia il problema. Ho fatto tutte le variabili correttamente. Ecco il pezzo in cui sono state fatte le modifiche. Forse puoi capire qual è il problema.

Viene da un libro di testo o qualcosa del genere?

for(int n=1;n<=OrdersTotal();n++)

Dovete passare attraverso gli ordini in questo modo:

for(int n=0;n<OrdersTotal();n++)

Di conseguenza, il resto degli array galleggerà...

Cercherei l'ultimo ordine chiuso provando a cercare nella storia, non puntando esplicitamente a 1

E così via... Non posso guardare oltre - in primo luogo, senza integrità del codice è improbabile che aiuti, e in secondo luogo, sono le sette del mattino e non sono ancora andato a letto...

 
webip:


No. Il frigorifero è chiuso. :))

Non so quale sia il problema. Ho fatto tutte le variabili correttamente. Ecco il pezzo in cui sono state fatte le modifiche. Forse puoi capire qual è il problema.

Prova a fare il doppio! Non sarebbe male, ma potrebbe aiutare a risolvere il problema.
 
artmedia70:

Viene da un libro di testo?

Bisogna superare gli ordini in questo modo:

Di conseguenza, il resto degli array galleggerà...

Cercherei l'ultimo ordine chiuso provando a cercare nella storia, non puntando esplicitamente a 1

E così via... Non posso cercare oltre - primo, difficilmente mi aiuterebbe senza l'integrità del codice, e secondo, sono le 7 del mattino e non sono ancora andato a letto...



L'ultimo ordine chiuso l'ho indicato direttamente per vedere se funzionava. E quell'ultimo ordine chiuso, ho puntato direttamente a scoprire se il programma funziona bene (e funziona di merda). E siccome sto testando nel tester (e so che l'ordine che mi interessa si aprirà per primo), il mio codice è molto lungo, non potrò copiarlo qui:)
 
webip:


No. Il frigorifero è chiuso. :))

Non so quale sia il problema. Ho fatto tutte le variabili correttamente. Ecco il pezzo in cui sono state fatte le modifiche. Forse puoi capire qual è il problema.

L'array

mas_ord

Che tipo hai?

Che tipo sono le variabili prezzo, tp, take? Perché dovremmo indovinare qui?