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

 
Pensavo che non ci fosse un giunto lì - lo rivisiterà di nuovo - grazie.
 
No, sulle biciclette non si adatta. Devo fare una correzione dell'ora - la differenza tra i fusi orari di due terminali diversi. È una questione di ore. Cercherò io stesso il glitch.
 
Aleksander:
all'inizio - chiama la funzione per controllare se c'è un ordine di acquisto nel ciclo dell'ordine SellStop... e rimuoverlo - se non c'è un ordine di acquisto tra gli ordini aperti...
Non capisco la frase " L'ordine di acquisto è presente nel ciclo dell'ordine SellStop " .
 

vedere...

Round robin di ordini impostati (inizio)

prendiamo l'ordine

- Se è un SellStop (ricordate il suo numero magico - è anche un biglietto d'ordine di acquisto {

via

Il bool OrderSelect( int index, int select, int pool=MODE_TRADES)


controlliamo se l'ordine esiste... - questo è il tuo ordine di acquisto...

Se non c'è, cancelliamo l'attuale ordine SellStop

}

} Fine del ciclo dell'ordine...

 
TheXpert:

InitsializeRealMasterOrders -- cerca un errore qui.

Ed ecco un'altra cosa - non per fare una bicicletta - https://docs.mql4.com/ru/convert/timetostr



Ancora un problema tecnico. Nella subroutine il codice legge i dati dalle righe del documento di testo:

4;NZDUSD;98537467;1;0.5;1340809155;0;0.7881;0;0.7939;0;0
4;NZDUSD;98537450;1;0.5;1340809147;0;0.788;0;0.7939;0.787;0

Il tempo di apertura dell'ordine è il sesto parametro nella linea. È stato letto nella variabile di tipo datetime dai comandi:

Stroka=FileReadString(FileHandle);// Tempo di apertura
r_master_OpenTime[i]=StrToTime(Stroka);// Tempo di apertura

Come risultato, abbiamo un Dio sa quale valore nella variabile r_master_OpenTime[i]. Ma appena ho cambiato il suo tipo da datetime a int, tutto è ok. Programmo con mql4 da più di cinque anni, e ancora non riesco a smettere di chiedermi... :)

 
Aleksander:

vedere...

Round robin di ordini impostati (inizio)

prendiamo l'ordine

- Se è un SellStop (ricordate il suo numero magico - è anche un biglietto d'ordine di acquisto {

via

Il bool OrderSelect( int index, int select, int pool=MODE_TRADES)


controlliamo se l'ordine esiste... - questo è il tuo ordine di acquisto...

se non c'è - allora cancella l'attuale ordine SellStop

}

Fine del ciclo dell'ordine...

Ho scritto questa sciocchezza

  int      i, k=OrdersTotal();
  
   for (i=0; i<k; i++)
 if(OrderType()==OP_SELLSTOP)
    if(OrderMagicNumber()==ticket)
 if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 
  if(OrderType()==OP_BUY)return(-1); 
      else
        OrderDelete(OrderTicket());
Спасибо вроде работает))
 

drknn: Все равно глюк. В подпрограмме код считывает данные из строк текстового документа:

4;NZDUSD;98537467;1;0.5;1340809155;0;0.7881;0;0.7939;0;0
4;NZDUSD;98537450;1;0.5;1340809147;0;0.788;0;0.7939;0.787;0

Il tempo di apertura dell'ordine è il sesto parametro della stringa. È stato letto nella variabile di tipo datetime dai comandi:

Stroka=FileReadString(FileHandlе);// Время открытия
r_master_OpenTime[i]=StrToTime(Stroka);// Время открытия

Di conseguenza, la variabile r_master_OpenTime[i] conterrebbe un valore non importante. Ma appena ho cambiato il suo tipo da datetime a int, tutto è ok. Programmo con mql4 da più di cinque anni, e ancora non riesco a smettere di chiedermi... :)

Da qui
datetime StrToTime(string value)
Converte una stringa contenente l'ora e/o la data nel formato "yyyy.mm.dd [hh:mi]" in un numero datetime (numero di secondi trascorsi dal 01.01.1970)
Il formato dei dati in ingresso non corrisponde al formato previsto
 

Si prega di consigliare cosa fare se:

Nel tester funziona bene, tutto secondo i piani, ma sul realsk non si apre la transazione.

P.S. Ho davvero bisogno di aiuto, è una questione di vita o di morte

 
Gek34:

Buona giornata a tutti.

Ho provato a scrivere un indicatore, sembra funzionare, ma solo sulla storia che disegna come previsto e poi quando arrivano nuove quotazioni disegna una solita maschera.

Il codice è allegato:

int start()
{
int counted_bars=IndicatorCounted();
int i,n;
double Stark=0;
//----
i=Bars-counted_bars-1;//+50;
// n=Bars-counted_bars-1;
while(i>=0)
{
//----

double Ma=iMA(NULL,0,PerMa,Shift,MODE_EMA,PRICE_CLOSE,i);
//double Ma1=iMA(NULL,0,PerMa,Shift,MODE_EMA,PRICE_CLOSE,i+1);
if(Stark+Step*Point<Ma)Stark=Ma;
if(Stark-Step*Point>Ma)Stark=Ma;
ABuf[i]=Stark;

//----
i--;
}
return(0);
}


Per favore, aiutatemi a sistemarlo in modo che continui a disegnare passi.

Lo apprezzerei molto.

Gek.

Dammi tutto il codice dell'indicatore
 
cosa c'è di sbagliato per (f=1;f<Bars;f++)
{
Price1 =(iClose(Symbol_1,0,0) - iClose(Symbol_1,0,f)) / MarketInfo(Symbol_1, MODE_POINT)
Price2 = K*(iClose(Symbol_2,0,0) - iClose(Symbol_2,0,f)) / MarketInfo(Symbol_2, MODE_POINT);
Spread = Price1 - Price2;
Print ("Price1="+Price1, " Price2="+Price2);
if (Spread==0){t=f; break;}
}
Prezzo12 = (iClose(Symbol_1,0,0) - iClose(Symbol_1,0,t)) / MarketInfo(Symbol_1, MODE_POINT);
Prezzo22 = K*(iClose(Symbol_2,0,0) - iClose(Symbol_2,0,t)) / MarketInfo(Symbol_2, MODE_POINT);
Spread2 = Prezzo12 - Prezzo22;


se (MathAbs(Spread2) >= razdvizka && Spread2 < 0) { aprire il trade }


Voglio fissare la barra in cui lo spread era uguale a zero e controllare lo spread da essa