[INVALID STOPS] Ordens não abrem

Para adicionar comentários, por favor Faça o login ou registrar
Henrique Araújo
51
Henrique Araújo  

Estou desenvolvendo um EA de cruzamento de medias, não dá erros de compilação, mas as ordens não abrem, ele da erro.

2019.07.04 12:35:20.732 2019.06.03 01:16:35   failed market buy 5.00 EURUSD sl: -28.88274 tp: 31.11726 [Invalid stops]
2019.07.04 12:35:20.732 2019.06.03 01:16:35   CTrade::OrderSend: market buy 5.00 EURUSD sl: -28.88274 tp: 31.11726 [invalid stops]
2019.07.04 12:35:20.732 2019.06.03 01:16:36   failed market buy 5.00 EURUSD sl: -28.88275 tp: 31.11725 [Invalid stops]
2019.07.04 12:35:20.732 2019.06.03 01:16:36   CTrade::OrderSend: market buy 5.00 EURUSD sl: -28.88275 tp: 31.11725 [invalid stops]
2019.07.04 12:35:20.733 2019.06.03 01:16:38   failed market buy 5.00 EURUSD sl: -28.88274 tp: 31.11726 [Invalid stops]
2019.07.04 12:35:20.733 2019.06.03 01:16:38   CTrade::OrderSend: market buy 5.00 EURUSD sl: -28.88274 tp: 31.11726 [invalid stops]
2019.07.04 12:35:20.737 2019.06.03 01:16:39   failed market buy 5.00 EURUSD sl: -28.88275 tp: 31.11725 [Invalid stops]
2019.07.04 12:35:20.737 2019.06.03 01:16:39   CTrade::OrderSend: market buy 5.00 EURUSD sl: -28.88275 tp: 31.11725 [invalid stops]
2019.07.04 12:35:20.737 2019.06.03 01:16:40   failed market buy 5.00 EURUSD sl: -28.88274 tp: 31.11726 [Invalid stops]
2019.07.04 12:35:20.737 2019.06.03 01:16:40   CTrade::OrderSend: market buy 5.00 EURUSD sl: -28.88274 tp: 31.11726 [invalid stops]
2019.07.04 12:35:20.738 2019.06.03 01:16:42   failed market buy 5.00 EURUSD sl: -28.88275 tp: 31.11725 [Invalid stops]
2019.07.04 12:35:20.738 2019.06.03 01:16:42   CTrade::OrderSend: market buy 5.00 EURUSD sl: -28.88275 tp: 31.11725 [invalid stops]

Aqui está o codigo:


//+------------------------------------------------------------------+
//|                                                   Cruzamento.mq5 |
//|                                                  Henrique Araújo |
//|                                              araujo_br@yahoo.com |
//+------------------------------------------------------------------+
#property copyright "Henrique Araújo"
#property link      "araujo_br@yahoo.com"
#property version   "1.00"
#include <Trade/Trade.mqh>
CTrade       trade;

input int media_curta;
input int media_longa;
input int lotes;
input int stop_loss;
input int take_profit;
string sinal="";
double last_price;
double smaArray[];
int smaHandle;
double ask, bid;
void OnTick()
  { 
   
    Comment("SINAL: ", sinal);
    ask = SymbolInfoDouble(_Symbol,SYMBOL_ASK);
    bid = SymbolInfoDouble(_Symbol,SYMBOL_BID);
    last_price = SymbolInfoDouble(_Symbol,SYMBOL_LAST);
    smaHandle = iMA(_Symbol,_Period,media_curta,0,MODE_SMA,PRICE_CLOSE);
    ArraySetAsSeries(smaArray, true);
    CopyBuffer(smaHandle, 0, 0, 3, smaArray);
    
    if(last_price>smaArray[0])
    {
    sinal="COMPRA";
    trade.Buy(lotes,_Symbol,ask,ask-stop_loss,ask+take_profit,"");
    }
    
    else if (last_price<smaArray[0])
    {
    sinal="VENDA";
    }
    
    
  }

EDIT

O problema é o take profit e o stop loss, removendo ele o EA funciona perfeitamente.

Flavio Jarabeck
35342
Flavio Jarabeck  
Henrique Araújo:

Estou desenvolvendo um EA de cruzamento de medias, não dá erros de compilação, mas as ordens não abrem, ele da erro.

Aqui está o codigo:


EDIT

O problema é o take profit e o stop loss, removendo ele o EA funciona perfeitamente.

Não existe Stop Loss negativo.
Trader_Patinhas
827
Trader_Patinhas  

Além do stop-loss negativo, o take-profit da ordem de compra também está um valor muito abaixo do preço de mercado do EURUSD.

Com esses valores de SL e TP a ordem jamais vai ser aceita.

Eduardo Oliveira
656
Eduardo Oliveira  
verifica suas variáveis, ASK BID são e estão como Double mas seu SL e TP como Inteiros....estranho isso
Rogerio Figurelli
Moderador
60240
Rogerio Figurelli  
Henrique Araújo:

Estou desenvolvendo um EA de cruzamento de medias, não dá erros de compilação, mas as ordens não abrem, ele da erro.

Aqui está o codigo:


EDIT

O problema é o take profit e o stop loss, removendo ele o EA funciona perfeitamente.

Olá  Henrique Araújo, seu problema é muito simples: você está confundindo valor absoluto (preço) e relativo (pontos, pips, etc.) de S/L.

Como na função a ser passada você deve passar um preço para S/L, deve antes converter seu S/L em pontos (int) para um preço (double), como o exemplo abaixo (em metalinguagem):

S/L (preço) = Ask - S/L (pontos) * Point();

Sds.,
Rogério Figurelli


 

Para adicionar comentários, por favor Faça o login ou registrar