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

 
Dimka-novitsek:
Volevo visualizzare i dati nel test di visualizzazione durante i test. Inizio un test di un Expert Advisor. Trascino un altro EA sullo stesso grafico mentre viene testato. Non vedo alcun commento! L'Expert Advisor sta sorridendo...


Non funzionerà così. Un EA trascinato su un grafico di test visivo o non mostrerà nulla o mostrerà ciò che è nell'account, non nel tester (non so esattamente, in qualche modo mi mancava la creatività per creare una cosa del genere:)

 

Non vedo un commento sul grafico.

int start()
  { Comment("OrdersProfit  ",OrderProfit(),"AccountBalance  ",AccountBalance(),"Equity  ",AccountEquity());
//----
  double Itogo_Profit=Orderasthitaem();
  if (Itogo_Profit>ProfitSeriyniy){Pozuminusudalaem();}
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
Integer:

Vadim, hai provato ad applicarlo? Non sincronizza nulla. Ci ho giocato di recente. Devi costruire la coda da solo. Sfortunatamente, tutto ciò che fa è ridurre il codice di tre righe. O forse non lo capisco.
Non l'ho provato. Lo proverò ora. Ora sto facendo tutto in DLL. Lì è più facile.
 
Grazie, Integer!!!
 

VVel in init()
{
//----
Comment("OrdersProfit ",OrderProfit(), "AccountBalance ",AccountBalance(), "Equity ",AccountEquity());
//----
return(0);
}

Non c'è niente nel tester. Bene...

 

Dimka-novitsek:


VVel in init()
{
//----
Comment("OrdersProfit ",OrderProfit(), "AccountBalance ",AccountBalance(), "Equity ",AccountEquity());
//----
return(0);
}

Non c'è niente nel tester. Bene...


Forse l'Expert Advisor in cui è stato incollato ha la funzione di uscita di commento? Controlla quante volte viene chiamata la funzione Comment() in questo EA.

Per emettere OrderProfit(), l'ordine deve essere selezionato per primo.

Inoltre... che senso ha farlo nell'init? Dovrebbe essere fatto in start().

 
Integer:


Forse l'EA, in cui questo è inserito, ha anche una funzione di uscita dei commenti? Controllate quanto spesso la funzione Comment() viene chiamata nell'EA.

Per emettere OrderProfit(), l'ordine deve essere prima selezionato.

Inoltre... che senso ha farlo nell'init? Dovrebbe essere fatto in start().



Inite, volevo vedere se la mia roba scrive qualcosa, ma non ci sono zecche. Così ho duplicato questa linea nell'init. E ho fatto un casino con OrderProfit()!

Qui abbiamo un intero puzzle. Riesci a crederci!!! 4063 dovrebbe essere un parametro intero.

qui -

OrderClose(  Orderasthitaem[i,0,1], Orderasthitaem[i,0,2], Bid, 5, 0) ; Error=GetLastError(); 

Array di tipo doublet. Ticket è esattamente un intero e un biglietto, ma risulta essere un doppio. Come dalla funzione doublet ottenere un numero intero?

Mi scusi, non capisco affatto.

 
Integer:

Vadim, hai provato ad applicarlo? Non si sincronizza in alcun modo. Ci ho giocato di recente. Devi organizzare la coda da solo. Sfortunatamente, permette solo di accorciare il codice di tre righe. O forse non lo capisco.

La coda è organizzata come in qualsiasi altra lingua. Da solo attraverso l'organizzazione dell'ingresso e dell'uscita del blocco da proteggere.

Questo è uno script:

#property show_inputs

extern int Pause = 1000;

int    hwndChart = NULL; // Уникальный идентификатор скрипта.
string sName = "Condition";

void init()
 {
  hwndChart = WindowHandle(Symbol(), 0);
  // Создаём глобальную переменную синхронизации скриптов.
  if (!GlobalVariableCheck(sName)) GlobalVariableSet(sName, 0);
 }
 
void deinit()
 {
  GlobalVariableDel(sName);
 }

void start()
 {
  while (!IsStopped())
   {// Начало блока синхронизации.
    GlobalVariableSetOnCondition(sName, hwndChart, 0);
    if (GlobalVariableGet(sName) == hwndChart)
     {
      Print("Start");
      Sleep(Pause); // Имитация работы.
      Print("End");
     }
    GlobalVariableSetOnCondition(sName, 0, hwndChart);
    // Завершение блока синхронизации.
    Sleep(200);
   }
 }
Per quanto riguarda il taglio, come la sostituzione con altre funzioni, non funzionerà. È a questo che serve l'accesso atomico. Solo una funzione può fare questo in MQL4.
Intero:
Cioè solo usando questa funzione permette di assicurare che solo un EA lavori alla volta, ma la coda non è costruita, un EA può rimanere inattivo, e un altro può essere chiamato due volte.

Sembra funzionare bene. Caricato 6 script con pause di 3000, 2000, 1000, 500, 300, 200. Ecco una parte del registro:

19:58:36 Check_GlobalVariableSetOnCondition() GBPJPY,M1: GBPJPY Inizio
19:58:37 Check_GlobalVariableSetOnCondition() GBPJPY,M1: GBPJPY Fine
19:58:37 Check_GlobalVariableSetOnCondition() EURUSD,M1: EURUSD Start
19:58:39 Check_GlobalVariableSetOnCondition() EURUSD,M1: EURUSD Fine
19:58:39 Check_GlobalVariableSetOnCondition() USDCAD,M1: USDCAD Start
19:58:39 Check_GlobalVariableSetOnCondition() USDCAD,M1: USDCAD Fine
19:58:39 Check_GlobalVariableSetOnCondition() AUDUSD,M1: AUDUSD Start
19:58:43 Check_GlobalVariableSetOnCondition() AUDUSD,M1: AUDUSD Fine
19:58:43 Check_GlobalVariableSetOnCondition() GBPUSD,M1: GBPUSD Start
19:58:43 Check_GlobalVariableSetOnCondition() GBPUSD,M1: GBPUSD Fine
19:58:43 Check_GlobalVariableSetOnCondition() EURUSD,M1: EURUSD Start
19:58:45 Check_GlobalVariableSetOnCondition() EURUSD,M1: EURUSD Fine
19:58:45 Check_GlobalVariableSetOnCondition() GBPUSD,M1: GBPUSD Start
19:58:46 Check_GlobalVariableSetOnCondition() GBPUSD,M1: GBPUSD Fine
19:58:46 Check_GlobalVariableSetOnCondition() NZDUSD,M1: NZDUSD Start
19:58:46 Check_GlobalVariableSetOnCondition() NZDUSD,M1: NZDUSD Fine
19:58:46 Check_GlobalVariableSetOnCondition() USDCAD,M1: USDCAD Start
19:58:46 Check_GlobalVariableSetOnCondition() USDCAD,M1: USDCAD Fine
19:58:46 Check_GlobalVariableSetOnCondition() NZDUSD,M1: NZDUSD Start
19:58:47 Check_GlobalVariableSetOnCondition() NZDUSD,M1: NZDUSD Fine
19:58:47 Check_GlobalVariableSetOnCondition() GBPJPY,M1: GBPJPY Inizio
19:58:48 Check_GlobalVariableSetOnCondition() GBPJPY,M1: GBPJPY Fine
19:58:48 Check_GlobalVariableSetOnCondition() EURUSD,M1: EURUSD Start
19:58:50 Check_GlobalVariableSetOnCondition() EURUSD,M1: EURUSD Fine
19:58:50 Check_GlobalVariableSetOnCondition() USDCAD,M1: USDCAD Start
19:58:50 Check_GlobalVariableSetOnCondition() USDCAD,M1: USDCAD Fine
19:58:50 Check_GlobalVariableSetOnCondition() AUDUSD,M1: AUDUSD Start
19:58:54 Check_GlobalVariableSetOnCondition() AUDUSD,M1: AUDUSD Fine
19:58:54 Check_GlobalVariableSetOnCondition() NZDUSD,M1: NZDUSD Start
19:58:54 Check_GlobalVariableSetOnCondition() NZDUSD,M1: NZDUSD Fine
19:58:54 Check_GlobalVariableSetOnCondition() EURUSD,M1: EURUSD Start
19:58:56 Check_GlobalVariableSetOnCondition() EURUSD,M1: EURUSD Fine
19:58:56 Check_GlobalVariableSetOnCondition() USDCAD,M1: USDCAD Start
19:58:57 Check_GlobalVariableSetOnCondition() USDCAD,M1: USDCAD Fine
19:58:57 Check_GlobalVariableSetOnCondition() AUDUSD,M1: AUDUSD Start
19:59:00 Check_GlobalVariableSetOnCondition() AUDUSD,M1: AUDUSD Fine
19:59:00 Check_GlobalVariableSetOnCondition() GBPUSD,M1: GBPUSD Start
19:59:00 Check_GlobalVariableSetOnCondition() GBPUSD,M1: GBPUSD Fine
19:59:00 Check_GlobalVariableSetOnCondition() USDCAD,M1: USDCAD Start
19:59:01 Check_GlobalVariableSetOnCondition() USDCAD,M1: USDCAD Fine

 
Funziona, nel senso che una funzione viene eseguita in un determinato momento, ma l'ordine non viene rispettato.
 
Dimka-novitsek:


...Come si ottiene un numero intero da una funzione doublet?

int Int(double v){

return(v);

}