Quem pode ajudar com o robô, por que ele não está funcionando? - página 2

 
Alexey Volchanskiy:

As regras de linguagem não permitem que parâmetros com valores padrão sejam engolidos. Se você tiver que definir a cor das setas, escreva todos os parâmetros à esquerda da cor. B slippage 3 não é suficiente, se for 5 dígitos, haverá solicitações, eu escrevi 50. E SL e TP não devem ser colocados a zero,Aleksey Vakhrushev já escreveu sobre isso.


É um erro:

O valor de retorno do 'OrderSend' deve ser verificado
 
GIM:

Erro:

O valor de retorno do 'OrderSend' deve ser verificado
Isto é apenas um aviso. O arquivo será compilado.
 

Boa tarde, por favor, ajude. O conselheiro só abre para vender.


Lotes duplos externos=0,1;
externo int FastMAPeriod=14;
método FastMAMethod=0; // 0-SMA, 1-EMA, 2-SMMA, 4-LWMA
externo int FastMAPrice=0; // 0-Close, 1-Aberto, 2-Alto, 3-Baixo, 4-Mediano, 5-Típico, 6-Peso
externo int SlowMAPeriod=42;
Método SlowMAMethod=0; // 0-SMA, 1-EMA, 2-SMMA, 4-LWMA
externo int SlowMAPrice=0; // 0-Close, 1-Aberto, 2-Alto, 3-Baixo, 4-Mediano, 5-Típico, 6-Peso
externo int TP=0; //takeprofit
externo int SL=0; //stop loss

int BuyTicket,SellTicket;



int start(){

double fast_ma1=iMA(NULL,0,FastMAPeriod,0,FastMAPmethod,FastMAPrice,1);
double slow_ma1=iMA(NULL,0,SlowMAPeriod,0,SlowMAMethod,SlowMAPrice,1);
double fast_ma2=iMA(NULL,0,FastMAPeriod,0,FastMAPmethod,FastMAPrice,2);
double slow_ma2=iMA(NULL,0,SlowMAPeriod,0,SlowMAMethod,SlowMAPrice,2);


if(fast_ma1>slow_ma1 && !(fast_ma2>slow_ma2)){
if(SellTicket!=0){ //True se SellTicket não for 0 ;

SellTicket=0;
}
if(BuyTicket==0){ //// Verdadeiro se BuyTicket for 0;
BuyTicket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL=Ask-SL*Point,Ask+TP*Point,NULL,0,0,CLR_NONE);
}
}
if(fast_ma1<slow_ma1 && !(fast_ma2<slow_ma2)){
if(BuyTicket!=0){ //verdadeiro se BuyTicket não for 0 ;
BuyTicket=0;
}
if(SellTicket==0){ //True if(SellTicket igual a 0
SellTicket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid-SL*Point,Bid+TP*Point,NULL,0,0,CLR_NONE);
}
}

retorno(0);
}

 
Alexey Kozitsyn:
Isto é apenas um aviso. O arquivo será compilado.
Bem, ainda não abriu o negócio.....
 
GIM:
Ainda não abrindo o negócio.....
Bem, acho que não é esse o caso... Embora valha a pena dar uma olhada no diário de bordo para ver o que ele diz. Bem, isso é apenas uma opção.
 
Alexey Kozitsyn:
Bem, eu acho que não era para ser... Embora valha a pena dar uma olhada na revista para ver o que ela diz. Bem, essa é uma opção.
Obrigado! (Risos) Vou continuar tentando)))
 
AdikAmir:

Boa tarde, por favor, ajude.EA só abre para venda.


Lotes duplos externos=0,1;
externo int FastMAPeriod=14;
método FastMAMethod=0; // 0-SMA, 1-EMA, 2-SMMA, 4-LWMA
externo int FastMAPrice=0; // 0-Close, 1-Aberto, 2-Alto, 3-Baixo, 4-Mediano, 5-Típico, 6-Peso
externo int SlowMAPeriod=42;
Método SlowMAMethod=0; // 0-SMA, 1-EMA, 2-SMMA, 4-LWMA
externo int SlowMAPrice=0; // 0-Close, 1-Aberto, 2-Alto, 3-Baixo, 4-Mediano, 5-Típico, 6-Peso
externo int TP=0; //takeprofit
externo int SL=0; //stop loss

int BuyTicket,SellTicket;



int start(){

double fast_ma1=iMA(NULL,0,FastMAPeriod,0,FastMAPmethod,FastMAPrice,1);
double slow_ma1=iMA(NULL,0,SlowMAPeriod,0,SlowMAMethod,SlowMAPrice,1);
double fast_ma2=iMA(NULL,0,FastMAPeriod,0,FastMAPmethod,FastMAPrice,2);
double slow_ma2=iMA(NULL,0,SlowMAPeriod,0,SlowMAMethod,SlowMAPrice,2);


if(fast_ma1>slow_ma1 && !(fast_ma2>slow_ma2)){
if(SellTicket!=0){ //True se SellTicket não for 0 ;

SellTicket=0;
}
if(BuyTicket==0){ //// Verdadeiro se BuyTicket for 0;
BuyTicket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL=Ask-SL*Point,Ask+TP*Point,NULL,0,0,CLR_NONE);
}
}
if(fast_ma1<slow_ma1 && !(fast_ma2<slow_ma2)){
if(BuyTicket!=0){ //verdadeiro se BuyTicket não for 0 ;
BuyTicket=0;
}
if(SellTicket==0){ //True if(SellTicket igual a 0
SellTicket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid-SL*Point,Bid+TP*Point,NULL,0,0,CLR_NONE);
}
}

retorno(0);
}

É um código estranho que eu nunca tinha visto antes.

As variáveis BuyTicket e SellTicket serão iguais a zero ou incompreensíveis cada vez que um novo tick chegar porque não são inicializadas.

A construção if(fast_ma1>slow_ma1 && !(fast_ma2>slow_ma2)) não é nada clara quando traduzida para a linguagem humana esta condição se parece com esta

se fast_ma1 é maior que slow_ma1 E NOT fast_ma2 é maior que slow_ma2. O ! operador significa negação desta forma: if(fast_ma1>slow_ma1 && (fast_ma2<slow_ma2))

Sua condição se mantém quando fast_ma1>slow_ma1 = verdadeiro (verdadeiro) e fast_ma2>slow_ma2 = falso (falso)

....
if (OrdersTotal()==0)
{
  if (условие на покупку)
  {
    ticet = OrderSend(Symbol(),OP_BUY,.....);
    if (ticet==0) Print("ERROR");
  }
  if (условие на продажу)
  {
    ticet = OrderSend(Symbol(),OP_SELL,.....);    
    if (ticet==0) Print("ERROR");
  }

}
//Простейший код для примера.
 
Vitalii Ananev:

Este é um código estranho que eu nunca tinha visto antes.

As variáveis BuyTicket e SellTicket serão iguais a zero ou incompreensíveis cada vez que um novo tick chegar porque não são inicializadas.

A construção if(fast_ma1>slow_ma1 && !(fast_ma2>slow_ma2)) não é nada clara quando traduzida para a linguagem humana esta condição se parece com esta

se fast_ma1 é maior que slow_ma1 E NOT fast_ma2 é maior que slow_ma2. O ! operador significa negação desta forma: if(fast_ma1>slow_ma1 && (fast_ma2<slow_ma2))

Sua condição se mantém quando fast_ma1>slow_ma1 = verdadeiro (verdadeiro) e fast_ma2>slow_ma2 = falso (falso)

Eu coloco seu código de qualquer forma A posição de venda não é aberta, sua COMPRA apenas.
 
AdikAmir:
Eu coloco seu código ainda não abre posição de Venda, apenas COMPRAR.

Lotes duplos externos=0,1;
duplo FastMAPeriod=5;
método FastMAMethod=0; // 0-SMA, 1-EMA, 2-SMMA, 4-LWMA
externo int FastMAPrice=0; // 0-Close, 1-Aberto, 2-Alto, 3-Baixo, 4-Mediano, 5-Típico, 6-Peso
externo int SlowMAPeriod=75;
método SlowMAMethod=3; // 0-SMA, 1-EMA, 2-SMMA, 4-LWMA
externo int SlowMAPrice=3; // 0-Close, 1-Aberto, 2-Alto, 3-Baixo, 4-Mediano, 5-Típico, 6-Peso
externo int TP=500; //takeprofit
externo int SL=250; //stop loss
duplo tiquetaque;

int start(){

double fast_ma1=iMA(NULL,0,FastMAPeriod,0,FastMAPmethod,FastMAPrice,1);
double slow_ma1=iMA(NULL,0,SlowMAPeriod,0,SlowMAMethod,SlowMAPrice,1);
double fast_ma2=iMA(NULL,0,FastMAPeriod,0,FastMAPmethod,FastMAPrice,2);
double slow_ma2=iMA(NULL,0,SlowMAPeriod,0,SlowMAMethod,SlowMAPrice,2);

se (OrderTotal()==0)
{
if (fast_ma1>slow_ma1 && (fast_ma2<slow_ma2))
{ ticet = OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Ask-SL*Point,Ask+TP*Point,NULL,0,0,CLR_NONE);
se (ticet==0) Imprimir("ERROR");
}
if (slow_ma1>fast_ma1 && (slow_ma2<fast_ma2))
{
ticet = OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid-SL*Point,Bid+TP*Point,NULL,0,0,CLR_NONE);
se (ticet==0) Imprimir("ERROR");
}

}

retorno(0);
}




 
Precisamos mudar os sinais ao calcular SL /TP
ticet = OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+SL*Point,Bid-TP*Point,NULL,0,0,CLR_NONE);
Razão: