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

 

Olá a todos, eu escrevi um EA! No testador, tudo funciona, mas na conta real, ele se recusa a abrir posições! Note que ele fecha posições abertas manualmente muito bem, mas, precisamente para abrir, não quer ... O que fazer?


CÓDIGO:


//+------------------------------------------------------------------+
//| DOKTRADE.mq4 |
//| DOKSTER@YANDEX.RU |
//| DOKSTER@YANDEX.RU |
//+------------------------------------------------------------------+
#propriedade copyright "DOKSTER@YANDEX.RU"
#link da propriedade "DOKSTER@YANDEX.RU

duplo LOT externo = 0,01; // LOTES
duplo KOF externo = 2;
SAF duplo externo = 5;
FRC externo int = 21;

int start()

{


int CNT;

int TOTAL;
int SPREAD;

SPR duplo;
SPRW duplo;

FRCU duplo;
FRCU duplo; FRCD duplo;

duplo EMAH;
duplo EMAM;;
EMAL duplo;

duplo OPEN;
fechamento duplo;

duplo DFB;
DFS duplo;

EMAH = iMA(NULL,0,34,8,MODE_SMA,PRICE_HIGH,1);
EMAM = iMA(NULL,0,34,8,MODE_SMA,PRICE_MEDIAN,1);
EMAL = iMA(NULL,0,34,8,MODE_SMA,PRICE_LOW,1);

OPEN = iOpen(NULL,0,1);
CLOSE = iClOSE(NULL,0,1);

FRCU = Alto[iHighest(NULL,0,MODE_HIGH,FRC,1)];
FRCD = Baixo[iLowest(NULL,0,MODE_LOW,FRC,1)];

DFB = (CLOSE-FRCD);
DFS = (FRCU-CLOSE);

SPR = MarketInfo(Symbol(),MODE_SPREAD);
SPRW = (SPR*Point);

TOTAL = EncomendasTotal();

if(TOTAL<1)

{

{ se (OPEN<EMAH&&CLOSE>EMAH)

OrderSend(Symbol(),OP_BUY,LOT,Ask,3,FRCD-(SAF*Point),CLOSE+(DFB*KOF), "DOKTRADE",15775,0,Green);


se (OPEN>EMAL&&CLOSE<EMAL)

OrderSend(Symbol(),OP_SELLL,LOT,Bid,3,FRCU+((SAF*Point)+SPRW),CLOSE-(DFS*KOF), "DOKTRADE",15885,0,Red);

retorno(0);

}
}

for(CNT=0;CNT<TOTAL;CNT++)

{

OrderSelect(CNT,SELECT_BY_POS,MODE_TRADES);

{

se (OrderType()==OP_BUY && OrderSymbol()==Symbol())

{

se (OPEN>EMAL&&CLOSE<EMAL)

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);

retorno(0);

}

se (OrderType()==OP_SELL && OrderSymbol()==Symbol())

{

se (OPEN<EMAH&&CLOSE>EMAH)

OrderClose(OrderTicket(),OrderLots(),Ask,3,Blue);

retorno(0);

}

}

}

}
 

Boa tarde!

Pessoal, por favor, me ajudem a descobrir onde estou indo errado. Eu tenho o indicador Aroon Up&Dn.

Estou tentando colocá-lo em meu Conselheiro Especialista. Ele não quer abrir pedidos:

extern int     _Aroon_Period = 14;
extern int     _TimeF = 60;
extern int     _Point = 10;
extern double  _lots=0.01;
extern int     _Prof = 150;
int start()
  {
//----
   double _Up1, _Up2, _Dn1, _Dn2;
   if (Volume[0]>1) return;
   if (_Point<MarketInfo(Symbol(),MODE_STOPLEVEL)) _Point=MarketInfo(Symbol(),MODE_STOPLEVEL);
   _Up1=iCustom(NULL,_TimeF,"Aroon_Up_Down",_Aroon_Period,1,1); // пробовал 0 и AroonUpBuffer
   _Up2=iCustom(NULL,_TimeF,"Aroon_Up_Down",_Aroon_Period,1,2);
   _Dn1=iCustom(NULL,_TimeF,"Aroon_Up_Down",_Aroon_Period,2,1);
   _Dn2=iCustom(NULL,_TimeF,"Aroon_Up_Down",_Aroon_Period,2,2);  // пробовал 1 и AroonDnBuffer

   if (_Up1>_Dn1  && _Up2<_Dn2) 
   
   {      
       _OrderDelete(OP_SELLSTOP);
      _price=NormalizeDouble((High[1]+_Point*Point),MarketInfo(Symbol(),MODE_DIGITS));
      _OrderModify(OP_SELL);
      OrderSend(Symbol(),OP_BUYSTOP,_lots,_price,5,0,_price+_Prof*Point,0,0,0,Green);
   }
   if ( _Up1<_Dn1  && _Up2>_Dn2 ) 
   
   {     
      _OrderDelete(OP_BUYSTOP);
      _price=NormalizeDouble((Low[1]-_Point*Point),MarketInfo(Symbol(),MODE_DIGITS));
      _OrderModify(OP_BUY);
      OrderSend(Symbol(),OP_SELLSTOP,_lots,_price,5,0,_price-_Prof*Point,0,0,0,Red);
   }

//---- OrderSendError
   return(0);
  }
Arquivos anexados:
 
7sintez:

Olá a todos, eu escrevi um EA! No testador, tudo funciona, mas na conta real, ele se recusa a abrir posições! Note que ele fecha posições abertas manualmente muito bem, mas, precisamente para abrir, não quer ... O que eu faço?


Antes de mais nada, veja os erros no log... Para parâmetros de preço ao enviar um pedido NormalizeDouble é altamente recomendado.

 
splxgf:

Para começar, veja os erros no diário de bordo... Para parâmetros de preço ao enviar um pedido NormalizeDouble é altamente recomendado.

Obrigado pela dica, mas se você puder ser mais específico... Não consigo ver nada em meu diário, exceto sincronização! Por favor, aconselhe, pode ser algo a acrescentar em algum lugar? Sim, e fecha normalmente... Ie no fechamento tudo funciona...!
 
E outra pergunta - a operação de qualquer outro roteiro pode afetar o funcionamento desta EA?
 
Terminado com NormalizeDouble... Nenhuma reação! O que devo mudar nos ajustes?
 
splxgf:

Você pode ir a https://docs.mql4.com/ru/array/ArrayMaximum

em um conjunto de Altos.

Se você puder ser mais específico, eu não conseguiria descobrir. Eu preciso encontrar o maior valor entre Alto[i] e Alto[1]. Obrigado!
 
93408:

Boa tarde!

Pessoal, por favor, me ajudem a descobrir onde estou indo errado. Eu tenho o indicador Aroon Up&Dn.

Estou tentando colocá-lo em meu Conselheiro Especialista. Ele não quer abrir pedidos:


Acho que por causa disso

se (Volume[0]>1) retornar;

 
7sintez:
Obrigado pela dica, mas se você puder ser mais específico... Porque o registro não mostra nada além da sincronização! Por favor, aconselhe, pode ser algo a acrescentar em algum lugar? Sim, e fecha normalmente... Isto é, ao fechar tudo funciona...!

Na verdade, é um absurdo fazer tais perguntas a um escritor especialista :) Portanto, você não está maduro o suficiente para ser um iniciante. Se você quiser verificar as posições e os valores limite para a proximidade do preço aberto, você provavelmente aprenderá uma ou duas coisas sobre gramática chinesa.
 
Roger:


Acho que é por isso.

se (Volume[0]>1) retornar;

Não, não é isso.

Obrigado a todos, eu tenho-o. Funcionou