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
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?
é 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.
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.
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.
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.
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
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