Maldito erro 130 para o inferno

 

Qualquer pessoa sabe porque eu estaria recebendo o erro 130, eu me certifiquei que meu SL é suficientemente amplo e que está do lado certo do mercado (ou seja, abaixo para uma compra). Qualquer ajuda seria muito apreciada e um grande suspiro de alívio*.

se(COMPRAR)
{
if(stoploss > 0) //SL está ajustado para 35
realSL = Ask - (stoploss * Point);
if(takeprofit > 0)
realTP = Ask + takeprofit * Ponto;
//BUYING!!
ticket = OrderSend(Symbol(), OP_BUY, lots, Ask, slippage, realSL, realTP, nameEA, 887722,0,0,Red);

if(ticket < 0)
Imprimir("OrderSend (",nameEA,") falhou com erro #", GetLastError()));
Alert("CODE_TEST: BUY BUY BUY");

Obrigado a todos,

Pat

 
FXpipclash:

Qualquer um sabe porque eu estaria recebendo o erro 130, eu me certifiquei que meu SL é suficientemente amplo e que está no lado certo do mercado (ou seja, abaixo para uma compra). Qualquer ajuda seria muito apreciada e um grande suspiro de alívio*.

se(COMPRAR)
{
if(stoploss > 0) //SL está ajustado para 35
realSL = Ask - (stoploss * Point);
if(takeprofit > 0)
realTP = Ask + takeprofit * Ponto;
//BUYING!!
ticket = OrderSend(Symbol(), OP_BUY, lots, Ask, slippage, realSL, realTP, nameEA, 887722,0,0,Red);

if(ticket < 0)
Imprimir("OrderSend (",nameEA,") falhou com erro #", GetLastError()));
Alert("CODE_TEST: BUY BUY BUY");

Obrigado a todos,

Pat

tente isto... Acho que você está se confundindo quando usar o Bid and Ask


se(COMPRAR)
{
if(stoploss > 0) //SL está ajustado para 35
realSL = Bid-(stoploss * Ponto);
if(takeprofit > 0)
realTP = Bid+ takeprofit * Ponto;
//BUYING!!
ticket = OrderSend(Symbol(), OP_BUY, lots, Ask, slippage, realSL, realTP, nameEA, 887722,0,0,Red);

if(ticket < 0)
Imprimir("OrderSend (",nameEA,") falhou com erro #", GetLastError()));
Alert("CODE_TEST: BUY BUY BUY");



************************************

Regra de ouro... se você entra no pedido, você sai com lance, se você entra no Bid, você sai com lance


LongStop = Bid-(stoploss*Point)

LongLimit =Bid+(limite*Ponto)

LongEntry= ASK

LongTrail = Bid-(stoploss*Point)



ShortStop = Ask+(stoploss*Point)

CurtoLimite =Ask-(limite*Ponto)

ShortEntry= BID

ShortTrail = Ask+(stoploss*Point)




Seawolf

 
seawolf wrote >>

tente isto... Acho que você está se confundindo quando usar o Bid and Ask

se(COMPRAR)
{
if(stoploss > 0) //SL está ajustado para 35
realSL = Bid-(stoploss * Ponto);
if(takeprofit > 0)
realTP = Bid+ takeprofit * Ponto;
//BUYING!!
ticket = OrderSend(Symbol(), OP_BUY, lots, Ask, slippage, realSL, realTP, nameEA, 887722,0,0,Red);

if(ticket < 0)
Imprimir("OrderSend (",nameEA,") falhou com erro #", GetLastError()));
Alert("CODE_TEST: BUY BUY BUY");

************************************

Regra de ouro... se você entra na licitação, você sai com a licitação, se você entra na licitação, você sai com a licitação

LongStop = Bid-(stoploss*Point)

LongLimit =Bid+(limite*Ponto)

LongEntry= ASK

LongTrail = Bid-(stoploss*Point)

ShortStop = Ask+(stoploss*Point)

CurtoLimite =Ask-(limite*Ponto)

ShortEntry= BID

ShortTrail = Ask+(stoploss*Point)

Seawolf

Obrigado por sua resposta Seawolf, então em meu código original, se eu vou comprar, não deveria usar o preço pedido para meu cálculo, porque esse será o preço que eu terei que pagar?

 
Quem é seu corretor?
 

é o preço que você paga entrando, mas você tem que cobrir o spread para pagar o outro preço saindo... o fato de que você está usando o pedido de entradas E saídas está absolutamente errado.


siga a regra do polegar que lhe dei e tudo funcionará bem. Sei que pode ser muito confuso, por isso o mantenho escrito em meu quadro branco e, após muitos anos de negociação e programação, ainda me refiro a ele quase diariamente. Encontrei muitos artigos que nem sequer acertam, portanto, não se sinta mal.

 

Hi

Embora o código original esteja errado porque você está usando Bid em vez de Ask para comprá-lo ainda deveria ter funcionado se o stoploss for realmente de 35 pontos. Certifique-se de que o sistema em que você está rodando não tenha mudado para 5 casas decimais, caso contrário, o prejuízo deve ser de 350 pontos. O Interbank estava rodando 5 casas decimais na demonstração, mas 4 no sistema ao vivo em um ponto.

 
FXpipclash:

Qualquer um sabe porque eu estaria recebendo o erro 130, eu me certifiquei que meu SL é suficientemente amplo e que está no lado certo do mercado (ou seja, abaixo para uma compra). Qualquer ajuda seria muito apreciada e um grande suspiro de alívio*.

if(BUYING)
{
if(stoploss > 0) //SL está ajustado para 35
realSL = Ask - (stoploss * Point);
if(takeprofit > 0)
realTP = Ask + takeprofit * Point;
//BUYING!!
ticket = OrderSend(Symbol(), OP_BUY, lots, Ask, slippage, realSL, realTP, nameEA, 887722,0,Red);

if(ticket < 0)
Print("OrderSend (",nameEA,") failed with error #", GetLastError());
Alert("CODE_TEST: BUY BUY BUY");

Obrigado a todos,

Pat

Bem, posso afirmar categoricamente que Seawolf e Ruptor estão falando fora de sua retaguarda coletiva.

Para um pedido OP_BUY, você está absolutamente correto ao usar o preço Ask para gerar seu preço de entrada e parar.

O que você precisa fazer é verificar os valores em suas paradas usando uma declaração Print("realSL =, "DoubleToStr(realSL,Digits)," realTP=",DoubleToStr(realTP,Digits)) diretamente antes do envio de seu pedido, a fim de garantir que os valores sejam os esperados. Se eles forem como você espera, então você deve verificar os valores aceitáveis usando a função MarketInfo() com o identificador MODE_STOPLEVEL.

 
Você está usando um corretor de 5 dígitos? Se sim, sua variável "Ponto" fará com que todos os seus SL/TPs fiquem em 1/10 do valor real.
 
cloudbreaker wrote >>

Bem, posso afirmar categoricamente que Seawolf e Ruptor estão falando fora de sua retaguarda coletiva.

Para um pedido OP_BUY, você está absolutamente correto ao usar o preço Ask para gerar seu preço de entrada e parar.

O que você precisa fazer é verificar os valores em suas paradas usando uma declaração Print("realSL =, "DoubleToStr(realSL,Digits)," realTP=",DoubleToStr(realTP,Digits)) diretamente antes do envio de seu pedido, a fim de garantir que os valores sejam os esperados. Se eles forem como você espera, então você deve verificar os valores aceitáveis usando a função MarketInfo() com o identificador MODE_STOPLEVEL.

Obrigado cloudbreaker, eu sabia que estava certo em pagar o pedido, não onde eu declaro que também estou pagando o pedido saindo do mercado, imprimir o valor SL é uma ótima idéia, obrigado por toda a sua contribuição.

 
eacoder wrote >>
Você está usando um corretor de 5 dígitos? Se sim, sua variável "Ponto" fará com que todos os seus SL/TPs fiquem em 1/10 do valor real.

Não estou usando a FXDD que é uma corretora de 4 dígitos, tudo isso é um tanto misterioso para mim, vou tentar

 
FXpipclash wrote >>

Obrigado cloudbreaker, eu sabia que estava certo em pagar o pedido, não onde é que alguma vez declaro que também estou pagando o pedido vindo do ofício, imprimir o valor SL é uma grande idéia, obrigado por toda a sua contribuição.

Allright Cloud, este estava me dando uma corrida pelo meu dinheiro, mas acho que resolvi, por alguma razão tanto o TP & SL estava sendo retrunido como 1.0 (muito pequeno) então eu rastreei minhas variáveis durante todo o processo e notei que declarei os valores takeprofit e stoploss como o dobro e os valores realSL realTP como inteiros, mudando o realTP & realSL para o dobro resolveu o problema, obrigado novamente.