[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 673

 
artmedia70:
Cioè ho bisogno di aggiungere una chiamata per visualizzare le informazioni nella finestra dell'indicatore in init()?


provare a scrivere in init()

int init()
{
Alert("Non riesco a trovare la tua casella, sono fuori di qui, anche se sono stato chiamato nella sezione init()");
return(0);
}

 
IgorM:


Bene, provate a scrivere in init()

int init()
{
Alert("Non riesco a trovare la tua scatola, sono fuori di qui, anche se sono stato chiamato nella sezione init()");
ritorno(0);
}

:) Stai plagiando? :)
 

Aiutatemi ad affrontare questo problema! Se ho un trade perdente, devo cambiare il lotto, altrimenti - no. Lo faccio ......

//====================================================
// Расчет размера позиции
//====================================================
double CalculateLots(){
   double Res=dLots;
   bool bProfit=true;
   int PrevTime=-1;
   double tmpLots;
   for (int i=0;i<OrdersHistoryTotal();i++){
      if (!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continue;
      if (OrderSymbol()!=Symbol())                    continue;
      if (OrderMagicNumber()!=MAGIC)                  continue;
      if (OrderCloseTime()<PrevTime)                  continue;
      PrevTime=OrderCloseTime();
      if (OrderProfit()>0) bProfit=true; else bProfit=false;
      tmpLots=OrderLots();
   }
   double Lots_Step=MarketInfo(Symbol(), MODE_LOTSTEP);
   if (!bProfit) Res=tmpLots+Lots_Step;
   return(Res);
}

Devo cambiare il lotto se voglio cambiarlo, ma non lo farò. Il fatto è che quando cambio lotto ho già un ordine pendente (con altri lotti). Ho bisogno di cancellare questi ordini e cambiare il numero di lotti in essi (in uno nuovo), ma i parametri rimangono gli stessi!


 


Cari programmatori,
Si prega di rispondere alla seguente domanda:

Potete dirmi perché i dati di una stringa non vengono inseriti correttamente nell'array?

extern string Sessions_begin="15:31;14:11";
extern string Sessions_end="22:32;18:12"; 

int mas_time_begin[10][2], mas_time_end[10][2];  //первый - № сессии,
            // второй время[][1]-первый элемень время(часы), [][2]-минуты.

//
str_len_begin=StringLen(Sessions_begin)

Print("Длина str_len_begin="+str_len_begin);
  for (n=1,i=0; i<=str_len_begin; i+=6,n++)
  {
   mas_time_begin[n][1]=StrToInteger(StringSubstr(Sessions_begin,i,2));
   mas_time_begin[n][2]=StrToInteger(StringSubstr(Sessions_begin,i+3,2));
   mas_time_end[n][1]=StrToInteger(StringSubstr(Sessions_end,i,2));
   mas_time_end[n][2]=StrToInteger(StringSubstr(Sessions_end,i+3,2));
  Print("n= "+n);
  Print("i= "+i);

  Print("Начало сессии "+n+" в(вывод через Print) "+StringSubstr(Sessions_begin,i,2)+":"+StringSubstr(Sessions_begin,i+3,2)); 
  Print("Конец сессии "+n+" в (вывод через Print) "+StringSubstr(Sessions_end,i,2)+":"+StringSubstr(Sessions_end,i+3,2));
  Print("Начало сессии "+n+" в(вывод через Массив) "+mas_time_begin[n][1]+":"+mas_time_begin[n][2]);
  Print("Конец сессии "+n+" в(вывод через Массив) "+mas_time_end[n][1]+":"+mas_time_end[n][2]);
  }

Ecco cosa ho adesso:

http://savepic.ru/1410881.gif

 

Господа, не подскажете ли? Есть проблема в сортировке ордеров при включении или (наложении) отремонтированного советника на имеющиеся уже, выставленные отложки. Я тут пытался соорудить коды для поиска, распознавания и переприсвоения имеющихся номеров ордеров, чтоб советник воспринимал их как свои, но результат какой-то неопределённый. Советник при включении начинает лупить некоторые отложки в тоже место с теми же параметрами.....Может у кого есть коды или мысли по этой теме, для многих ордеров?

Grazie a coloro che hanno risposto.

 
Hedin:


Cari programmatori,
per favore rispondete alla seguente domanda:

Potete dirmi perché i dati della stringa non vengono inseriti correttamente nell'array?

Questo è quello che ottengo ora:

http://savepic.ru/1410881.gif

La dimensione dell'array nella seconda dimensione non è impostata correttamente:

int mas_time_begin[10][2], mas_time_end[10][2];  //первый - № сессии,

Gli elementi della matrice iniziano con 0, e voi siete in queste voci

mas_time_begin[n][2]=StrToInteger(StringSubstr(Sessions_begin,i+3,2));
mas_time_end[n][2]=StrToInteger(StringSubstr(Sessions_end,i+3,2));
vuole scrivere dati nella cella 3 (0, 1, 2), anche se la seconda dimensione è impostata con due (solo gli indici 0, 1 possono essere usati).

Soluzione: O si allarga l'array nella seconda dimensione

int mas_time_begin[10][3], mas_time_end[10][3];  //первый - № сессии,

o riscrivere gli indici quando si scrivono i valori

mas_time_begin[n][0]=StrToInteger(StringSubstr(Sessions_begin,i,2));
mas_time_begin[n][1]=StrToInteger(StringSubstr(Sessions_begin,i+3,2));
mas_time_end[n][0]=StrToInteger(StringSubstr(Sessions_end,i,2));
mas_time_end[n][1]=StrToInteger(StringSubstr(Sessions_end,i+3,2));
 
rosomah:

Signori, potete consigliarmi? Ho un problema con l'ordinamento degli ordini quando abilito o (sovrappongo) un EA riparato su ordini pendenti già piazzati. Ho provato a costruire dei codici per cercare e riassegnare i numeri d'ordine disponibili in modo che l'EA li riconosca come propri, ma il risultato è indefinito. Quando lo abilito, l'EA inizia a piazzare alcuni ordini pendenti nello stesso posto con gli stessi parametri..... - Qualcuno ha qualche codice o suggerimento su questo argomento per molti ordini?

Grazie per il vostro feedback.

Dipende da come l'EA definisce "owl - alien", se sta usando un numero magico allora non c'è niente che tu possa fare con gli ordini pendenti già impostati, poiché questo parametro non può essere cambiato per un ordine già impostato.
Se memorizza i biglietti, supponiamo, in variabili globali, allora è già più facile, i biglietti già disponibili possono essere "aggiunti alla base". Quindi questa è la domanda principale per voi in questa fase. Come si determina?
 
ToLik_SRGV:

Dipende da come l'EA definisce "owl - alien". Se è impostato con un numero magico allora non c'è niente da fare con gli ordini pendenti già piazzati, poiché questo parametro non può essere cambiato per un ordine già piazzato.

Sì, e se c'è una griglia di diversi ordini pendenti, con buchi formati perché alcuni ordini pendenti sono stati attivati, altri spostati, ecc. Devono essere riconosciuti, rinumerati e riempiti da un "nuovo" Expert Advisor. Certo, possiamo farlo manualmente, ma... Allora perché preoccuparsi di MTS? Per un ordine, possiamo almeno ottenerlo da N.Morzhov:

int poisk;

se(poisk==0)

{ int k;

for(k=0; k<OrderTotal();k++)

{ if(OrderSelect(k,SELECT_BY_POS,MODE_TRADES)==false)break;

se(OrderSymbol()!=Symbol()||OrderMagicNumber()!=Magic)cjntinue

ticket_buy1=OrderTicket();

poisk=1; }}

ma come trattare un insieme di ordini?

 
Chi sa quando è prevista l'uscita del tutorial di mql5?
 
Abzasc:
Chi sa quando è prevista l'uscita del tutorial di mql5?

https://www.mql5.com/ru/forum/491