Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 621

 
YuraZ:



Obrigado!!!!!!!!!!!!

Se você não acha que é impertinente.....:))) aconselhe como executar corretamente o Testador. Do jeito que estou tentando, não está funcionando.

#import  "shell32.dll"
    int ShellExecuteA(int hwnd,string Operation,string File,string Parameters,string Directory,int ShowCmd); 
#import

int Start;

int start()
   {
    //---------------------------------- Запустим Тестер -------------------------
    //Start   = ShellExecuteA(0, "Open", "terminal.exe", FileOptim, PuthTester_h, 3);
    //Start   = ShellExecuteA(0, "Open", "terminal.exe", "optimise.ini", "D:\Alpari_Terminal_Tester\tester", 3);

    return(0);
   }
 
Leo59:

Obrigado!!!!!!!!!!!!

Se você não acha que é impertinente.....:))) me diga como fazer o Testador corretamente. Do jeito que estou tentando, não está funcionando.

A auto-optimização decidiu fazer isso! ? frio... esse é um tópico legal.

há 2 maneiras que eu gosto do 1

1) iniciar a otimização a partir do Expert Advisor no mesmo terminal

2) configure um terminal ou terminais separados - inicie-os e depois leia os resultados da otimização


você parece estar tentando o segundo método - é mais incômodo.


Substitua-a primeiro.

ShellExecuteA  на ShellExecuteW
 
YuraZ:

A auto-optimização decidiu fazer isso! ? frio... esse é um tópico legal.

há 2 maneiras que eu gosto do 1

1) iniciar a otimização a partir do Expert Advisor no mesmo terminal

2) configure um terminal ou terminais separados - inicie-os e depois leia os resultados da otimização


você parece estar tentando o segundo método - é mais incômodo.


primeiro você precisa substituí-lo por.



Obrigado!!!!!!!!
Você, está certo :)) O resultado final é a auto-optimização.


1) iniciar a otimização a partir do Expert Advisor no mesmo terminal

Faço-o com base nos resultados do comércio virtual atual

2) Configure um terminal ou terminais separados - inicie-os e depois leia os resultados da otimização no final

Eu estava escavando na otimização automática da XEON no outono. TestCommander é uma caixa preta comercial. Decidi fazê-lo eu mesmo para implementar de alguma forma a funcionalidade que não funciona na variante 1).

 
pu6ka:

Jogue este indicador na M1, conforme aparecem novas barras, as linhas do jacaré à esquerda "são apagadas". Você precisa disto?



Resolveu o problema.

#property copyright "forexman77@list.ru"
#property link      "forexman77@list.ru"
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Green
#property indicator_color2 Red
//--- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
extern int p  =10;
double val_plus[];
double val_minus[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,ExtMapBuffer2);
   IndicatorDigits(Digits+1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
    int counted_bars=IndicatorCounted(),                      
    limit;
    double
    indicator_plus,indicator_minus;
   if(counted_bars>0)
      counted_bars--;
   limit=Bars-counted_bars;
   for(int i=0;i<limit;i++)
   { 
     indicator_plus=0;
     indicator_minus=0;
     ArrayInitialize(val_plus,0);
     ArrayInitialize(val_minus,0);
   for(int k=p;k>=0;k--)
     {
     ArrayResize(val_plus,p);
     ArrayResize(val_minus,p);
     if(iMA(NULL,PERIOD_CURRENT,21,0,MODE_EMA,PRICE_CLOSE,i+k)>iMA(NULL,PERIOD_CURRENT,21,0,MODE_EMA,PRICE_CLOSE,i+k+1))val_plus[k]=1;
     if(iMA(NULL,PERIOD_CURRENT,21,0,MODE_EMA,PRICE_CLOSE,i+k+1)>iMA(NULL,PERIOD_CURRENT,21,0,MODE_EMA,PRICE_CLOSE,i+k))val_minus[k]=1;

     if (val_plus[k] > 0){indicator_plus=indicator_plus+val_plus[k];}
     if (val_minus[k] > 0){indicator_minus=indicator_minus+val_minus[k];}
     }
          ExtMapBuffer1[i]=indicator_plus;
          ExtMapBuffer2[i]=indicator_minus;
   }

   return(0);
  }
 
Qualquer pessoa pode escrever um simples código de script que copia um arquivo de um lugar para outro?

Ou, o que irá operar o Testador em um terminal diferente?

Bem, eu ainda não posso. Você pode?

 
Leo59:
Escrever um simples roteiro de código, que copia um arquivo de um lugar para outro, qualquer um pode?

Ou, quem vai dirigir o Testador em um terminal diferente?

Aqui, eu ainda não posso. E você?


E eu não posso, porque não preciso! O que é necessário, estou aprendendo a fazer eu mesmo, para não ter que mudar minha lógica!

Especialmente porque eu mesmo fiz isso, se você precisar ajustar alguma coisa, não há problema!

Aprenda com o básico "match", com dicas - presentes não aprenderão e no final mais tempo será desperdiçado para nada!

Boa sorte! :)

 
borilunad:


E eu não posso, porque ainda não é necessário! O que é necessário, estou acostumado a fazer eu mesmo, para não mudar minha lógica!

Mais uma razão para fazer isso você mesmo, se você precisar ajustar alguma coisa, sem problemas!

Aprenda o básico, você não aprenderá com dicas-presentes e acabará perdendo mais tempo a longo prazo!

Boa sorte! :)

Você está certo, "não coma o pão de outra pessoa".

A cidade de Barcelona é incrível! Só os trilhos do bonde, dispostos entre gramados verdes, valem a pena! Mas as mulheres de lá na Espanha são de pele curta e cabeça dura, não como nossas mulheres em São Petersburgo.
:)) Que tipo de bobagem não se pode escrever a partir de uma mente louca. Esse sou eu.

Tudo isso é bom, e boa sorte para você também, assim como para todos os outros!

 
Leo59:

Você está certo, você não deve ficar olhando para o pão de outra pessoa.

É uma cidade incrível, Barcelona. Só o bonde, colocado entre gramados verdes, o que vale! Mas as mulheres de lá na Espanha são de pescoço curto e cabeça dura, não como nossas mulheres em São Petersburgo.
:)) Que tipo de bobagem não se pode escrever quando se está realmente de ressaca. Esse sou eu.

Tudo isso é bom, e boa sorte para você também, assim como para todos os outros!


Não estou falando de um "pão", mas de um método de aprendizagem mais produtivo, para que "não doa dolorosamente durante os anos desperdiçados"!

Bem, a cada um o seu! :(

 
artmedia70:

Talvez tente desta forma:

Introduziu um símbolo e um magik nas variáveis a serem passadas. Você não tem um controle sobre eles.




Obrigado! Vou tentar na segunda-feira. Embora, a questão ainda não esteja clara para mim. Se eu quiser fechar qualquer pedido, por que recebo um erro? A propósito, eu terei que tentar o mesmo código no antigo testador. O novo testador tem muitas pequenas mudanças. Nem sempre tenho certeza de qual será o resultado.
 
001:


Obrigado! Vou tentar na segunda-feira. Embora, a questão ainda não esteja clara para mim. Se eu quiser fechar qualquer pedido, por que recebo um erro? A propósito, eu terei que tentar o mesmo código no antigo testador. O novo testador tem muitas pequenas mudanças. Nem sempre tenho certeza de qual será o resultado.

Não consigo me lembrar agora... Se você quiser fechar toda a Venda, não precisa voltar da função. Fiz asneira durante o sono. É assim que se faz para fechar todos eles:

//+------------------------------------------------------------------+
void  CheckForLongetivityClose_Sell(int symbol, int magic) {
   if(DayOfWeek()==0 || DayOfWeek()==6) return;
   for(int i=OrdersTotal()-1; i>=0; i--) {
      if(OrderSelect(i,SELECT_BY_POS)) {
         if(OrderMagicNumber()!=magic) continue;
         if(OrderSymbol()!=symbol)     continue;
         if(OrderType()!=OP_SELL)      continue;
         datetime openTime_S= OrderOpenTime();
         int timeDistance_S = TimeCurrent()-openTime_S;
         if(timeDistance_S>60*BarrierMinute_S) {
            bool  res= OrderClose(OrderTicket(),OrderLots(),Ask,3,clrRed);
            }
         }
      }
}
//+------------------------------------------------------------------+

Em geral, é claro, em vez desta linha

bool  res= OrderClose(OrderTicket(),OrderLots(),Ask,3,clrRed);

Você tem que chamar uma função normal para fechar posições que tenham processamento de código de retorno pelo servidor.

Razão: