Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
este é meu último código. não posso pensar em nada errado exceto que ele não está me dando os resultados que eu quero
//+------------------------------------------------------------------+ //| RSI_strategy_cyxstudio.mq4 | //| Copyright 2013, Tjipke de Vries | //| https://forum.mql4.com/53695/ | //+------------------------------------------------------------------+ #property copyright "Copyright 2013, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" #include <stderror.mqh> #include <stdlib.mqh> extern int RSIPeriod = 2; //number of periods for RSI extern double UpperBound = 95; //set upper bound value for RSI extern double LowerBound = 5; //set lower bound value for RSI extern double Lots = 0.1; extern double StopLoss = 60; //Set the stop loss level extern double TakeProfit = 120; //Set the take profit level extern double TrailingStop = 40; //extra settings for OrderSend extern int MagicNumber = 54333; extern string CommentEA = "RSI strategy"; extern int Slippage.Pips = 3; //--- //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- Alert(OrdersTotal()); //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- int Ticket1; int Ticket2; bool Ticket3; bool Ticket4; double SL,TP; int Total; double MagicNo; double Slippage; int cnt; double pAsk = MarketInfo(Symbol(), MODE_ASK); double pBid = MarketInfo(Symbol(), MODE_BID); double MA200 = iMA(NULL, 1440, 200, 0,MODE_SMA,PRICE_CLOSE, 0); //200 day Moving Average double MA5 = iMA(NULL, 1440, 5, 0,MODE_SMA,PRICE_CLOSE, 0); // 5 day Moving Average double CurrentRSI = iRSI (NULL, 0, RSIPeriod,PRICE_CLOSE ,0); double PrevRSI = iRSI (NULL, 0, RSIPeriod,PRICE_CLOSE ,1); double LastRSI = iRSI (NULL, 0, RSIPeriod,PRICE_CLOSE ,2); if(Bars<100) { Print("bars less than 100"); return(0); } if(AccountFreeMargin()<(1000*Lots)) { Print("We have no money. Free Margin = ", AccountFreeMargin()); return(0); } //Check for open orders if there are none then check for conditions to open one if (OrdersTotal() ==0 && LastRSI > PrevRSI && PrevRSI > CurrentRSI && CurrentRSI < LowerBound && pAsk > MA200) { //Condition to execute buy entry Ticket1 = OrderSend(Symbol(), OP_BUY, Lots, pAsk, Slippage.Pips, pBid - ( StopLoss * Point ), pAsk + ( TakeProfit * Point ), "Buy.", MagicNumber,0,Yellow); //execute buy order if(Ticket1>0) { if(OrderSelect(Ticket1,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice()); } if (Ticket1 < 0) { Print("Error opening BUY order : ",GetLastError()); return(0); } if (OrdersTotal() ==0 && LastRSI < PrevRSI && PrevRSI < CurrentRSI && CurrentRSI > UpperBound && pBid < MA200) { //Condition to execute sell entry Ticket2 = OrderSend(Symbol(), OP_SELL, Lots, pBid, Slippage.Pips, pAsk + ( StopLoss * Point ), pBid - ( TakeProfit * Point ), "Sell.",MagicNumber, 0, Yellow) ; //execute sell order if(Ticket2>0) { if(OrderSelect(Ticket2,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice()); } if (Ticket2<0) { Print("Error opening SELL order : ",GetLastError()); return(0); } } } int ticket=OrderTicket(); double lots=OrderLots(); for (int i = OrdersTotal() - 1; i >= 0; i--) { if (OrderSelect(i, SELECT_BY_POS)) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) { if (OrderType() == OP_BUY && pBid > MA5) { Ticket3 = OrderClose(ticket, lots, pBid, Slippage.Pips); if (Ticket3 == true ) { Print("BUY position closed", OrderClosePrice()); } if (Ticket3 == false) { Print("Error closing BUY position", ErrorDescription(GetLastError())); } } if (OrderType() == OP_SELL && pBid < MA5) { Ticket4 = OrderClose(ticket, lots, pAsk, Slippage.Pips); if (Ticket4 == true ) { Print("SELL position closed", OrderClosePrice()); } if (Ticket4 == false) { Print("Error closing SELL position", ErrorDescription(GetLastError())); } } } } } return(0); }Se você olhar a página 2 deste tópico, você pode encontrar o que eu lhe dei
Este é o início.....
Dê seu comentário ..... sobre o que é diferente do seu até agora...
Depois faça uma leitura em https://www.mql5.com/en/forum/139654 e tente fazer uma contagem regressiva das operações de verificação
Como você pode ver, eu pedi para fazer uma contagem regressiva das operações de verificação
Esse é meu próximo passo dentro do código
Eu só lhe peço essa parte do código
fazer com que conte as operações de compra e venda separadamente
Se você olhar a página 2 deste tópico, você pode encontrar o que eu lhe dei
eu o removi porque não sabia como usá-lo. você me deu o código parcialmente eu não conseguia ver como ele funciona.
--
Este é o início.....
Dê seu comentário ..... sobre o que é diferente do seu até agora...
Depois faça uma leitura em https://www.mql5.com/en/forum/139654 e tente fazer uma contagem regressiva das operações de verificação
Como você pode ver, eu pedi para fazer uma contagem regressiva das operações de verificação
Esse é meu próximo passo dentro do código
Eu só lhe peço essa parte do código
fazer com que conte as operações de compra e venda separadamente
como esta?
int ticket=OrderTicket();//blocos de códigos a executar
}
eu o removi porque não sabia como usá-lo. você me deu o código parcialmente eu não conseguia ver como ele funciona.
O momento em que a EA recomeça
BUYS está ajustado para 1
SELLS está ajustado para 1
OrdensTotal() está dando total de todas as negociações em aberto em sua conta
Pode ser zero, então não temos negócios abertos e não precisamos verificar se há negócios desta EA
SeEncomendasTotal() > 0 COMPRAR Fica 1 e VENDER Fica 1
precisamos verificar nesse caso se é de nossa EA e temos que contar os diferentes tipos (comprar,vender,buylimit....)
portanto
como esta?
int ticket=OrderTicket();//blocos de códigos a executar
}
Use o botão SRC
Este loop só começamos ( para que condição )
Como você sabe que o comércio selecionado no loop é de compra ou venda?
E como você os conta ??
Use o botão SRC
Este loop só começamos ( para que condição )
Como você sabe que o comércio selecionado no loop é de compra ou venda?
E como você os conta ??
oportunidades.
if (OrderType() == OP_BUY && pBid > MA5) { Ticket3 = OrderClose(ticket, lots, pBid, Slippage.Pips); if (Ticket3 == true ) { Print("BUY position closed", OrderClosePrice()); } if (Ticket3 == false) { Print("Error closing BUY position", ErrorDescription(GetLastError())); } } if (OrderType() == OP_SELL && pBid < MA5) { Ticket4 = OrderClose(ticket, lots, pAsk, Slippage.Pips); if (Ticket4 == true ) { Print("SELL position closed", OrderClosePrice()); } if (Ticket4 == false) { Print("Error closing SELL position", ErrorDescription(GetLastError())); } } }para a função de comércio fechado.
usando
if (OrderType() == OP_SELL && pBid < MA5)para diferenciar compra e venda.
há algo de errado com minhas condições para abrir a ordem?
shud eu o removo e substituo pelo laço que usei para a função de fechamento do pedido?
oportunidades.
para a função de comércio fechado.
usando
para diferenciar compra e venda.
há algo de errado com minhas condições para abrir a ordem?
shud eu o removo e substituo pelo laço que usei para a função de fechamento do pedido?
Neste momento você tem que verificar se já existe um comércio aberto
antes de abrir um negócio, você tem que saber se há um negócio aberto
ainda não consigo ver que você fez a contagem dos negócios
.
Dê uma olhada no código da Média Móvel EA em sua estação metatrader e veja como ela é feita lá ....