Pode por favor aconselhar-me como escrever correctamente o código ao negociar EA em MT4, sou muito novo em programação.
Tenho de seleccionar a última ordem fechada e comparar o seu lucro. Não tenho de fazer nada se o seu lucro for superior a 0, se for inferior a 0, tenho de fazer algo.
Pode por favor aconselhar-me como escrever correctamente o código ao negociar EA em MT4, sou muito novo em programação.
Tenho de seleccionar a última ordem fechada e comparar o seu lucro. Não tenho de fazer nada se o seu lucro for superior a 0, se for inferior a 0, tenho de fazer algo.
Tenho muito respeito, Alexandre.
//+------------------------------------------------------------------+datetime time=0; double profit=0,lots=0;
for(int i=OrdersHistoryTotal()-1; i>=0; i--)
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
if(OrderSymbol()==_Symbol)
if(OrderMagicNumber()==MagicNumber || MagicNumber==-1)
if(OrderCloseTime()>time) // находим последний в истории ордер
{
time=OrderCloseTime(); // запомним время
profit=OrderProfit(); // запомним профит
his_lt=OrderLots(); // запомним лот
}
if(profit<0) //если профит меньше нуля
lots=his_lt*2; // Увеличим в два раза//+------------------------------------------------------------------+
Pergunto-me para que serve a hora, porque se lembra da hora de encerramento, se de qualquer forma escolhe a última da lista, e o que acontece com o ciclo? E porque não considera a troca e a comissão? Mesmo se OrderProfit()>0, o lucro real pode ser negativo. Se trabalhar directamente com a lista de encomendas, então não deve deixar peças do código do laço à procura da última encomenda a ser fechada. Uma coisa é ou fiabilidade e certeza ou rapidez. E tem um miscelânea.
Artyom Trishkin: Pergunto-me para que serve a hora, porque se lembra da hora de encerramento, se de qualquer forma escolhe a última da lista, e o que acontece com o ciclo? E porque não considera a troca e a comissão? Mesmo se OrderProfit()>0, o lucro real pode ser negativo. Se trabalhar directamente com a lista de encomendas, então não deve deixar peças do código do laço à procura da última encomenda a ser fechada. Uma coisa é ou fiabilidade e certeza ou rapidez. O que tem é um emaranhado.
Aconselha-se como fechar uma encomenda aberta em MQL4 em MT4 após 20 barras, ou seja, se uma encomenda for aberta e aparecerem 20 novas barras, esta é fechada. (Apenas 1 encomenda está sempre aberta). Este código não funciona no testador de estratégias por alguma razão.
O código tem o seguinte significado: verificamos se temos alguma ordem em aberto; se não, abrimos uma ordem e registamos na variável "z" o preço aberto da 1ª barra e depois, a cada tique, verificamos o preço aberto da 20ª barra e quando a 1ª barra eventualmente atingir a 20ª barra, o seu preço será o mesmo que o preço registado na variável "z" e depois a ordem será fechada. (claro que durante o processo, os preços podem coincidir, mas será muito raro, além disso, podemos escrever mais parâmetros da 1ª barra em variáveis)
double z; //объявление переменной//ОТКРЫТИЕ ОРДЕРАif(OrdersTotal() == 0) // если нет открытых ордеров то открывать ордер
{
OrderSend(Symbol(), OP_SELL, 0.1, Bid, 3, Bid+150*Point, Bid-10*Point);
z = Open[1]; // здесь переменной "z" присваивается цена открытия 1-го бара
}
elsePrint("ORDER NE USTANOVLEN!!!");
//ЗАКРЫТИЕ ОРДЕРАif (z==Open[20]) //если цена записанная в переменную "z" равна цене 20-го бара, то закрывать ордер
{
//-----------------код закрывает все ордера--------------------bool result;
int error;
while (OrdersTotal()>0)
{
if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
{ if(OrderType()==OP_BUY) result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),MarketInfo(OrderSymbol(),MODE_DIGITS)),3,CLR_NONE);
if(OrderType()==OP_SELL) result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),MarketInfo(OrderSymbol(),MODE_DIGITS)),3,CLR_NONE);
if (OrderType()==OP_BUYLIMIT || OrderType()==OP_BUYSTOP || OrderType()==OP_SELLLIMIT || OrderType()==OP_SELLSTOP)
OrderDelete(OrderTicket());
if(result!=TRUE) { error=GetLastError();
Print("LastError = ",error, " ",Symbol()); }
else error=0; }
elsePrint( "Error when order select ", GetLastError());
}
//------------конец кода закрывающего ордер------------------
}
elsePrint("ORDER NE ZAKRYT!!!");
Aconselha-se como fechar uma encomenda aberta em MQL4 em MT4 após 20 barras, ou seja, quando uma encomenda é aberta e aparecem 20 novas barras, esta é fechada. (apenas 1 encomenda está sempre aberta). Por alguma razão, este código não funciona no testador de estratégias, e nós precisamos dele para o fazer.
O código tem o seguinte significado: verificamos se temos alguma ordem em aberto, se não, abrimos uma ordem e registamos na variável "z" o preço aberto da 1ª barra e depois, a cada tique, verificamos o preço aberto da 20ª barra e quando a 1ª barra eventualmente atingir a 20ª barra, o seu preço será o mesmo que o preço registado na variável "z" e depois a ordem será fechada. (claro que durante o processo, os preços podem coincidir, mas será muito raro, além disso, podemos escrever mais parâmetros da 1ª barra em variáveis)
É isso, eu próprio o descobri, devia ter declarado a variável fora do início da int() - agora funciona bem
Este valor é totalmente diferente, e no segundo caso, de acordo com o gráfico, não poderia haver tal valor durante pelo menos várias horas
No Testador de Estratégia todas as carraças estão em modo comercial, tenho a sensação de que se não for o par principal, os valores no Testador de Estratégia são aproximados
Esqueci-me de acrescentar que isto é Meta Trade 5
Descobri que a primeira vez que o faço, o preço está errado e a segunda vez que o faço, o preço é normal
1. Pode descobrir a partir da história quantos carrapatos subiram e desceram em volume de carrapatos?
2.Já passaram alguns meses desde que apaguei a autocarte, mas as mensagens de registo continuam a aparecer. O software continua a tentar abrir os ficheiros.
Como apagar completamente a autocarte?
2015.05.25 15:36:42.983 Cannot open file 'C:\Users\asus\AppData\Roaming\MetaQuotes\Terminal\................................\MQL4\indicators\Autochartist Volatility.ex4' [2]
2015.05.25 15:36:42.983 Cannot open file 'C:\Users\asus\AppData\Roaming\MetaQuotes\Terminal\................................\MQL4\indicators\Autochartist Key Levels.ex4' [2]
2015.05.25 15:36:42.982 Cannot open file 'C:\Users\asus\AppData\Roaming\MetaQuotes\Terminal\................................\MQL4\indicators\Autochartist Chart Patterns.ex4' [2]
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
Boa tarde.
Pode por favor aconselhar-me como escrever correctamente o código ao negociar EA em MT4, sou muito novo em programação.
Tenho de seleccionar a última ordem fechada e comparar o seu lucro. Não tenho de fazer nada se o seu lucro for superior a 0, se for inferior a 0, tenho de fazer algo.
Tenho muito respeito, Alexandre.
Boa tarde.
Pode por favor aconselhar-me como escrever correctamente o código ao negociar EA em MT4, sou muito novo em programação.
Tenho de seleccionar a última ordem fechada e comparar o seu lucro. Não tenho de fazer nada se o seu lucro for superior a 0, se for inferior a 0, tenho de fazer algo.
Tenho muito respeito, Alexandre.
Pergunto-me para que serve a hora, porque se lembra da hora de encerramento, se de qualquer forma escolhe a última da lista, e o que acontece com o ciclo? E porque não considera a troca e a comissão? Mesmo se OrderProfit()>0, o lucro real pode ser negativo. Se trabalhar directamente com a lista de encomendas, então não deve deixar peças do código do laço à procura da última encomenda a ser fechada. Uma coisa é ou fiabilidade e certeza ou rapidez. O que tem é um emaranhado.
O que está a sugerir é que
Fazem isto?
A pessoa só pediu uma ordem de lucro, porquê impor o que não pediu? Mas concordo consigo ....
Aconselha-se como fechar uma encomenda aberta em MQL4 em MT4 após 20 barras, ou seja, se uma encomenda for aberta e aparecerem 20 novas barras, esta é fechada. (Apenas 1 encomenda está sempre aberta). Este código não funciona no testador de estratégias por alguma razão.
O código tem o seguinte significado: verificamos se temos alguma ordem em aberto; se não, abrimos uma ordem e registamos na variável "z" o preço aberto da 1ª barra e depois, a cada tique, verificamos o preço aberto da 20ª barra e quando a 1ª barra eventualmente atingir a 20ª barra, o seu preço será o mesmo que o preço registado na variável "z" e depois a ordem será fechada. (claro que durante o processo, os preços podem coincidir, mas será muito raro, além disso, podemos escrever mais parâmetros da 1ª barra em variáveis)
Aconselha-se como fechar uma encomenda aberta em MQL4 em MT4 após 20 barras, ou seja, quando uma encomenda é aberta e aparecem 20 novas barras, esta é fechada. (apenas 1 encomenda está sempre aberta). Por alguma razão, este código não funciona no testador de estratégias, e nós precisamos dele para o fazer.
O código tem o seguinte significado: verificamos se temos alguma ordem em aberto, se não, abrimos uma ordem e registamos na variável "z" o preço aberto da 1ª barra e depois, a cada tique, verificamos o preço aberto da 20ª barra e quando a 1ª barra eventualmente atingir a 20ª barra, o seu preço será o mesmo que o preço registado na variável "z" e depois a ordem será fechada. (claro que durante o processo, os preços podem coincidir, mas será muito raro, além disso, podemos escrever mais parâmetros da 1ª barra em variáveis)
É isso, eu próprio o descobri, devia ter declarado uma variável fora do início da int() - agora funciona bem
Simplifiquei um pouco o vosso código, mas ainda há erros no vosso código
Estou a escrever um EA multi-divisas mas não consigo entender porque é que devolve preços diferentes ao mesmo tempo se o ligo a moedas diferentes
Em suma, o código:
no Init
em OnTimer()
Se eu testar a minha EA no EURNZD, por exemplo
2015.05.18 00:07:00 Lat Perguntar: 1.5370
Se eu utilizar qualquer outro par de moedas
2015.05.18 00:07:00 Lat Perguntar: 1.5323
Este valor é totalmente diferente, e no segundo caso, de acordo com o gráfico, não poderia haver tal valor durante pelo menos várias horas
No Testador de Estratégia todas as carraças estão em modo comercial, tenho a sensação de que se não for o par principal, os valores no Testador de Estratégia são aproximados
Esqueci-me de acrescentar que isto é Meta Trade 5
Descobri que a primeira vez que o faço, o preço está errado e a segunda vez que o faço, o preço é normal
Como apagar completamente a autocarte?