[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 892

 

Oi! Não consigo entender o que há de errado com ???? Não modifica ordem de mercado
slb =NormalizeDouble(Bid - (StopLoss * Ponto),Dígitos); // calcular stop para posições de compra//
tpb =NormalizeDouble(Ask + (TakeProfit* Ponto),Dígitos); // calcular lucro para posições de compra//
sls =NormalizeDouble(Ask + (StopLoss * Ponto),Dígitos) // cálculo de parada para posições de vendas//
tps =NormalizarDuas(Bid - (TakeProfit* Point),Dígitos);

// //
int total=OrdensTotal();
int n=0;
for (int i=total-1; i>=0; i--)
{
if(OrderSelect(i, SELECT_BY_POS))
{
if(OrderSymbol()==Symbol())
{
n+++;
}}}
if ( total === 1 )
{
for (int k=total-1; k>=0; k--)
{
if(OrderSelect(k, SELECT_BY_TICKET)
Alerta("order is", k);
{
if ((OrderType()==OP_BUY)&&(OrderTakeProfit()==0)&&(O rderStopLoss()==0))
{
OrderModify(k,OrderOpenPrice(),slb,tpb,0,Blue);
Alert("error", GetLastError());

}}}}
return(0);}

QUAL É O PROBLEMA, POR FAVOR AJUDE ...........?????

 

A pergunta de qualquer novato, para não desorganizar o fórum. Não deixe os profissionais passarem por você. Não é em lugar nenhum sem você.

 
belck:

A pergunta de qualquer novato, para não desorganizar o fórum. Não deixe os profissionais passar por você. Em nenhum lugar sem você.

Qual é o seu objetivo? É como se você tivesse permissão para perguntar sobre o tempo... ou saúde... :))))))
 


Desculpe, eu não entendo qual é o problema. Eu acho que nunca cumpro a condição de while, porque se eu colocar Comentário dentro do loop, ele não é refletido. Também acima do loop eu tenho a variável B igual ao valor normal esperado, como 0,0011, mas se eu multiplicá-lo por Ponto, ele sai 0!!!!

int start()

{
double A,B,C ;A=Close[1];B=Close[Bars];
C=A-B ;Comentário("Valor da diferençai ", B*Point);
while (B*Point >Swing)
{ Comentário("Valor da diferença", B);
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-stoploss*Point,Ask+TakeProfit*Point,"macd sample",16384,0,Green);}

while (0-B*Point<Point)
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+stoploss*Point,Bid-TakeProfit*Point,"macd sample",16384,0,Red);

Alerta("Valor ",B);

Comentário("Diferença de valori ",B);

//

//
return(0);
}

 

Não tenho certeza, mas a maneira correta seria

int start()

{
duplo A,B,C ;A=Fechar[1];B=Fechar[barras]; O que significa Fechar[barras]; Fechar[seqüência de números de barras para trás, sem corrente].

velas anteriores fechadas[1]. velas anteriores fechadas[2].

B=(A-B)*Ponto ; Comentário("Valor da diferença", B); B será igual ao fechamento da vela anterior menos o fechamento da vela que você colocou em B= fechamento [....
while (B > B) e muito provavelmente não enquanto a condição
{ Comment("Value Difference ", B);
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-stoploss*Point,Ask+TakeProfit*Point, "macd sample",16384,0,Green);

}

while (0-B<Round) e muito provavelmente não enquanto uma condição de if

{

OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+stoploss*Point,Bid-TakeProfit*Point, "macd sample",16384,0,Red);
}
Alerta("Valor ",B);

Comentário("Diferença de valori ",B);

//

//
return(0);
}
Pode estar errado.....

 
Obrigado!!! Vou tentar. Durante três dias eu não consigo descobrir o que está errado, tecnicamente tudo parece certo.
 
Não, é a mesma coisa. Obrigado pela resposta. Eu não sei qual é o problema.
 

Há muitos erros em seu código ...... o que você quer fazer com que resultado???? Não deve haver cartas russas...

Você não pode ter C na planilha porque C tem um número na memória como 1,23456

0-B seria um número negativo....

 

e é melhor calcular os lucros e perdas da seguinte forma

slb =NormalizeDouble(Bid - (StopLoss * Ponto),Dígitos); // calcular stop para posições de compra//
tpb =NormalizeDouble(Ask + (TakeProfit* Ponto),Dígitos); // calcular lucro para posições de compra//
sls =NormalizeDouble(Ask + (StopLoss * Ponto),Dígitos) // calcular parada para posições de vendas//
tps =NormalizarDuplo(Bid - (TakeProfit* Point),Dígitos); // calcular lucro para posições de vendas//

 
Dimka-novitsek:


Desculpe, eu não entendo qual é o problema. Eu acho que nunca cumpro a condição de while, porque se eu colocar Comentário dentro do loop, ele não é refletido. Também acima do loop eu tenho a variável B igual ao valor normal esperado, como 0,0011, mas se eu multiplicá-lo por Ponto, ele sai 0!!!!

int start()

{
double A,B,C ;A=Close[1];B=Close[Bars];
C=A-B ;Comentário("Valor da diferençai ", B*Point);
while (B*Point >Swing)
{ Comentário("Valor da diferença", B);
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-stoploss*Point,Ask+TakeProfit*Point,"macd sample",16384,0,Green);}

while (0-B*Point<Point)
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+stoploss*Point,Bid-TakeProfit*Point,"macd sample",16384,0,Red);

Alerta("Valor ",B);

Comentário("Diferença de valori ",B);

//----

//----
return(0);
}

E você está cortejando a necessidade de multiplicar a diferença entre A e B por ponto?

Os valores de A e B são números reais. Ao multiplicar sua diferença por ponto, você aumenta ainda mais o número de casas decimais. Se você precisar obter um número inteiro para comparar com um número inteiro "Espalhado", você deve dividir por ponto.