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 514

 
Mr.Profit:

Boa tarde!

Como lutar com o "MetaEditor não encontrado" ao tentar editar um EA? MetaTrader build 600.

Parece que não me lembro de tal problema em construções mais antigas.

Pode ser explicado pelo fato de que o computador em que estou trabalhando é de baixa potência e carregado 50-75% do tempo. Tenho 7 instâncias MT4 rodando nele, mas em condições normais (isto é, sem carga externa como acesso via TeamViewer e tentando lançar o MetaEditor) seu desempenho é suficiente, e o Task Manager rodando em segundo plano mostra o uso de CPU avg <=45-50% durante 15-20 min.

Este problema não ocorre em 100% dos casos e o MetaEditor, após demonstrar paciência e persistência incomuns, funcionará todas as vezes da 5ª-10ª-25ª vez. Mas é realmente irritante tentar iniciar o MetaEditor por meia hora.

Com tais perguntas você deve ir para a 610ª linha de construção - os desenvolvedores estão lá
 
r772ra:



Obrigado.

Por favor, avise, desde que não tenha colocado nenhuma cerca.

O que poderia ser feito mais simples?

input int    Slippage   = 10;   // установим значение проскальзывания 
extern string ___START_SETUP_ = "---ОСНОВА---";  
input double StartLot   = 0.02; 
extern double LotMultiplicator = 1.3;
extern int N_LotMult = 2;
extern string ___STEP_SETUP_BLOK_ = "--- БЛОК УСЛОВИЙ СЕТКИ ---";
extern int Mode_Step = 1;
extern int Step = 5;
extern int StepUv_Step = 5;
extern string ___CLOSE_SETUP_BLOK_ = "--- БЛОК УСТАНОВОК ЗАКРЫТИЯ ---";
extern int TakeProfit = 40;


double z,y, lot=StartLot, count, step=Step;

  
void OnTick()
  {  
   
     int i_buy=0; int i_sell=0;
     for(int i=0;i<OrdersTotal();i++){
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true && OrderSymbol()==Symbol()){
              switch(OrderType()){// Есть ли открыте ордера
                 case OP_BUY:
                    i_buy++;
                 break;
                 case OP_SELL:
                    i_sell++;
                 break;
               }
               
              y = int((OrderOpenPrice()-Ask)/Point); 
              z = OrderLots();
              
              count++;            
          }   
     }
    
     if(LotMultiplicator > 1 && count > N_LotMult) lot = z + z/LotMultiplicator;    
     if(Mode_Step==1) step = Step + count*StepUv_Step;

     if((i_buy==0 && i_sell==0) || y >= step) //--- нет открытых ордеров, открываем
         OrderSend(Symbol(), OP_BUY,lot,Ask,Slippage,0,Ask+TakeProfit*Point(),WindowExpertName()+" "+(string)0,0,0,clrBlue);
     
       count=0;
   
 
Zolotai:


Obrigado.

Por favor, avise, desde que não tenha colocado nenhuma cerca.

O que poderia ser feito mais simples?


POR FAVOR, aprenda como inserir o código corretamente! CTRL+ALT+M ou SRC.
 
evillive:
POR FAVOR, aprenda como inserir o código corretamente! CTRL+ALT+M ou SRC.

Feito.
 
Zolotai:


Spc.

Por favor, avise, desde que não tenha colocado nenhuma cerca.

O que poderia ser feito mais simples?


E não há erros de compilação? E nenhum erro de execução também?

Primeiro descreva com o que você quer acabar. Porque há perguntas sobre alguns lugares no código:

 y = int((OrderOpenPrice()-Ask)/Point); //подставьте в уравнение реальные цены
if((i_buy==0 && i_sell==0) || y >= step) //--- нет открытых ордеров, открываем открывает позицию всегда когда y >= step, а это будет практически всегда по формуле выше, за исключением коридора шириной в "step"
 
evillive:

E não há erros de compilação? E nenhum erro de execução também?

Primeiro, descreva com o que você quer acabar, pois há perguntas sobre alguns lugares no código:




Existe algo que poderia ser simplificado? Talvez algumas variáveis extras... Tudo o que eu tenho agora é abrir em etapas, aumentando o lote e pronto. Não preciso de TP ainda. É possível torná-lo um pouco mais simples, menos codificado...
 
Existe muito dele? Não há nada para simplificar, pelo contrário, deve ser agravado ))))
 
evillive:
Existe muito dele? Não há nada para simplificar, pelo contrário, deve ser agravado ))))

Obrigado. Você poderia sugerir uma função? Se eu quiser fazer uma ordem de parada e retirada com a última ordem, então a primeira ordem será calculada como média. A segunda a última encomenda com a primeira e assim por diante. Como se fôssemos para o meio...
 
Tenho certeza de que há muitos netizens na kodobase - médios, martins, anti-martins, para todos os gostos.
 
evillive:
Tenho certeza de que há muitos netizens na kodobase - médios, martins, anti-martins, para todos os gostos.

Sim, mas, você sabe. Você tem que mexer nos códigos das outras pessoas. O que eu não entendo, e isso leva muito tempo Para descobri-lo.