[ARQUIVO]Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por ela. Não posso ir a lugar nenhum sem você - 5. - página 378

 
Dimka-novitsek:
Eu queria exibir os dados no teste de visualização durante os testes. Inicio um teste com um consultor especializado. Eu arrasto outro EA no mesmo gráfico que está sendo testado. Eu não vejo nenhum comentário! O Conselheiro Especialista está sorrindo...


Não vai funcionar assim. Uma EA arrastada em um gráfico de teste visual ou não mostrará nada ou mostrará o que está na conta, não no testador (não sei exatamente, de alguma forma me faltou criatividade para criar uma coisa dessas:)

 

Não vejo nenhum comentário no gráfico.

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

Vadim, você já tentou aplicá-lo? Não sincroniza nada. Tenho brincado com isso recentemente. Você mesmo tem que construir a fila. Infelizmente, tudo o que ele faz é reduzir o código em três linhas. Ou talvez eu não o entenda.
Ainda não experimentei. Vou tentar agora. Estou fazendo tudo na DLL agora. Lá é mais fácil.
 
Obrigado, Integer!!!
 

VVel in init()
{
//
Comentário("OrderProfit ",OrderProfit(), "AccountBalance ",AccountBalance(), "Equity ",AccountEquity());
//
return(0);
}

Não há nada no testador. Bem...

 

Dimka-novitsek:


VVel in init()
{
//

Comentário("OrderProfit ",OrderProfit(), "AccountBalance ",AccountBalance(), "Equity ",AccountEquity());
//
return(0); }

Não há nada no testador. Bem...


Talvez o Expert Advisor no qual foi colado, tenha a função de saída de comentários? Verifique quantas vezes a função Comentário() é chamada neste EA.

Para emitir OrderProfit(), o pedido deve ser selecionado primeiro.

Além disso... qual é o objetivo de fazer isso no interior? Deve ser feito no início().

 
Integer:


Talvez a EA na qual isto está inserido ainda tenha uma função Comentário()? Verifique com que freqüência a função Comentário() é chamada na EA.

Para emitir OrderProfit(), o pedido tem que ser selecionado primeiro.

Também...de que adianta fazer isso no interior? Deve ser feito no início().



Em Inite, eu queria ver se minhas coisas escreviam alguma coisa, mas não há carrapatos. E eu dupliquei esta linha no init. E eu estraguei com OrderProfit()!

Aqui temos todo um enigma. Dá para acreditar!!! Espera-se que o 4063 seja um parâmetro inteiro.

aqui -

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

Array do tipo doublet. O bilhete é exatamente um número inteiro e um bilhete, mas acaba sendo um duplo. Como a partir da função doublet obter o número inteiro?

Desculpe-me, não entendo nada.

 
Integer:

Vadim, você já tentou aplicá-lo? Ela não sincroniza de forma alguma. Tenho brincado com isso recentemente. Você mesmo tem que organizar a fila. Infelizmente, só permite encurtar o código em três linhas. Ou talvez eu não o entenda.

A fila está organizada como em qualquer outro idioma. Por si só, através da organização da entrada e saída do bloco a ser protegido.

Este é um roteiro:

#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);
   }
 }
Quanto ao corte, como a substituição por outras funções, não vai funcionar. É para isto que serve o acesso atômico. Somente uma função pode fazer isso na MQL4.
Inteiro:
Isto é, o simples uso desta função permite garantir que apenas uma EA funcione de cada vez, mas a fila não é construída, uma EA pode ficar ociosa, e outra pode ser chamada duas vezes.

Parece funcionar bem. Carregados 6 roteiros com pausas de 3000, 2000, 1000, 500, 300, 200. Aqui está uma parte do diário de bordo:

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

 
Funciona, no sentido de que uma função é executada em um ponto no tempo, mas a ordem não é respeitada.
 
Dimka-novitsek:


...Como se obtém um número inteiro de uma função doublet?

int Int(double v){

return(v);

}