Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 801
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
Eu não entendo qual é o problema?
int start()
{
bool i;
int ticket;
double Pricem;
datetime Timen;
string Symb=Symbol();
ticket=OrderSend(Symb,OP_SELL,0.1,Bid,3,Ask+4*Point,Ask-12*Point);
i=OrderSelect(0,SELECT_BY_POS);
while(true)
{
RefreshRates();
Timen=OrderCloseTime();
if(Timen>0)
{
Pricem=OrderClosePrice();
Alert(Pricem);
Alert("ордер закрылся");
Sleep(30000);
}
Sleep(10);
}
return;
}
Estou resolvendo a tarefa de fechar todos os gráficos abertos usando as ferramentas MQL4. Existem 3 gráficos abertos com diferentes pares de moedas e este é o código do roteiro:
Quando eu executo o roteiro, apenas um dos três gráficos é fechado e aqui estão as impressões do log:
Isso significa que, após o fechamento de um gráfico, o gráfico atual deve ser o outro, mas:
1. Após o primeiro gráfico ser fechado, a funçãoChartIDretorna o identificador do gráfico fechado em vez do atual
2. Afunção ChartClose() em 2 e 3 iterações retorna verdadeiro, o que significa que fecha com sucesso a janela já fechada...
Quem sabe onde está o bug e como resolver este problema?
Eu não entendo qual é o problema?
Uma mensagem de fechamento deve aparecer. A ordem abre, chega à parada, fecha e pronto! Onde está o erro?
Acho que OrderSelect() deve estar dentro de um laço de tempo, e além disso, o número de posição estará incorreto, porque depois de fechado se tornará diferente - neste caso é melhor selecionar a partir do bilhete
Estou resolvendo a tarefa de fechar todos os gráficos abertos usando as ferramentas MQL4. Existem 3 gráficos abertos com diferentes pares de moedas e este é o código do roteiro:
Quando eu executo o roteiro, apenas um dos três gráficos é fechado e aqui estão as impressões do log:
Isso significa que, após o fechamento de um gráfico, o gráfico atual deve ser o outro, mas:
1. Após o primeiro gráfico ser fechado, a funçãoChartIDretorna o identificador do gráfico fechado em vez do atual
2. Afunção ChartClose() em 2 e 3 iterações retorna verdadeiro, o que significa que fecha com sucesso a janela já fechada...
Quem sabe onde está o bug e como resolver este problema?
pako, às vezes funciona, às vezes não funciona, não sei porquê... Eu recebo um erro:
2014.12.11 17:52:12.456 Violação de acesso lido para 0x09295000 em 'C:\.....................ex4'.
Poderia ser porque está tentando fechar o gráfico em que o roteiro é jogado?
O PS funciona corretamente se o roteiro estiver anexado ao primeiro gráfico da esquerda. Mas se eu colocá-lo em qualquer outra tabela, recebo um erro
pako, às vezes funciona, às vezes não funciona, não sei porquê... Eu recebo um erro:
2014.12.11 17:52:12.456 Violação de acesso lido para 0x09295000 em 'C:\.....................ex4'.
Poderia ser porque está tentando fechar o gráfico em que o roteiro é jogado?
O PS funciona corretamente se o roteiro estiver anexado ao primeiro gráfico da esquerda. Mas se eu colocá-lo em qualquer outra tabela, recebo um erro
Rapazes, ajudem-me aqui
O problema é a seguinte função para traduzir a ordem em não-perda, ela começa a funcionar incorretamente se eu a colocar nos pares de ienes e permitir todas as ordens abertas em não-perda
deixo todos eles ok, mas em cinco dígitos ele volta a zero mesmo que eu o ajuste para cinco dígitos apenas, mas o melhor é que se eu o ajuste para cinco ele funciona ok
Qual a razão de tal trabalho? O que deve ser levado em conta nessas funções, para que a execução correta seja realizada e não dependa da operação da EA em que janela eu atirei três ou cinco dígitos?
Muito obrigado.
}
//==================================================================================================
// функция перевода ордеров стоп лоса в без убыток по всем открытым ордерам
//==================================================================================================
if(_Simbol==false)//если false то по всем ордерам открытым
{
for(int i=0;i<OrdersTotal();i++)//цикл перебора ордеров
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))//будем искать следующие
{
if(OrderType()==OP_BUY) //если тип бай
{
double bid=MarketInfo(OrderSymbol(),MODE_BID);//последний известный бид инструмента
double point=MarketInfo(OrderSymbol(),MODE_POINT);//чему равен пункт инструмента
if(OrderStopLoss()<OrderOpenPrice())//если стоп лос меньше цены открытия
{
if(bid-Dist_Perivoda*point>OrderOpenPrice())//бид-профит*пункт больше цены открытия
{//модифицируем стоп лос
bool ord_modifik=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+NormalizeDouble(Level_Zahiti*point,Digits),OrderTakeProfit(),0,clrNONE);
if(!ord_modifik)//если не получилось
Comment(GetLastError());//номер ошибки в угол
}
}
}
if(OrderType()==OP_SELL)//если тип селл
{
double ask=MarketInfo(OrderSymbol(),MODE_ASK);//последний известный аск инструмента
double point=MarketInfo(OrderSymbol(),MODE_POINT);//чему равен пункт инструмента
if(OrderStopLoss()==0||OrderStopLoss()>OrderOpenPrice())//если стоп лос больше цены открытия или равен нолю
{
if(ask+Dist_Perivoda*point<OrderOpenPrice())//аск +профит*пункт меньше цены открытия
{//модифицируем стоп лос
bool ord_modifik=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-NormalizeDouble(Level_Zahiti*point,Digits),OrderTakeProfit(),0,clrNONE);
if(!ord_modifik)//если не получилось
Comment(GetLastError());//номер ошибки в угол
}
}
}
}
}
}
Obrigado pelo código, entendo a essência, embora às vezes eu ainda receba um erro.
Experimentado com funções que mostram as IDs dos gráficos. O que é ChartFirst() da documentação não é absolutamente claro, pode-se interpretar de qualquer forma - pode ser a primeira carta aberta por ordem da esquerda, ou a primeira carta aberta de todas as cartas abertas (no tempo), ou a primeira aberta no terminal (a possibilidade de estar aberta agora é quase zero, portanto não faz sentido fechá-la). Estou mais inclinado a esta última versão, porque nunca vi esta função devolver o ID do gráfico, que está aberto no momento.
Obrigado pelo código, entendo a essência, embora às vezes eu ainda receba um erro.
Experimentado com funções que mostram as IDs dos gráficos. O que é ChartFirst() da documentação não é absolutamente claro, pode-se interpretar de qualquer forma - pode ser a primeira carta aberta por ordem da esquerda, ou a primeira carta aberta de todas as cartas abertas (no tempo), ou a primeira aberta no terminal (a possibilidade de estar aberta agora é quase zero, portanto não faz sentido fechá-la). Estou mais inclinado a esta última versão, porque nunca vi esta função devolver o ID do gráfico que está aberto no momento.
ChartFirst
Retorna o ID do primeiro gráfico do terminal do cliente.
Eu entendo que este é o gráfico mais à esquerda.