Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 521

 
Buona Pasqua a tutti! Come risolvere il problema, in mql4 il doppio tipo non dava -9315605757223320000.00, -9232595408891630000.00 quando si calcolavano i prezzi e mql5 li ha tirati fuori da qualche parte? Forse un difetto nelle citazioni? Come aggirare questa situazione? Grazie.
 
mwwm:
Buona Pasqua a tutti! Come risolvere il problema, in mql4 il tipo doppio non dava -9315605757223320000.00, -9232595408891630000.00 quando si calcolavano i prezzi e mql5 li ha tirati fuori da qualche parte? Forse un difetto nelle citazioni? Come aggirare questa situazione? Grazie.
Dov'è il codice?
 
Artyom Trishkin:
Dov'è il codice?

Eccone uno approssimativo:

//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot OC
#property indicator_label1  ""
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
#property strict 
//--- indicator buffers
double Op[],Hi[],Lo[],Cl[],Ti[];
double q1[100],q2[100];

///---------
double Lim1[10],Lim2[10];
double Max1[10],Min1[10];
double Max2[10],Min2[10];
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXX

//+------------------------------------------------------------------+ 
//| Custom indicator initialization function                         | 
//+------------------------------------------------------------------+ 
int OnInit()
  {
//--- откроем файл 
   ResetLastError();
//--- привязка массива к индикаторному буферу с индексом 0 
   SetIndexBuffer(0,Ti,INDICATOR_DATA); SetIndexBuffer(1,Op,INDICATOR_DATA);SetIndexBuffer(2,Hi,INDICATOR_DATA);
   SetIndexBuffer(3,Lo,INDICATOR_DATA); SetIndexBuffer(4,Cl,INDICATOR_DATA);
//---- установка значений индикатора, которые не будут видимы на графике 
//--- 
   ArraySetAsSeries(Ti,true);
   ArraySetAsSeries(Op,true);
   ArraySetAsSeries(Hi,true);
   ArraySetAsSeries(Lo,true);
   ArraySetAsSeries(Cl,true);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+ 
//| Custom indicator iteration function                              | 
//+------------------------------------------------------------------+ 
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   ArraySetAsSeries(time,true); 
   ArraySetAsSeries(open,true); 
   ArraySetAsSeries(high,true); 
   ArraySetAsSeries(low,true); 
   ArraySetAsSeries(close,true); 
   ArrayInitialize(Lim1,1);ArrayInitialize(Lim2,1);
  
   int f=1;
/////////      
//--- Проверка на минимальное колиество баров для расчёта
   if(rates_total<1) return 0;
//--- Проверка и расчёт количества просчитываемых баров
   int limit=rates_total-prev_calculated;
   if(limit>1) // если это первый запуск, или изменение истории, или открытие нового бара
     {
      limit=rates_total-1;                   // установим начало цикла на начало исторических данных
      ArrayInitialize(Ti,EMPTY_VALUE);       // инициализируем массив
      ArrayInitialize(Op,EMPTY_VALUE);
      ArrayInitialize(Hi,EMPTY_VALUE);
      ArrayInitialize(Lo,EMPTY_VALUE);
      ArrayInitialize(Cl,EMPTY_VALUE); 
     }
 int p=0;
    
//--- Расчёт индикатора
   for(int i=limit-1; i>=0 && !IsStopped(); i--)
     {
      Op[i]=open[i];Hi[i]=high[i];Lo[i]=low[i];Cl[i]=close[i];

            q1[1]=((Hi[i+f+0]+Lo[i+f+0])/2+Hi[i+f+0])/2;
            Lim1[1]=q1[1]-Hi[i+f+1];  
            Max1[1]=MathMax(Max1[1], Lim1[1]);
            Min1[1]=MathMin(Min1[1], Lim1[1]);

double n=100000000;
if(MathAbs(Lim1[1])>n){p++;Print(Lim1[1]," = ",p,"  = ",i);}
 } 
//--- return value of prev_calculated for next call 
   return(rates_total);
  }
 
Ho 2 conti con diversi broker e voglio copiare i segnali su ogni conto da 2 diversi fornitori di segnali. Devo collegare un vps separato per ogni account per 10$/mese o posso collegarne uno?
 
Per favore mandami il link diretto a mt4. Sto cercando di scaricare mt4 ma invece viene installato mt5. Grazie in anticipo.
 
Aleksei Poliakov:
Per favore mandami il link diretto a mt4. Sto cercando di scaricare mt4 ma invece viene installato mt5. Grazie in anticipo.
Basta scaricarlo dal vostro broker. O un altro.
 
Artyom Trishkin:


Alexey Viktorov:


Grazie, capisco. Come faccio a tenere traccia se chiudo una parte di un ordine due o tre volte? Per esempio, ho chiuso un lotto di 0,1, poi ho chiuso 0,5, poi ho chiuso un altro 0,25. L'ultima posizione chiusa sarà uguale al biglietto della posizione aperta, ma come devo cercare un profitto su una precedente chiusa?

 
PolarSeaman:

Grazie, capisco. Come faccio a tenere traccia se chiudo una parte di un ordine due o tre volte? Per esempio, ho chiuso un lotto di 0,1, poi ho chiuso 0,5, e poi ho chiuso un altro 0,25. L'ultima posizione chiusa sarà uguale al ticket della posizione aperta, e il profitto della precedente chiusa, come devo cercarlo?

p1 è l'unico. tenete i vostri registri e la vostra storia.

Un'altra opzione è quella di utilizzare la cronologia degli ordini del terminale, ma ha alcune sfumature complicate.

 
Maxim Kuznetsov:

p1 e l'unico. tenete i vostri registri e la vostra storia.

Che colpo di scena!))

 

Ho trovato, qui sul forum, una funzione per calcolare il profitto da una certa data"la funzione restituisce il profitto totale nella valuta delle posizioni chiuse da una certa data".

Presumo che questo funzionerà per me. Solo come scoprire la data in cui è stata aperta la posizione che ho parzialmente chiuso?