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 1067
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
Ajude, por favor! Existem 2 arquivos: um indicador e um Expert Advisor. Como se referir corretamente à função no indicador via #include? iCustom não é adequado por várias razões. Isto é o que escrevi no indicador:
E isto é o que escrevi no Expert Advisor:
Mas por alguma razão, o consultor especializado não funciona, o indicador não aparece na tabela de preços durante os testes. Eu o escrevi corretamente e, se houver um erro, onde ele está?
Tuta.
Eu não tenho um. Mas definitivamente existe um arquivo em algum lugar, eu recebo as informações registradas nele.
Por favor, ajude-me a compilar para o mt4
FileClose' - expressão do tipo 'void' é ilegal TickToCVS~.mq4 84 12
Eu não tenho um. Mas definitivamente existe um arquivo em algum lugar e eu recebo as informações registradas nele.
Este é o valor VAZIO_VALOR
Procure onde ela está aparecendo.
Minha captura de tela mostra que o menu é do MetaEditor e sua captura de tela é do MT.
Oi pessoal, minha pergunta é: não posso modificar um pedido. Há dois aspectos, não entendo a matemática da modificação, então, por favor, me explique.
A meu ver, SL= IF ORDERSELEKT,Bid-ORDERSTOPLOS*POINT,DIGITS
o segundo aspecto.aprendido com o vídeo XBMS
como eu não tentei mudar os valores das variáveis no tester eror 130 não a parada correta de perda e merdas como esta
2016.06.28 21:42:23.402 2016.06.23 00:00 entradas RSI comerciais: Lotes=0,1; Slippage=5; StopLoss=10; TakeProfit=30; RSIPeriod=7; Magic=1087;
embora haja uma multiplicação a partir de dígitos e função no caso de SL errado
Lotes duplos externos = 0,1;
Escorregão externo = 10;
StopLoss int externo = 10;
Exterior int TakeProfit =30;
período RSIP int externo = 7;
magia int externa =1087;
duplo MaRSI;
int TP,SL;
bool tfu;
//+------------------------------------------------------------------+
//| Função de inicialização do especialista |
//+------------------------------------------------------------------+
int OnInit()
{
if(Dígitos == 3||Dígitos == 5)
{
Slippage *= 10;
TakeProfit *= 10;
StopLoss *= 10;
}
return(INIT_SUCCEED);
}
//+------------------------------------------------------------------+
//| Função de desinicialização especializada |
//+------------------------------------------------------------------+
nulo OnDeinit(const int razão)
{
}
//+------------------------------------------------------------------+
//| função tick expert |
//+------------------------------------------------------------------+
nulo OnTick()
{
//+------------------------------------------------------------------+
//venda aberta
//+------------------------------------------------------------------+
MaRSI=iRSI(Symbol(),0, RSIPeriod,PRICE_CLOSE,1);
if(CountTrades() <= 0&MaRSI<=30 )
{
if( EnviarOrder(Símbolo(),OP_BUY,Lots,Ask,Slippage,0,0, "teste",Magia,0,Verde))
{ bilhete int = OrderTicket();
SL = NormalizeDouble( Pergunte - StopLoss*Point,Dígitos);
TP = NormalizeDuplo( Ask + TakeProfit*Point,Dígitos);
ModifyOrder(ticket,OrderOpenPrice(),SL,TP,0,Black);
}
}// if(CountTrades <= 0&MaRSI>=70 )
//+------------------------------------------------------------------+
//abrir a compra
//+------------------------------------------------------------------+
}//ONTICK
//+------------------------------------------------------------------+
//+ contador de pedidos
//+------------------------------------------------------------------+
int CountTrades ()
{
int count = 0;
for(int i = OrderTotal()-1;i>=0;i--)
{
if( OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)// se o pedido for nosso
contador++;//contador de aumento
}//selecionar ordem por índice
}// encomenda.i===primeira encomenda.
devolução(contagem);// devolve o número de pedidos
}// função
//+------------------------------------------------------------------+
// função de colocação de pedidos com manipulação de erros
//+------------------------------------------------------------------+
int SendOrder( símbolo de corda, int cmd, volume duplo, preço duplo, int slippage, stoploss duplo,
double takeprofit,string comment,int magic=0,datetime expiration=0,color arrow_color=CLR_NONE)
{
int err = GetLastError();
err =0;
bool exit_cikl = falso;
int ticket = -1;
int Retry = 10; //número de tentativas para estabelecer uma ordem
int cnt = 0; //entrada contagem
if(cmd == OP_BUY || cmd == OP_SELL)
{
while(!exit_cikl)
{
bilhete = OrderSend(symbol,cmd,volume,preço,slippage,stoploss,takeprofit,comment,magic,expiration,arrow_color);
err= GetLastError();
switch(err)
{
caso ERR_NO_ERROR:
exit_cikl = verdadeiro;
pausa;
{ caso ERR_SERVER_BUSY:
caso ERR_NO_CONNECTION:
caso ERR_INVALID_PRICE:
caso ERR_OFF_QUOTES:
caso ERR_BROKER_BUSY:
caso ERR_TRADE_CONTEXT_BUSY:
cnt++;
pausa;
caso ERR_PRICE_CHANGED:
caso ERR_REQUOTE:
RefreshRates();
continuar;
padrão:
exit_cikl = verdadeiro;
pausa;
}// interruptor(err)
if(cnt > Retry)
exit_cikl = verdadeiro;
if(!exit_cikl)
{
Sleep(1000);
RefreshRates();
}// se não sairmos do laço se(!exit_cikl)
senão
{
if(err != ERR_NO_ERROR)
{
Print("Error : " " + IntegerToString(err));
}// se ainda houver um erro se(err != ERR_NO_ERROR)
}// OUTROS
if(err==ERR_NO_ERROR)
{
if( OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)==verdadeiro)
retorno(bilhete);
}// if(err==ERR_NO_ERROR)
Imprimir("Ordem de abertura de erro após " + IntegerToString(cnt) +"tentativas");
retorno(-1);
} // ciclo enquanto
}// se o tipo de pedido for Compra ou Venda
retorno(bilhete);
}// Função SendOrder
//-------------------------------------------------------------------------------------------------------------
//função modificar ordem
//------------------------------------------------------------------------------------------------------------
ModifyOrder(int ticket,double price,double stoploss,double takeprofit,datetime expiration,colour arrow_color)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
{
preço = NormalizeDuplo(preço,Dígitos);
stoploss = NormalizeDuplo(stoploss,Dígitos);
takeprofit = NormalizeDuplo(takeprofit,Dígitos);
CheckValidStop(Symbol(),price,stoploss);//função para alterar a parada mínima
int err = GetLastError();
err = 0 ;
int Retry = 10;
int cnt = 0;
bool exit_cikl = falso;
resultado da bool;
while(!exit_cikl)
{
resultado = OrderModify(ticket, preço,stoploss,takeprofit,expiração, arrow_color);
err = GetLastError();
if(resultado == verdadeiro)
{
Print("Order #"+ IntegerToString(ticket), "modificado com sucesso");
retorno(verdadeiro);
}
switch(err)
{
caso ERR_NO_ERROR:
exit_cikl = verdadeiro;
pausa;
{ caso ERR_SERVER_BUSY:
caso ERR_NO_CONNECTION:
caso ERR_INVALID_PRICE:
caso ERR_OFF_QUOTES:
caso ERR_BROKER_BUSY:
caso ERR_TRADE_CONTEXT_BUSY:
cnt++;
pausa;
caso ERR_PRICE_CHANGED:
caso ERR_REQUOTE:
RefreshRates();
continuar;
padrão:
exit_cikl = verdadeiro;
pausa;
}// interruptor(err)
}// while(!exit_cikl)
se ( err != ERR_NO_ERROR)
{
Imprimir("Erro ao modificar ordem # " + IntegerToString(ticket));
Imprimir("Código de erro: "+ IntegerToString(err));
}
}//(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
senão
{
Imprimir("Seleção do pedido falhou, ticket = " + IntegerToString(ticket));
retorno(falso);
}// se algo correr mal
retorno(verdadeiro);
}// função modificar
//----------------------------------------------------------------------------------------------------
//ChtckValidStop
//--------------------------------------------------------------------------------------------------
Válido CheckValidStop(símbolo de corda, preço duplo, double& sl)
{
if(sl==0)
retornar;
duplo min_stop_server = MarketInfo(símbolo,MODE_STOPLEVEL)*MarketInfo(símbolo,MODE_POINT);
if(MathAbs(price-sl) <= min_stop_server)
{
if(preço>sl)
sl = preço - min_stop_server;
else sl = sl + min_stop_server;
}// if(MathAbs(price-sl) <= min_stop_server)
sl = NormalizeDouble(sl,MarketInfo(símbolo,MODE_DIGITS))
}// função
POR FAVOR, AVISE!!!!
Há duas ordens no histórico de negociação: 1) SELL № tic 415 STOPLOSS 1.1000 lote 0.01 2) SELL № tic 418 STOPLOSS 1.1000 lote 0.02
Tenho que atribuir as variáveis X=tick, Y=STOPLOSS e B=lot se o preço Asc for igual ao STOPLOSS da ordem de venda. Como atribuir os primeiros valores à primeira ordem, e depois à segunda ordem. Comigo ele sempre atribui um valor à primeira encomenda.
POR FAVOR, AVISE!!!!
Há duas ordens no histórico de negociação: 1) SELL № tic 415 STOPLOSS 1.1000 lote 0.01 2) SELL № tic 418 STOPLOSS 1.1000 lote 0.02
Tenho que atribuir as variáveis X=tick, Y=STOPLOSS e B=lot se o preço Asc for igual ao STOPLOSS da ordem de venda. Como atribuir os primeiros valores à primeira ordem, e depois à segunda ordem. Comigo ele sempre atribui um valor à primeira encomenda.
Este tópico foi concebido para ajudar aqueles que já têm algo escrito, mas não funciona da maneira que eu gostaria que funcionasse. Por favor, envie seu código para que os outros aqui possam ver o que está errado e ajudar.
E se você quiser ser escrito sob encomenda, é aí que está.