Link_x: Olá! Existe tal função na função "Kim" que calcula a quantidade de lucro da última ordem aberta?
Ainda não o encontrei, agora estou intrigado com uma função caseira que calcula a margem de lucro da última ordem aberta.
OrderProfit()
Se você precisar exatamente do último pedido aberto, então passe por todos os pedidos e escolha o último, cujo tempo é o mais recente, então use a função acima, que retornará a você o lucro líquido deste pedido
Se você precisar exatamente da última ordem para abrir, então passe por todas as ordens e escolha aquela com o último tempo aberto, então use a função acima, que retornará a você o lucro líquido desta ordem
Como consigo uma resposta na hora certa, no momento exato em que encontro uma solução. :)
Ekburg К сожалению времени и возможности написать Вам готовый код нет, так как я на работе нахожусь))
Você não busca pela história, mas pelas posições atuais, aqui está uma cadeia lógica baseada na qual você pode tentar escrever código:
[bloco de trabalho com muwings e pedido].
1 lembre-se do bilhete e do número mágico do pedido feito
2 monitorar o número de ordens e se não houver ordens no mercado (significa que nossa ordem foi fechada), então vá para o ponto3 ou monitore esta ordem específica até que seu tempo de fechamento seja maior que zero, neste caso, excluímos os pontos 3 e 4
3 encontre nosso pedido
4 descubra se está fechado
5 descubra como foi fechado
6 se foi fechado através de uma parada, estabeleça outra ordem diferente na direção
//+------------------------------------------------------------------+//| 123.mq4 |//| Copyright 2014, MetaQuotes Software Corp. |//| http://www.metaquotes.net |//+------------------------------------------------------------------+#property copyright"Copyright 2014, MetaQuotes Software Corp."#property link"http://www.metaquotes.net"externdouble Lots = 0.1;
externdouble TakeProfit = 100;
externdouble StopLoss = 100;
externdouble TrailingStop = 50;
externdouble Margincutoff = 100;
externdouble MagicNumber = 12345;
externdouble TradeSizePercent = 5;
externint Slippage = 10;
//+------------------------------------------------------------------+//| expert initialization function |//+------------------------------------------------------------------+int init()
{
//----//----return(0);
}
//+------------------------------------------------------------------+//| expert deinitialization function |//+------------------------------------------------------------------+int deinit()
{
//----//----return(0);
}
int Crossed (double line1, double line2)
{
staticint last_direction=0;
staticint current_direction=0;
if (line1>line2)current_direction=1;// пересечение вверхif (line1<line2)current_direction=2;// пересечение внизif (current_direction!=last_direction)//изменения произошли
{
last_direction=current_direction;
return(last_direction);
}
}
//+------------------------------------------------------------------+//| expert start function |//+------------------------------------------------------------------+int start()
{
int cnt, ticket, total, totalhistory, memoryticket;
double shortEMA, longEMA;
if(Bars<100)
{
Print("Bars less than 100");
return(0);
}
shortEMA=iMA(NULL,0,8,0,MODE_EMA,PRICE_CLOSE,0);
longEMA=iMA(NULL,0,13,0,MODE_EMA,PRICE_CLOSE,0);
int isCrossed=Crossed(shortEMA, longEMA);
//----
total=OrdersTotal();
if(total<1)
{
// нет открытых ордеровif(AccountFreeMargin()<(1000*Lots))
{
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
// проверяем пересечение МА для открытия позиции на покупкуif(isCrossed==1)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Ask-StopLoss*Point,Ask+TakeProfit*Point,"МА",12345,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
memoryticket= OrderTicket();// запомнили тикетPrint("BUY order opened : ",OrderOpenPrice());
}
elsePrint("Error opening BUY order : ",GetLastError());
return(0);
}
//проверяем пересечение МА для открытия позиции на продажуif(isCrossed==2)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,Bid+StopLoss*Point,Bid-TakeProfit*Point,"MA",12345,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
memoryticket= OrderTicket();// запомнили тикетPrint("SELL order opened : ",OrderOpenPrice());
}
elsePrint("Error opening SELL order : ",GetLastError());
return(0);
}
return(0);
}
//----начинаем искать закрытые ордера//инициализация параметровint old_order_type;
RefreshRates();
//нет открытых ордеров - ищем в истории закрытых ордеров последний закрытый именно этим советником ордер for ( totalhistory = OrdersHistoryTotal() - 1; totalhistory >= 0; totalhistory-- )
{
if ( OrderSelect(totalhistory, SELECT_BY_TICKET, MODE_HISTORY) && OrderTicket() == memoryticket && OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol() )
{
old_order_type = OrderType();
if ( OrderProfit()<0 ) //последний закрытый советником ордер был убыточным, значит, следующий ордер открываем в направлении, противоположном закрытому с убытком
{
break; //прекращаем поиск
}
}
}
//если раньше покупали, то теперь продаемif ( old_order_type == OP_BUY )
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,Bid+StopLoss*Point,Bid-TakeProfit*Point,"MA",12345,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
memoryticket= OrderTicket();// запомнили тикетPrint("SELL order opened : ",OrderOpenPrice());
}
elsePrint("Error opening SELL order : ",GetLastError());
return(0);
}
//если раньше продавали, то теперь покупаемif ( old_order_type == OP_SELL )
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Ask-StopLoss*Point,Ask+TakeProfit*Point,"МА",12345,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
memoryticket= OrderTicket();// запомнили тикетPrint("BUY order opened : ",OrderOpenPrice());
}
elsePrint("Error opening BUY order : ",GetLastError());
return(0);
}
return(0);
}
//+------------------------------------------------------------------+
Isto é o que eu tenho. Realmente abre 3 lotes. Estou realmente ferrado. Você pode corrigir o código? O que está errado?
Estou cansado de fazer estas perguntas (incrivelmente irritante, pi****, desculpe (porra de variáveis que não consigo encontrar (a maioria irritante, o que eu mesmo não consigo encontrar))).
Qual variável é responsável pelo valor do preço atual? Pesquisei a documentação, não há nada exceto Bid, Ask, POINT_HIGH, POINT_LOW. Essa variável existe mesmo?
Link_x: Estou cansado de fazer estas perguntas (incrivelmente irritante, pi****, desculpe (porra de variáveis que não consigo encontrar (a maioria irritante, o que eu mesmo não consigo encontrar))).
Qual variável é responsável pelo valor do preço atual? Pesquisei a documentação, não há nada exceto Bid, Ask, POINT_HIGH, POINT_LOW. Essa variável existe mesmo?
Você já notou como o preço muda na janela "Market Watch"? Você pode ver ali os preços de compra e venda. O primeiro é usado para vender e o segundo para comprar.
khorosh: Você já notou como o preço muda na janela de observação do mercado? Aí você pode ver o Bid and Ask - estes são os preços atuais. O primeiro é usado para vender e o segundo para comprar.
Talvez você devesse tentar responder às perguntas dos outros em vez de fazer as suas próprias perguntas. Os benefícios são muito maiores (até certo ponto), certamente os benefícios para você
Olá!
Existe tal função na função "Kim" que calcula a quantidade de lucro da última ordem aberta?
Ainda não o encontrei, agora estou intrigado com uma função caseira que calcula a margem de lucro da última ordem aberta.
OrderProfit()
Se você precisar exatamente do último pedido aberto, então passe por todos os pedidos e escolha o último, cujo tempo é o mais recente, então use a função acima, que retornará a você o lucro líquido deste pedido
OrderProfit()
Se você precisar exatamente da última ordem para abrir, então passe por todas as ordens e escolha aquela com o último tempo aberto, então use a função acima, que retornará a você o lucro líquido desta ordem
Como consigo uma resposta na hora certa, no momento exato em que encontro uma solução. :)
Mas obrigado de qualquer forma!
Ekburg К сожалению времени и возможности написать Вам готовый код нет, так как я на работе нахожусь))
Você não busca pela história, mas pelas posições atuais, aqui está uma cadeia lógica baseada na qual você pode tentar escrever código:
[bloco de trabalho com muwings e pedido].
1 lembre-se do bilhete e do número mágico do pedido feito
2 monitorar o número de ordens e se não houver ordens no mercado (significa que nossa ordem foi fechada), então vá para o ponto3 ou monitore esta ordem específica até que seu tempo de fechamento seja maior que zero, neste caso, excluímos os pontos 3 e 4
3 encontre nosso pedido
4 descubra se está fechado
5 descubra como foi fechado
6 se foi fechado através de uma parada, estabeleça outra ordem diferente na direção
Isto é o que eu tenho. Realmente abre 3 lotes. Estou realmente ferrado. Você pode corrigir o código? O que está errado?
Qual variável é responsável pelo valor do preço atual?
Pesquisei a documentação, não há nada exceto Bid, Ask, POINT_HIGH, POINT_LOW.
Essa variável existe mesmo?
Estou cansado de fazer estas perguntas (incrivelmente irritante, pi****, desculpe (porra de variáveis que não consigo encontrar (a maioria irritante, o que eu mesmo não consigo encontrar))).
Qual variável é responsável pelo valor do preço atual?
Pesquisei a documentação, não há nada exceto Bid, Ask, POINT_HIGH, POINT_LOW.
Essa variável existe mesmo?
Quão oportuno eu recebo uma resposta, justamente quando eu encontro uma solução. :)
Você já notou como o preço muda na janela de observação do mercado? Aí você pode ver o Bid and Ask - estes são os preços atuais. O primeiro é usado para vender e o segundo para comprar.
Esqueci-me de uma coisa tão pequena!
A solução é: "Não tenha pressa em fazer perguntas". E, considerando que você nem sempre obtém respostas competentes... :)))
É isso mesmo!!!
Esqueci uma coisinha dessas!!!
Sim, sim. :)
Talvez você devesse tentar responder às perguntas dos outros em vez de fazer as suas próprias perguntas. Os benefícios são muito maiores (até certo ponto), certamente os benefícios para você