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
Fórum de negociação, sistemas de negociação automatizados e testes de estratégias de negociação
Encerramento de operações após X minutos da abertura - erro
bool_el, 2019.06.30 16:34
Fala pessoal, tudo certo?
Estou desenvolvendo um código para encerramento de todas posições após 30 minutos da abertura, mas está dando erro...
Já li as bibliotecas, mas não consegui corrigir.
Se alguém puder me ajudar, agradeço muito!!!
Fórum de negociação, sistemas de negociação automatizados e testes de estratégias de negociação
take profit na média móvel
forgottenn, 2019.06.30 15:33
Olá
Estou tentando programar um take profit na média móvel e estou tentando usar a função trade.PositionModify porém sem sucesso até o momento. Criei uma funçao void para isso e usei NormalizeDouble e usei um array para armazenar os dados.
Estou dando os primeiros passos em programação MQL se alguém puder me ajudar e me mostrar se estou no caminho certo.
Fórum de negociação, sistemas de negociação automatizados e testes de estratégias de negociação
Conversão de indicador MQL4 para MQL5
Igor Martins, 2019.06.26 12:51
Preciso converter o código abaixo para MQL5. A compilação apresenta muitos erros! Alguém pode me ajudar?
//+------------------------------------------------------------------+
//| Currency Strength Meter.mq4 |
//| Copyright 2018, Besarion Turmanauli |
//| https://www.mql5.com/en/users/dos.ge |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, Besarion Turmanauli"
#property link "https://www.mql5.com/en/users/dos.ge"
#property version "1.00"
#property strict
#property indicator_separate_window
#property indicator_minimum 0
#property indicator_maximum 100
#property indicator_buffers 4
#property indicator_plots 4
//--- plot Label1
//#property indicator_label1 "Label1"
#property indicator_type1 DRAW_LINE
#property indicator_color1 clrRed
#property indicator_style1 STYLE_SOLID
#property indicator_width1 1
//--- plot Label2
//#property indicator_label2 "Label2"
#property indicator_type2 DRAW_LINE
#property indicator_color2 clrViolet
#property indicator_style2 STYLE_SOLID
#property indicator_width2 1
//--- plot Label3
//#property indicator_label3 "Label3"
#property indicator_type3 DRAW_LINE
#property indicator_color3 clrGreen
#property indicator_style3 STYLE_SOLID
#property indicator_width3 1
//--- plot Label4
//#property indicator_label4 "Label4"
#property indicator_type4 DRAW_LINE
#property indicator_color4 clrBlue
#property indicator_style4 STYLE_SOLID
#property indicator_width4 1
//--- indicator buffers
double Label1Buffer[];
double Label2Buffer[];
double Label3Buffer[];
double Label4Buffer[];
#define ISN "Currency Strength Meter"
int initial_limit=0;
extern string instrOne = "EURUSD"; //Instrument 1
extern string instrTwo = "AUDUSD"; //Instrument 2
extern string instrThree= "NZDUSD"; //Instrument 3
extern string instrFour = "USDJPY"; //Instrument 4
extern color colorOne=clrRed; //Instrument 1 Color
extern color colorTwo=clrViolet; //Instrument 2 Color
extern color colorThree=clrGreen; //Instrument 3 Color
extern color colorFour= clrBlue; //Instrument 4 Color
extern int indicatorPeriod = 14; //Indicator Period
extern ENUM_APPLIED_PRICE appliedPrice=PRICE_CLOSE; //Indicator Applied Price
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
if(!LabelCreate(0,instrOne,1,5,20,CORNER_LEFT_LOWER,instrOne,"Arial",10,colorOne))
{
return (0);
}
if(!LabelCreate(0,instrTwo,1,75,20,CORNER_LEFT_LOWER,instrTwo,"Arial",10,colorTwo))
{
return (0);
}
if(!LabelCreate(0,instrThree,1,145,20,CORNER_LEFT_LOWER,instrThree,"Arial",10,colorThree))
{
return (0);
}
if(!LabelCreate(0,instrFour,1,215,20,CORNER_LEFT_LOWER,instrFour,"Arial",10,colorFour))
{
return (0);
}
SetLevelValue(0,80.0);
SetLevelValue(1,50.0);
SetLevelValue(2,20.0);
//--- indicator buffers mapping
SetIndexBuffer(0,Label1Buffer);
SetIndexLabel(0,instrOne);
SetIndexStyle(0,0,0,1,colorOne);
SetIndexBuffer(1,Label2Buffer);
SetIndexLabel(1,instrTwo);
SetIndexStyle(1,0,0,1,colorTwo);
SetIndexBuffer(2,Label3Buffer);
SetIndexLabel(2,instrThree);
SetIndexStyle(2,0,0,1,colorThree);
SetIndexBuffer(3,Label4Buffer);
SetIndexLabel(3,instrFour);
SetIndexStyle(3,0,0,1,colorFour);
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int i,// Bar index
Counted_bars; // Number of counted bars
Counted_bars=IndicatorCounted(); // Number of counted bars
i=Bars-Counted_bars-1; // Index of the first uncounted
if(initial_limit==0){initial_limit=i;}
while(i>0)
{//start iteration
//getting initial values
double open=Open[i];
double high=High[i];
double low=Low[i];
double close=Close[i];
Label1Buffer[i]=iRSI(instrOne,Period(),indicatorPeriod,PRICE_CLOSE,i);
Label2Buffer[i]=iRSI(instrTwo,Period(),indicatorPeriod,PRICE_CLOSE,i);
Label3Buffer[i]=iRSI(instrThree,Period(),indicatorPeriod,PRICE_CLOSE,i);
Label4Buffer[i]=iRSI(instrFour,Period(),indicatorPeriod,PRICE_CLOSE,i);
i--;
}//end iteration
return (0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int deinit()
{
LabelDelete(0,instrOne);
LabelDelete(0,instrTwo);
LabelDelete(0,instrThree);
LabelDelete(0,instrFour);
return(0);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Create a text label |
//+------------------------------------------------------------------+
bool LabelCreate(const long chart_ID=0, // chart's ID
const string name="Label", // label name
const int sub_window=0, // subwindow index
const int x=0, // X coordinate
const int y=0, // Y coordinate
const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER, // chart corner for anchoring
const string text="Label", // text
const string font="Arial", // font
const int font_size=10, // font size
const color clr=clrRed, // color
const double angle=0.0, // text slope
const ENUM_ANCHOR_POINT anchor=ANCHOR_LEFT_UPPER, // anchor type
const bool back=false, // in the background
const bool selection=false, // highlight to move
const bool hidden=true, // hidden in the object list
const long z_order=0) // priority for mouse click
{
//--- reset the error value
ResetLastError();
//--- create a text label
if(!ObjectCreate(chart_ID,name,OBJ_LABEL,sub_window,0,0))
{
Print(__FUNCTION__,
": failed to create text label! Error code = ",GetLastError());
return(false);
}
//--- set label coordinates
ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
//--- set the chart's corner, relative to which point coordinates are defined
ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
//--- set the text
ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
//--- set text font
ObjectSetString(chart_ID,name,OBJPROP_FONT,font);
//--- set font size
ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);
//--- set the slope angle of the text
ObjectSetDouble(chart_ID,name,OBJPROP_ANGLE,angle);
//--- set anchor type
ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);
//--- set color
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- display in the foreground (false) or background (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- enable (true) or disable (false) the mode of moving the label by mouse
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- hide (true) or display (false) graphical object name in the object list
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- set the priority for receiving the event of a mouse click in the chart
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- successful execution
return(true);
}
//+------------------------------------------------------------------+
//| Delete a text label |
//+------------------------------------------------------------------+
bool LabelDelete(const long chart_ID=0, // chart's ID
const string name="Label") // label name
{
//--- reset the error value
ResetLastError();
//--- delete the label
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
": failed to delete a text label! Error code = ",GetLastError());
return(false);
}
//--- successful execution
return(true);
}
//+------------------------------------------------------------------+
Fórum de negociação, sistemas de negociação automatizados e testes de estratégias de negociação
Como enviar ordens pendentes?
Edilson Domingos, 2019.07.01 18:47
Estou desenvolvendo um EA e não estou conseguindo criar uma ordem pendente!
O que está de errado?
Fórum de negociação, sistemas de negociação automatizados e testes de estratégias de negociação
Como colocar uma string no eixo X de um gráfico em MQL5
brfink, 2019.07.02 01:10
Olá,
Eu gostaria de editar os valores que aparecer no eixo X do seguinte gráfico:
Eu gostaria de adicionar a legenda no eixo X mas usando uma string, como por exemplo:
Segue o código fonte atual:
Obrigado!Fórum de negociação, sistemas de negociação automatizados e testes de estratégias de negociação
Informações sobre mais de um ativo
jdmaster, 2019.07.02 02:33
Boa noite amigo, estou usando o código abaixo para receber as informações do mini índice, porém, meu robô tb abre posições no índice cheio...então pergunto, como posso receber informações do índice cheio tb? ou seja, quero receber informações de ambos os ativos.
Agradeço sua ajuda.
Fórum de negociação, sistemas de negociação automatizados e testes de estratégias de negociação
Erro ao copiar DIDI index em um EA.
Rogerio Giannetti Torres, 2019.07.02 19:53
Boa tarde,
1) Use o ALT-S para postar códigos.
2) Você copiou sem procurar entender minha sugestão, entao:
2.1) O HANDLE dos indicadores devem ser criados somente uma vez de prefêrencia no OnInit(), então retire a criação do HANDLE dentro do OnTick(). (*)
2.2) Teste o retorno da criação do HANDLE dos três.
3) Bom dia Rogerio, obrigado pela ajuda, mas ainda ha algo errado, me parece ser algo relacionado a inserção do indicador DIDI e a janela de visualização.
Se você acha que é isso por que não testou, ainda?
if(!ChartIndicatorAdd(0,subwindow,indicator_handle))
{
PrintFormat("Falha para adicionar indicador MACD na janela do gráfico %d. Código de erro %d",
subwindow,GetLastError());
}
3) Feito as alterações, compile e plugue o programa na janela gráfica e veja o resultado na aba EXPERTS.
(*) Nas situações que precisar criar o mesmo handle com novos operadores o handle corrente deve ser liberado usando o comando IndicatorRelease( handle );
Fórum de negociação, sistemas de negociação automatizados e testes de estratégias de negociação
MqlTick.flags zerado
Trader_Patinhas, 2019.07.03 05:08
dvd, isso está acontecendo porque vc está tratando o campo "flags" como um único número inteiro, em vez de verificar cada flag isoladamente.
Para resolver o seu problema, basta ignorar esses flags extras não documentados (que estão variando de um ativo pro outro, gerando o problema que você relata).
Uma forma simples de fazer isso é fazer flags &= 0x07F (ou flags %= 128, se preferir, dá no mesmo), daí vc vai poder comparar o campo "flags" como se fosse 1 único número inteiro, pois assim vc estará pegando somente os flags de 0 a 6 (documentados) e zerando os flags 7 e 8 (não documentados) e todos os demais flags (9, 10, etc.) que possam vir a aparecer no futuro.
Se preferir uma solução menos "nerd" e mais profissional, faça um "bitwise-and" entre o campo "flags" e o(s) flag(s) específico(s) que for(em) de interesse na lógica de processamento que estiver implementando.
Exemplos:
if ( flags & TICK_FLAG_BUY ) ...
if ( flags & ( TICK_FLAG_BID | TICK_FLAG_ASK) ) ...
etc
Dessa forma, quaisquer flags alienígenas não-documentados que vierem acesos ocasionalmente não interferirão mais na sua lógica de processamento.
Fórum de negociação, sistemas de negociação automatizados e testes de estratégias de negociação
Informações sobre mais de um ativo
Rogerio Giannetti Torres, 2019.07.02 04:14
Bom, acredito que você queira trabalhar concomitantemente com os dois ativos, então:
Fórum de negociação, sistemas de negociação automatizados e testes de estratégias de negociação
[INVALID STOPS] Ordens não abrem
Henrique Araújo, 2019.07.04 17:38
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.