[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 17

 

Olá! A pergunta é como saber se o objeto é excluído manualmente se só conhecemos a descrição do objeto. isto é, objeto com nome desconhecido , take profit é anexado ao objeto , se o objeto é excluído remove take profit , e não sabemos o nome do objeto ....

Há alguma forma de mudar o nome do objeto ????

 

Por favor, ajude-me a refinar a EA! Quero que ela abra uma ordem quando o sinal chegar, quando a próxima chegar, e assim por diante, independentemente de haver ou não ordens abertas.

Por favor, diga-me o que está errado!

 m0=iMA(NULL,0,PeriodMA,0,MODE_SMA,PRICE_CLOSE,0);
    m1=iMA(NULL,0,PeriodMA,0,MODE_SMA,PRICE_CLOSE,1);
    lwma=iMA(NULL,0,PeriodLWMA,0,MODE_LWMA,PRICE_CLOSE,0);
    lwma1=iMA(NULL,0,PeriodLWMA,0,MODE_LWMA,PRICE_CLOSE,1);
    sar=iSAR(NULL,0,step,maximum,0);
    sar1=iSAR(NULL,0,step,maximum,1);
//+------------------------------------------------------------------+
   
      Lots=NormalizeDouble(AccountFreeMargin(),0)*MaxRisk/1000;
     if(Lots<0.01) 
    return(Lot);
//--------------------------------------------------------------------
    balans=NormalizeDouble(AccountFreeMargin(),2);
//--------------------------------------------------------------------
   total=OrdersTotal();
   if(OrdersTotal()>=0)
     {
   x=1;
   x++;  
//==========================Медленный==================================
   if( m1>lwma1 && m0<lwma && balans>0 && total<x)
     {
     ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+sl*Point,Ask-tp*Point,"0",Magik,0,Red);
     }
   if(ticket>0)
     {
     Alert("Продажа №",ticket,"\n",Symbol());
     return(0);
     }
//-------------------------------------------------------------------- 
   if ( m1<lwma1 && m0>lwma && balans>0 && total<x)
    {
      ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-sl*Point,Bid+tp*Point,"0",Magik,0,Blue);
     }
  if(ticket>0)
     {
      Alert("Покупка № ",ticket,"\n",Symbol());
      return(0);  
     }
//========================Быстрый=====================================
   
    if(sar1<Bid && sar>Ask && balans>0 && total<x)
      {
       ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+sl1*Point,Ask-tp1*Point,"0",Magik1,0,Red); return;
      }
    if(ticket>0)
      {
      Alert("Продажа №",ticket,"\n",Symbol());
       return(0);
      }
//---------------------------------------------------------------------
  if(sar1>Ask && sar<Bid && balans>0 && total<x)
      {
      ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-sl1*Point,Bid+tp1*Point,"0",Magik1,0,Blue);
      }
   if(ticket>0)
     {
         Alert("Покупка №",ticket,"\n",Symbol());
         return(0);
        }
       }
 

deadlock.....

if(Ma_1>Ma_2 && flagg==0) {PlaySound("news.wav"); flagg=1; flag=0; }

if(Ma_1<Ma_2 && flag==0) {PlaySound("ok.wav"); flag=1; flagg=0; }

Imprimir(bandeira,bandeirag);

Ma_1 - curto
Ma_2 - longo

quando Ma_1>Ma_2 apita news.wav sem parar, e imprime 0 1 (ou seja, flag=0 flagg=1)

mas como pode ser que quando flagg=1, a condição (Ma_1>Ma_2 && flagg==0) é cumprida e {PlaySound("news.wav") passa ???

 
Olá a todos, preciso refazer o EA para fechar todas as posições após uma certa porcentagem da quantia inicial da quantia solicitada, ou seja, se nenhum pedido estiver aberto, por exemplo, a solicitação de 1000 e a % da solicitação está definida em 5%, portanto fecha todas as posições com a solicitação 1050, fiz com que o EA registrasse uma variável global e que ele tivesse esse valor lido e fechasse as posições, mas o EA não quer fechar,Eu fiz isso, o saldo aumenta e tenho que fechar algumas posições a 5% de "Equidade" mas não é 1050 e às vezes tenho que esperar um pouco mais, ou o preço muda de direção e eu recebo um prejuízo em vez de lucro, por favor, ajude quem sabe e enfrentou mudanças globais!!! Muito obrigado pela resposta.
Arquivos anexados:
 
Boa noite! Diga-me se entendi corretamente que em
iStochastic
modo
É a linha K ou D que estou me referindo? Além disso, 0 é K e 1 é D?
 

E olhe para uma variante como esta, sem variáveis globais.

if(Profit>AccountEquity( )*koefitsientudaleniya){  
   int Total=OrdersTotal();
    for( i=OrdersTotal()-1;i>=0;i--){
  OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
  if(OrderSymbol() != Symbol()) continue; 
   if (OrderMagicNumber() != 450) continue;
   if(OrderType()==OP_SELL) {
  OrderClose(OrderTicket(),OrderLots(),Ask,6,Red);Print(" i " , i,"  GetLastError()CloseOP_SELL ", GetLastError()  );}
   if(OrderType()==OP_BUY)  {
  OrderClose(OrderTicket(),OrderLots(),Bid,6,Red);Print(" i " , i,"  GetLastError()CloseOP_BUY ", GetLastError()  );}}} и виличины, закрываем все ордера!
//----
 
 
Sim, não deve haver nenhum sinal antes de você trocar de mashes!!! Tipo de... Provavelmente olhe para o código inteiro! Não sei, não parece mostrar...
 
eu preciso que o consultor se lembre do valor eQuity quando não há ordens abertas, por exemplo 1000 e como eu escrevi %-5 o valor eQuity é 1050 quando todas as posições são fechadas, eu consegui que algumas ordens sejam fechadas e o saldo aumenta, mas o lucro é negativo de todas as ordens e o consultor espera até que o lucro seja + e depois fecha todas as posições
 
lottamer:

deadlock.....

if(Ma_1>Ma_2 && flagg==0) {PlaySound("news.wav"); flagg=1; flag=0; }

if(Ma_1<Ma_2 && flag==0) {PlaySound("ok.wav"); flag=1; flagg=0; }

Imprimir(bandeira,bandeirag);

Ma_1 - curto
Ma_2 - longo

quando Ma_1>Ma_2 apita news.wav sem parar, e imprime 0 1 (ou seja, flag=0 flagg=1)

mas como pode ser que quando flagg=1, condição (Ma_1>Ma_2 && flagg==0) é cumprida e {PlaySound("news.wav") passa ???


Imprimir o estado das bandeiras separadamente para cada condição. Você conseguiu isso porque o estado da segunda bandeira não é levado em conta em condições.

P.S. E é mais conveniente imprimirPrint("flag=",flag, "flagg=",flagg) para evitar confusão;

 

É assim que eu tenho o robô na demonstração. Não me lembro em detalhes como tive a idéia de escrevê-la.

if(Profit>AccountBalance()*koefitsientudaleniya){
int Total=OrdersTotal();
for( i=OrdersTotal()-1;i>=0;i--){
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() != Symbol()) continua;
if(OrderMagicNumber() != 450) continua;
if(OrderType()==OP_SELL) {
OrderClose(OrderTicket(),OrderLots(),Ask,6,Red);Print(" i " i," GetLastError()CloseOP_SELLL ", GetLastError() );}
if(OrderType()==OP_BUY) {
OrderClose(OrderTicket(),OrderLots(),Bid,6,Red);Print(" i " i," GetLastError()CloseOP_BUY ", GetLastError() );}}} // Se o lucro exceder algum valor que especificamos, fechamos todas as ordens!
//----

Ou deixar que nossos amigos mais velhos nos aconselhem...