[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 593
![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Quando testamos e otimizamos, na maioria das vezes usamos um par de moedas, obtemos um lucro aceitável, e um drawdown. Em seguida, repetimos para outras moedas. Mas no final um consultor especializado terá que negociar todas as moedas que nos interessam a partir de uma conta comercial. Eles dizem que o saque "total" esperado pode ser melhor do que o saque obtido para cada moeda individualmente (eu vi esta opinião várias vezes em algum lugar). Mas pode ser muito pior se vários Expert Advisors entrarem numa maré de derrotas ao mesmo tempo.
Também estou interessado na experiência dos comerciantes sobre este assunto. Gostaria de oferecer um vídeo clip muito interessante da Seaboss
http://taverno.livejournal.com/2010/04/10/ O Gerenciamento de Equidade Total na Seaboss é implementado para a Omega, existem implementações similares para a MT?
Boa noite, caros membros do fórum! Contactei-os durante o dia, mas ninguém reagiu - preciso de um indicador que mostre linhas horárias verticais na janela do terminal, certamente há um já pronto, poderia me dizer onde obtê-lo?
Não sei onde consegui-lo. Provavelmente a razão pela qual não ouvi nenhuma resposta é que é uma coisa simples escrever tal indicador e ninguém provavelmente vai precisar dele.
vik-777:
Ajude-me a resolver este problema
fazer uma amostragem de todas as posições fechadas
para (int i=0; i<OrdersHistoryTotal(); i++)
if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)==verdadeiro)
depois filtrar por número mágico
se (OrderMagicNumber()==12)
o filtro corresponde a 3 posições, mas eu preciso apenas da última fechada por um número mágico
Não consigo descobrir como deixar apenas o último?
Obrigado
Alguém pode me ajudar? Alguém não se deparou com isso?
OrderCloseTime() para ajudar você
OrderCloseTime() para ajudar você
E daí? Posso encontrar a última ordem fechada e preciso da última ordem fechada com um mágico, me dizer como fazer uma comparação de várias ordens por OrderCloseTime()?
É muito grosseiro e direto. Pode ser mais bonito e lacônico...
Raiz-de-tooty e na testa. Poderia ser mais bonito e sucinto...
Também estou interessado na experiência dos comerciantes sobre este assunto. Gostaria de sugerir um vídeo clipe muito interessante da Seaboss
http://taverno.livejournal.com/2010/04/10/ Seaboss implementou a Gestão de Patrimônio para Omega, existem implementações similares para a MT?
Aqui está algo que encontrei (ainda não li, mas parece estar no tópico)
https://www.mql5.com/ru/forum/125825
Vopshchem eu tomei a teoria da probabilidade e estatisticamente se a margem da ordem será num raio de 50 pips do preço, então na abertura da ordem com um lucro de 10 pips é mais fácil de alcançar - se houver também uma perda de stop de 10 pips (mesmo o spread não é um problema) o movimento de uma tendência é uma grande coisa ...
Adicionar um stop loss, independentemente do StepStop
//+------------------------------------------------------------------+
//| Volfram.mq4 |
//| Vova-x@list.ru |
//| |
//+------------------------------------------------------------------+
#propriedade copyright "Vova-x@list.ru"
#ligação de propriedade ""
//-----------------------------------------
TakeProfit externo=10;
Int. externo StepStop=45;
Lotes duplos externos=0,01;
bool externo MoneyManagement=true;
Margem Externa InternaPercentagem=10;
//-------------------------------------------
int level_sell_stop;
int level_buy_stop;
//----------------------------------------------------------
init() vazio
{
// int minstop=MarketInfo(Symbol(),MODE_STOPLEVEL);
//Print("levelbuy_stop: "+minstop;)
}
//-----------------------------------------------------------
início nulo()
{
se (!IsTradeAllowed()) retornar;
level_buy_stop=0;
nível_sell_stop=0;
StepingStop();
StepingPendings();
se (TotalBuy ()==0 && TotalBuyStop ()==0) SetBuyStop ();
se (TotalSell()==0 && TotalSellStop()==0) SetSellStop();
Comentário("Level Buy Stop=",level_buy_stop*Point,
"\n", "Level Sell Stop=",level_sell_stop*Point);
}
//---------------------------------------------------------------------------------------------
StepingStop() vazio
{
se (StepStop<1) voltar;
int ask, bid, open, stop, x;
perda dupla;
para (int i=0; i<OrdersTotal(); i++)
{
se (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) quebrar;
se (OrderSymbol()!=Symbol())
se (OrderType()==OP_BUY)
{
bid=MathRound(Bid/Point);
open=MathRound(OrderOpenPrice()/Point);
stop=MathRound(OrderStopLoss()/Point);
x=(bid-open)/StepStop; x--; x*=StepStop;
level_sell_stop=open+x;
se (stop>=abrir+x)
loss=(open+x)*Point;
OrderModify(OrderTicket(),OrderOpenPrice(),loss,OrderTakeProfit(),0,CLR_NONE);
}
se (OrderType()==OP_SELL)
{
ask=MathRound(Perguntar/Pontar);
open=MathRound(OrderOpenPrice()/Point);
stop=MathRound(OrderStopLoss()/Point);
x=(open-ask)/StepStop; x--; x*=StepStop;
level_buy_stop=open-x;
se (stop>>0 && stop<=open-x)
loss=(open-x)*Point;
OrderModify(OrderTicket(),OrderOpenPrice(),loss,OrderTakeProfit(),0,CLR_NONE);
}
}
}
//----------------------------------------------------------------------------
StepingPendings() nulos
{
int ask, bid, open;
o dobro do preço, perda, lucro;
para (int i=0; i<OrdersTotal(); i++)
{
se (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) quebrar;
se (OrderSymbol()!=Symbol())
se (OrderType()==OP_BUYSTOP)
{
se (level_buy_stop==0)
open=MathRound(OrderOpenPrice()/Point);
se (abrir<= nível_buy_stop)
price=level_buy_stop*Point;
perda=preço-PontoStepStop*Point;
lucro=0; se (TakeProfit>0) lucro=preço+TakeProfit*Point;
OrderModify(OrderTicket(),price,loss,profit,0,CLR_NONE);
}
se (OrderType()==OP_SELLSTOP)
{
se (nível_sell_stop==0)
open=MathRound(OrderOpenPrice()/Point);
se (abrir>=nível_sell_stop)
price=nível_sell_stop*Point;
loss=price+StepStop*Point;
lucro=0; se (TakeProfit>0) lucro=preço-PontoTakeProfit*;
OrderModify(OrderTicket(),price,loss,profit,0,CLR_NONE);
}
}
}
//-------------------------------------------------------------------
SetBuyStop() vazio
{
lotes duplos=LotsCounting();
preço duplo = Licitação+StepStop*Point;
perda dupla=preço-PontoStepStop*Point;
lucro duplo=0; se (TakeProfit>0) lucro=preço+TakeProfit*Point;
int ticket=OrderSend(Symbol(),OP_BUYSTOP,lots,price,0,loss,profit"",0,0,CLR_NONE);
if (ticket<1) Print("Set a pending order failed with error #",GetLastError()," ",(GetLastError()));
}
SetSellStop() vazio
{
lotes duplos=LotsCounting();
preço duplo=Ask-StepStop*Point;
perda dupla=preço+PontoStepStop*Point;
lucro duplo=0; se (TakeProfit>0) lucro= preço-PontoTakeProfit*;
int ticket=OrderSend(Symbol(),OP_SELLSTOP,lots,price,0,loss,profit"",0,0,CLR_NONE);
if (ticket<1) Print("Set a pending order failed with error #",GetLastError()," ",(GetLastError()));
}
int TotalBuy()
{
int contagem=0;
para (int i=0; i<OrdersTotal(); i++)
{
se (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) quebrar;
se (OrderSymbol()!=Symbol()) continuar;
se (OrderType()==OP_BUY) contar++;
}
retornar (contar);
}
int TotalBuyStop()
{
int contagem=0;
para (int i=0; i<OrdersTotal(); i++)
{
se (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) quebrar;
se (OrderSymbol()!=Symbol()) continuar;
se (OrderType()==OP_BUYSTOP) contar++;
}
retornar (contar);
}
int TotalSell()
{
int contagem=0;
para (int i=0; i<OrdersTotal(); i++)
{
se (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) quebrar;
se (OrderSymbol()!=Symbol()) continuar;
se (OrderType()==OP_SELL) contar++;
}
retornar (contar);
}
int TotalSellStop()
{
int contagem=0;
para (int i=0; i<OrdersTotal(); i++)
{
se (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) quebrar;
se (OrderSymbol()!=Symbol()) continuar;
se (OrderType()==OP_SELLSTOP) contar++;
}
retornar (contar);
}
dupla Contagem de Lotes()
{
lotes duplos=Lotes;
se (MoneyManagement)
{
double lotsize=MarketInfo(Symbol(),MODE_LOTSIZE);
double freemargin=AccountFreeMargin();
lotes=0; se (tamanho do lote>0) lotes=NormalizarDuplo((MarginPercentual*freemargin/lotsize),1);
}
se (lotes>10) lotes=NormalizarDuplo(lotes,0);
se (lotes<0,01) lotes=0,01;
retorno (lotes);
}
// Fim