[ARQUIVO] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 3. - página 457
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
normalize seus _ lotes
Obrigado! Isso ajudou.
Olá! Tenho uma pergunta sobre a exportação de dados para o Excel. Eu preciso do indicador (ou script) para exportar automaticamente os valores atuais de "Saldo", "Fundos", etc. para o Excel no início de cada dia. Você pode me dizer como implementar isto? Ou pelo menos onde ler sobre isso. A pesquisa não produziu nenhum resultado, por isso estou perguntando aqui. Obrigado.
Você pode salvar um arquivo csv com um especialista e o Excel irá processá-lo com bastante sucesso.
Você pode me dizer como fazer isso? E onde posso saber mais sobre isso? Obrigado.
Favor aconselhar como fazer um indicador no EA para não ser desenhado em um gráfico?
Isto é, as linhas do indicador não seriam desenhadas no gráfico. O indicador é chamado assim:
https://docs.mql4.com/ru/files
Favor aconselhar como fazer um indicador no EA para não ser desenhado em um gráfico?
Isto é, as linhas do indicador não seriam desenhadas no gráfico. O indicador é chamado assim:
Durante os testes EA eu recebo erro 130 - paradas erradas. Na função NewOrder as variáveis externas TakeProfit e StopLoss devem ser passadas, e me parece que fiz de tudo para conseguir isso, mas como a impressão mostra, os zeros são passados. Entendo a razão deste erro aqui, mas ainda não fui capaz de encontrá-lo. Eu preciso de sua ajuda.
Exterior int TakeProfit=100;
externo int StopLoss=100;
....................................
if(KVADRAT===1)
{
double Lot=GetLot(MaxRisk);
Imprimir("Lote=",Lote);
if(Lote==0)
{
Imprimir ("não há fundos suficientes");
retorno(0);
}
NewOrder(OP_BUYSTOP, Lot, TakeProfit, StopLoss);
NewOrder(OP_SELLSTOP, Lot, TakeProfit, StopLoss);
KVADRAT=0;
}
.....................................
//+---------Функция расчета лота---------------------------------------+
duplo GetLot(int Risk)
{
duplo Free=AccountFreeMargin();
double One_Lot=MarketInfo(Symbol(),MODE_MARGINREQUIRED);
double Min_Lot=MarketInfo(Symbol(),MODE_MINLOT);
double Max_Lot=MarketInfo(Symbol(),MODE_MAXLOT);
double Step=MarketInfo(Symbol(),MODE_LOTSTEP);
double Lot=MathFloor(Free*Risk/100/One_Lot/Step)*Step;
if(Lot<Min_Lot)Lot=Min_Lot;
if(Lote>Lote_Máximo)Lote=Lote_Máximo;
if(Lote*Um_Lote>Livre)return(0.0);
retorno(Lote);
}
//+----------Функция открытия ордера-----------------------------------+
int NewOrder(int Cmd,double Lot,int TakeProfit,int StopLoss)
{
duplo TP=0;//takeProfit
duplo SL=0;// stopLoss
duplo PR=0;// preço
while(!IsTradeAllowed())Sleep(100);
if(TakeProfit<MarketInfo(Symbol(),MODE_STOPLEVEL))
TakeProfit=MarketInfo(Symbol(),MODE_STOPLEVEL);
if(StopLoss<MarketInfo(Symbol(),MODE_STOPLEVEL))
StopLoss=MarketInfo(Symbol(),MODE_STOPLEVEL);
if(Cmd==OP_BUY)
{
PR=NormalizeDuplo(Pergunte,Dígitos);
if(TakeProfit>0)TP=NormalizeDouble(Ask+TakeProfit*Point,Digits);
if(StopLoss>0)SL=NormalizeDouble(Bid-StopLoss*Point,Digits);
}
if(Cmd===OP_SELL)
{
PR=NormalizeDouble(Bid,Digits);
if(TakeProfit>0)TP=NormalizeDouble(Bid-TakeProfit*Point,Dígitos);
if(StopLoss>0)SL=NormalizeDouble(Ask+StopLoss*Point,Digits);
}
Print("TakeProfit=",TakeProfit," StopLoss=",StopLoss," StopLevel=",MarketInfo(Symbol(),MODE_STOPLEVEL));
tic=OrderSend(Symbol(),Cmd,Lot,PR,3,SL,TP,"",0,0,CLR_NONE);
if(tic<0)Print("order open error:",GetLastError()); Print("Cmd-",Cmd, "Lot=",Lot, "PR=",PR, "SL=",SL, "TP=",TP);
retorno(tique);
}
Faça um pouco de magia com esta função.
* ¶ gone to do magic *