Errori, bug, domande - pagina 88

 
gumgum:

È un peccato non avere la funzione depo e profitto solo per me

dà 1.#INF.

Servicedesk ha già scritto...

e lo zero dopo il punto non può essere scritto così
double pro=AccountInfoDouble(ACCOUNT_BALANCE)/10000.0;
 
sergey1294:
e non si può mettere uno zero dopo il punto in questo modo.

Non importa come si scrive, è sempre 1.#INF.

Non sembra fare alcuna differenza se è 10. o 10.0.

 
gumgum:

Non importa come si scrive, è sempre 1.#INF.

Non sembra fare alcuna differenza 10. o 10.0.

Ho appena controllato l'espressione.

double pro=AccountInfoDouble(ACCOUNT_BALANCE)/10000.; 
или 
double pro=AccountInfoDouble(ACCOUNT_BALANCE)/10000.0;

Non dà un errore, funziona bene.

2010.08.07 22:27:13     проверка (EURUSD,M5)    pro = 0.5929100000000001
 
sergey1294:

Ho appena controllato l'espressione.

nessun errore, tutto funziona bene.

Certo che va bene e andrà bene!

Sto usando due librerie.... Non descriverò l'intera situazione.

 
gumgum:

Certo che va bene e andrà bene!

Ho due librerie in use.... Non descriverò l'intera situazione.

Perché chiedete perché c'è un errore, non c'è nessun errore nell'espressione che avete dato come esempio, l'errore deve essere in qualcos'altro.
 
sergey1294:
Allora perché chiedere perché c'è un errore, non c'è nessun errore nell'espressione che hai dato come esempio, l'errore deve essere in qualcos'altro.
Non l'ho chiesto).
 
gumgum:
Non stavo chiedendo).

Allora qual è il significato del tuo post

Жадь конечно что нет функции депо и прибыли просто у меня

double pro=AccountInfoDouble(ACCOUNT_BALANCE)/10000.;

дает 1.#INF. 

Сервисдеск уже написал... 
 
sergey1294:

Allora qual è il significato del tuo post

Dove hai visto la domanda? )))
 
gumgum:
Dove hai visto la domanda? )))
Beh, se non era una domanda, allora mi scuso per aver cercato di aiutare con il tuo problema.
 

Ho deciso di testare una strategia. Ma in qualche modo l'Expert Advisor ha iniziato a comportarsi stranamente nel tester.

Volevo usarlo per lunghi periodi. Anche se l'algoritmo è quasi scalper. ;)


Così ho deciso di controllare i dati che arrivano per inserire l'Expert Advisor.

Ho iniziato un Expert Advisor senza pretese

input bool diskret=false;  // работать по открытию бара?

input bool File=true;
MqlTradeRequest mReq;
MqlTradeResult mRez;
int handle1,handle2;
double iBuffer1[],iBu1[];
double iBuffer2[],iBu2[];
double vol[22],OTS;
MqlDateTime newT,oldT;
datetime newTT,oldTT;

string FName;

int hF;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--------------Set default vaules for all new order requests
   mReq.action=TRADE_ACTION_DEAL;
   mReq.magic=777;
   mReq.symbol=Symbol();                 // Trade symbol
   mReq.deviation=3;                     // Maximal possible deviation from the requested price
   mReq.type_filling=ORDER_FILLING_AON;  // Order execution type
   mReq.type_time=ORDER_TIME_GTC;        // Order execution time
   mReq.comment="MAMASKHA_"+IntegerToString(PeriodSeconds()/60,2);
//----------------------- Set Volume pi
    Print ("----- Start init ---");
   
   oldTT=TimeCurrent()+51;TimeToStruct(oldTT,oldT);
   oldTT-=oldT.hour; oldTT-=oldT.min;
   printf("%02d.%02d.%4d %2d:%2d   %3d",oldT.day,oldT.mon,
          oldT.year,oldT.hour,oldT.min,
          SymbolInfoInteger(Symbol(),SYMBOL_TRADE_STOPS_LEVEL));
   StringConcatenate(FName,mReq.comment,"_",oldT.year,"x",oldT.mon,"x",
         oldT.day,"_",oldT.hour,"_",oldT.min,".csv");
   if (File) {hF=FileOpen(FName, FILE_WRITE|FILE_CSV|FILE_COMMON);
              if (hF<-1) Print ("Ошибка открытия файла ",FName," ",
                            GetLastError());
              if (File) FileWrite(hF,oldT.day,oldT.mon,
                   oldT.year,oldT.hour,oldT.min,"I"
                );
               Print ("Start on ",FName);   
              }
   Print ("Start ",mReq.comment);                              
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   if (File) FileClose(hF);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {   

   bool poz=true;

   int i,per=PeriodSeconds();

   MqlTick tick;
   //------------------
   if(!SymbolInfoTick(Symbol(),tick))
     {
      Print("Failed to get Symbol info!",per);
      return;
     }
   
   newTT=tick.time;
   if(newTT<=oldTT+per+1)
       {if (diskret)return;}
   else
   {
     
      MqlRates rates[];
      
     int copied=CopyRates(Symbol(),0,0,1,rates);
     if(copied<=0)
        Print("Ошибка копирования ценовых данных ",GetLastError());
        else oldTT=rates[0].time;
          
      
      TimeToStruct(oldTT,oldT);
      printf("%02d.%02d.%4d %2d:%2d",oldT.day,oldT.mon,
                  oldT.year,oldT.hour,oldT.min);
      TimeToStruct(newTT,newT);
      printf(" New %02d.%02d.%4d %2d:%2d",newT.day,newT.mon,
                  newT.year,newT.hour,newT.min);            
      if (File) FileWrite(hF,oldT.day,oldT.mon,
                   oldT.year,oldT.hour,oldT.min,"I",
                tick.ask,tick.bid,tick.last,tick.volume);
    }
   

   return;
  }

e ho ottenuto uno strano registro. Chi può dirmi la ragione per il salto dei periodi di dati?

E un'altra cosa - il file che deve essere creato (xp2sp) nella directory non viene rilevato.

Per favore, chiarisci, non guardo MT5 da molto tempo e sono completamente perso...

:(