Eu sou preguiçoso demais para olhar o tutorial. Talvez você saiba o que deve ser mudado em seu consultor especializado para que ele aplique a gestão de dinheiro a 0,01 e não a 0,1
Eu sou preguiçoso demais para olhar o tutorial. Talvez você saiba o que deve ser mudado em seu consultor especializado para que ele aplique a gestão de dinheiro a 0,01, e não a 0,1
Uma coisa é que um programador que conhece a língua seja preguiçoso demais para abrir o programa. É outra coisa quando uma pessoa que não conhece a língua é preguiçosa demais para aprender a língua para responder a uma pergunta essencialmente simples. Se conhecer a língua é uma necessidade para um programador, não faz sentido para mim mergulhar nela :) Isso é tudo. Mas, é claro, se ninguém responder, eu tenho que responder. Mas qual é o objetivo do fórum, se apenas os programadores comunicam aqui?
Uma coisa é que um programador que conhece a língua seja preguiçoso demais para abrir um programa. É outra coisa quando uma pessoa que não conhece a língua é preguiçosa demais para aprender a língua para responder a uma pergunta essencialmente simples. Se conhecer a língua é uma necessidade para um programador, não faz sentido para mim mergulhar nela :) Isso é tudo. Mas, é claro, se ninguém responder, eu tenho que responder. Mas qual é o objetivo deste fórum se apenas programadores se comunicam aqui?
Se não há nenhum ponto - não faça perguntas, mas diretamente aqui
Eu sou preguiçoso demais para olhar o tutorial. Talvez você saiba o que deve ser mudado em seu consultor especializado para que ele aplique a gestão de dinheiro a 0,01, e não a 0,1
Mudei 2 dígitos, para ver se funciona como deveria.
Olá a todos!!! Obrigado a todos vocês pelos bons conselhos. Mas eu ainda não consegui fazer nenhum progresso no que comecei)) Minha EA abre duas ordens idênticas e o resto é contra o movimento, eu quero mudá-lo para abrir no movimento!!! Eu experimentei todas as variantes.
POR FAVOR, INFORME QUEM PODE
fio GLOB_START;
int init() { GLOB_START = "@" + DoubleToStr(ID,0) + "@" +"_start"; if !GlobalVariableCheck( GLOB_START )GlobalVariableSet(GLOB_START,TimeCurrent()); retorno(0); }
int deinit() { switch( UninitializeReason() ) { caso REASON_REMOVE: delete_glob ("@" + DoubleToStr(ID,0) + "@" ); } se ( IsTesting() )delete_glob ("@" + DoubleToStr(ID,0) + "@" ); retorno(0); }
void delete_glob ( string c ) { int i; para ( i = GlobalVariablesTotal()-1; i>= 0 ; i-- )if ( StringFind(GlobalVariableName(i),c) >= 0 )GlobalVariableDel(GlobalVariableName(i)) }
int start() { Comentário(Info()); int KOL_BUY = order_total(0); int KOL_SELL = order_total(1); duplo l;
se ( order_total() == 0 ) { aberto(0,Lote,0,TP); aberto(1,Lote,0,TP); }
se ( KOL_BUY == 0 && KOL_SELL != 0 ) { aberto(0,Lote,0,TP); l = último_comércio(1); aberto(1,1,0,0,0); modificar_ordens(1); }
se ( KOL_BUY != 0 && KOL_SELL == 0 ) { aberto(1,Lote,0,TP); l = last_trade(0); aberto(0,l,0,0,0); modificar_ordens(0); }
retorno(0); }
Informações de cordas() { int i; duplo buff_1 = 0, buff_2 = 0, buff_3 = 0; res de fio = "\n";
for( i = OrderHistoryTotal() - 1; i >= 0; i-- ) { OrderSelect(i,SELECT_BY_POS,MODE_HISTORY); if( OrderMagicNumber() == ID ) { if ( OrderOpenTime() >= iTime(NULL,PERIOD_D1,0) )buff_1 += OrderProfit(); if ( OrderOpenTime() >= iTime(NULL,PERIOD_D1,1) && OrderOpenTime() < iTime(NULL,PERIOD_D1,0) )buff_2 += OrderProfit(); if ( OrderOpenTime() >= GlobalVariableGet(GLOB_START) )buff_3 += OrderProfit(); } }
res = res + "Lucro na moeda de depósito para " + TimeToStr(iTime(NULL,PERIOD_D1,0)) + ": " + DoubleToStr(buff_1,0) + "\n" + "\n"; res = res + "Lucro em moeda de depósito para " + TimeToStr(iTime(NULL,PERIOD_D1,1)) + ": " + DoubleToStr(buff_2,0) + "\n" + "\n"; res = res + "Lucro no total da moeda de depósito:" + DoubleToStr(buff_3,0) + "\n"; retorno(res); }
void modify_orders( tipo int ) { int i; datatimetime_last = 0, time_first = TimeCurrent(); duplo SPREAD = MarketInfo(Symbol(),MODE_SPREAD)*MarketInfo(Symbol(),MODE_POINT), op_pr_last, op_pr_first, level;
for( i = OrderTotal() - 1; i >= 0; i-- ) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if( OrderMagicNumber() == ID && OrderType() == tipo ) { se ( OrderOpenTime() > time_last ) { op_pr_last = OrderOpenPrice(); time_last = OrderOpenTime(); } se ( OrderOpenTime() < time_first ) { op_pr_first = OrderOpenPrice(); time_first = OrderOpenTime(); } } }
se ( tipo == 0 )nível = op_pr_last + MathAbs(op_pr_last-op_pr_first) * (SL/100); se ( tipo == 1 )nível = op_pr_last - MathAbs(op_pr_last-op_pr_first) * (SL/100);
for( i = OrderTotal() - 1; i >= 0; i -- ) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if( OrderMagicNumber() == ID && OrderType() == type && NormalizeDouble(OrderTakeProfit(),Digits) != NormalizeDouble(level,Digits) )OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),level,0) } }
duplo último_comércio( int t ) { int i; duplo res = -1; data/hora=0;
for(i=OrdensTotal()-1;i>=0;i--) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderOpenTime()>time && OrderMagicNumber()==ID && OrderType() == t) { res = OrderLots(); tempo = OrderOpenTime(); } } se ( multiplicador ) retornar(res * Lot_koeff); se ( !multiplicador ) retornar(res + Lot_koeff); } int open(int tipo, double l, double sl=0, double tp=0, string comm = "") { int isOpened = 0, tente = 0; duplo s,t; enquanto ( IsTradeContextBusy() ){Sleep(500);} RefreshRates(); if ( sl != 0 && sl < MarketInfo(Symbol(),MODE_STOPLEVEL) )sl = MarketInfo(Symbol(),MODE_STOPLEVEL); if ( tp != 0 && tp < MarketInfo(Symbol(),MODE_STOPLEVEL) )tp = MarketInfo(Symbol(),MODE_STOPLEVEL); se ( tipo == 0 ) { se ( tp == 0 )t = 0; se ( tp != 0 )t = Perguntar + tp * Ponto; se ( sl == 0 )s = 0; se ( sl != 0 )s = Bid - sl * Ponto; } se ( tipo == 1 ) { se ( tp == 0 )t = 0; se ( tp != 0 )t = Proposta - tp * Ponto; se ( sl == 0 )s = 0; se ( sl != 0 )s = Pergunta + sl * Ponto; } s = NormalizarDuplo(s,Dígitos); t = NormalizeDuplo(t,Dígitos); if(type==0)isOpened = OrderSend(Symbol(),type,check_lot(l),NormalizeDouble(Ask,Digits),10,s,t,comm,ID); if(type==1)isOpened = OrderSend(Symbol(),type,check_lot(l),NormalizeDouble(Bid,Digits),10,s,t,comm,ID); Sleep(500); enquanto(isOpened<0) { enquanto ( IsTradeContextBusy() ){Sleep(500);} RefreshRates(); se ( tipo == 0 ) { se ( tp == 0 )t = 0; se ( tp != 0 )t = Proposta + tp * Ponto; se ( sl == 0 )s = 0; se ( sl != 0 )s = Bid - sl * Ponto; } se ( tipo == 1 ) { se ( tp == 0 )t = 0; se ( tp != 0 )t = Perguntar - tp * Ponto; se ( sl == 0 )s = 0; se ( sl != 0 )s = Pergunta + sl * Ponto; } s = NormalizarDuplo(s,Dígitos); t = NormalizeDuplo(t,Dígitos); try++; if(type==0)isOpened = OrderSend(Symbol(),type,check_lot(l),NormalizeDouble(Ask,Digits),10,s,t,comm,ID); if(type==1)isOpened = OrderSend(Symbol(),type,check_lot(l),NormalizeDouble(Bid,Digits),10,s,t,comm,ID); if(try > 5) break; if(isOpened>=0)break; Sleep(500); } if(isOpened<0) Alert("Ordem não aberta, erro :", GetLastError())); retorno(isOpened); }
int order_total( int type_1 = -1, int type_2 = -1 ) { int i; int kol=0; for(i=OrdensTotal()-1;i>=0;i--) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderMagicNumber()==ID && (OrderType() == type_1 || OrderType() == type_2) )kol+++; if(OrderMagicNumber()==ID && type_1 == -1 && type_2 == -1 )kol++; } retorno(kol); }
check_lot duplo(duplo &lo) { double l = MarketInfo(Symbol(),MODE_LOTSTEP); int ok = 0; enquanto ( l < 1 ){l*=10;ok++;} if( lo < MarketInfo(Symbol(),MODE_MINLOT) )lo = MarketInfo(Symbol(),MODE_MINLOT); if( lo > MarketInfo(Symbol(),MODE_MAXLOT) )lo = MarketInfo(Symbol(),MODE_MAXLOT); return(NormalizeDouble(lo,ok));
Você pode sugerir o seguinte, existem N EAs na conta, que sob certas condições podem todos abrir uma ordem ao mesmo tempo, cada um deles verifica não mais de 1 ordem na conta, mas às vezes eu acabo com N ordens, o que posso fazer?
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
Olá, senhores programadores.
Eu sou preguiçoso demais para olhar o tutorial. Talvez você saiba o que deve ser mudado em seu consultor especializado para que ele aplique a gestão de dinheiro a 0,01 e não a 0,1
Olá, senhores programadores.
Eu sou preguiçoso demais para olhar o tutorial. Talvez você saiba o que deve ser mudado em seu consultor especializado para que ele aplique a gestão de dinheiro a 0,01, e não a 0,1
Todo mundo é muito preguiçoso
Todos são preguiçosos
Uma coisa é que um programador que conhece a língua seja preguiçoso demais para abrir o programa. É outra coisa quando uma pessoa que não conhece a língua é preguiçosa demais para aprender a língua para responder a uma pergunta essencialmente simples. Se conhecer a língua é uma necessidade para um programador, não faz sentido para mim mergulhar nela :) Isso é tudo. Mas, é claro, se ninguém responder, eu tenho que responder. Mas qual é o objetivo do fórum, se apenas os programadores comunicam aqui?
Uma coisa é que um programador que conhece a língua seja preguiçoso demais para abrir um programa. É outra coisa quando uma pessoa que não conhece a língua é preguiçosa demais para aprender a língua para responder a uma pergunta essencialmente simples. Se conhecer a língua é uma necessidade para um programador, não faz sentido para mim mergulhar nela :) Isso é tudo. Mas, é claro, se ninguém responder, eu tenho que responder. Mas qual é o objetivo deste fórum se apenas programadores se comunicam aqui?
Se não há nenhum ponto - não faça perguntas, mas diretamente aqui
Se não faz sentido, não faça perguntas e venha direto aqui
Obrigado.
Olá, senhores programadores.
Eu sou preguiçoso demais para olhar o tutorial. Talvez você saiba o que deve ser mudado em seu consultor especializado para que ele aplique a gestão de dinheiro a 0,01, e não a 0,1
Mudei 2 dígitos, para ver se funciona como deveria.
Existe uma opção para marcar o fórum inteiro como lido?
E também o fórum da MQL5.
Obrigado
mudou 2 dígitos, veja se funciona como deveria.
Acontece que alguém não é preguiçoso. Eu cometi um erro.
Olá a todos!!! Obrigado a todos vocês pelos bons conselhos. Mas eu ainda não consegui fazer nenhum progresso no que comecei)) Minha EA abre duas ordens idênticas e o resto é contra o movimento, eu quero mudá-lo para abrir no movimento!!! Eu experimentei todas as variantes.
POR FAVOR, INFORME QUEM PODE
fio GLOB_START;
int init()
{
GLOB_START = "@" + DoubleToStr(ID,0) + "@" +"_start";
if !GlobalVariableCheck( GLOB_START )GlobalVariableSet(GLOB_START,TimeCurrent());
retorno(0);
}
int deinit()
{
switch( UninitializeReason() )
{
caso REASON_REMOVE: delete_glob ("@" + DoubleToStr(ID,0) + "@" );
}
se ( IsTesting() )delete_glob ("@" + DoubleToStr(ID,0) + "@" );
retorno(0);
}
void delete_glob ( string c )
{
int i;
para ( i = GlobalVariablesTotal()-1; i>= 0 ; i-- )if ( StringFind(GlobalVariableName(i),c) >= 0 )GlobalVariableDel(GlobalVariableName(i))
}
int start()
{
Comentário(Info());
int KOL_BUY = order_total(0);
int KOL_SELL = order_total(1);
duplo l;
se ( order_total() == 0 )
{
aberto(0,Lote,0,TP);
aberto(1,Lote,0,TP);
}
se ( KOL_BUY == 0 && KOL_SELL != 0 )
{
aberto(0,Lote,0,TP);
l = último_comércio(1);
aberto(1,1,0,0,0);
modificar_ordens(1);
}
se ( KOL_BUY != 0 && KOL_SELL == 0 )
{
aberto(1,Lote,0,TP);
l = last_trade(0);
aberto(0,l,0,0,0);
modificar_ordens(0);
}
retorno(0);
}
Informações de cordas()
{
int i;
duplo buff_1 = 0, buff_2 = 0, buff_3 = 0;
res de fio = "\n";
for( i = OrderHistoryTotal() - 1; i >= 0; i-- )
{
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if( OrderMagicNumber() == ID )
{
if ( OrderOpenTime() >= iTime(NULL,PERIOD_D1,0) )buff_1 += OrderProfit();
if ( OrderOpenTime() >= iTime(NULL,PERIOD_D1,1) && OrderOpenTime() < iTime(NULL,PERIOD_D1,0) )buff_2 += OrderProfit();
if ( OrderOpenTime() >= GlobalVariableGet(GLOB_START) )buff_3 += OrderProfit();
}
}
res = res + "Lucro na moeda de depósito para " + TimeToStr(iTime(NULL,PERIOD_D1,0)) + ": " + DoubleToStr(buff_1,0) + "\n" + "\n";
res = res + "Lucro em moeda de depósito para " + TimeToStr(iTime(NULL,PERIOD_D1,1)) + ": " + DoubleToStr(buff_2,0) + "\n" + "\n";
res = res + "Lucro no total da moeda de depósito:" + DoubleToStr(buff_3,0) + "\n";
retorno(res);
}
void modify_orders( tipo int )
{
int i;
datatimetime_last = 0, time_first = TimeCurrent();
duplo SPREAD = MarketInfo(Symbol(),MODE_SPREAD)*MarketInfo(Symbol(),MODE_POINT), op_pr_last, op_pr_first, level;
for( i = OrderTotal() - 1; i >= 0; i-- )
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if( OrderMagicNumber() == ID && OrderType() == tipo )
{
se ( OrderOpenTime() > time_last )
{
op_pr_last = OrderOpenPrice();
time_last = OrderOpenTime();
}
se ( OrderOpenTime() < time_first )
{
op_pr_first = OrderOpenPrice();
time_first = OrderOpenTime();
}
}
}
se ( tipo == 0 )nível = op_pr_last + MathAbs(op_pr_last-op_pr_first) * (SL/100);
se ( tipo == 1 )nível = op_pr_last - MathAbs(op_pr_last-op_pr_first) * (SL/100);
for( i = OrderTotal() - 1; i >= 0; i -- )
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if( OrderMagicNumber() == ID && OrderType() == type && NormalizeDouble(OrderTakeProfit(),Digits) != NormalizeDouble(level,Digits) )OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),level,0)
}
}
duplo último_comércio( int t )
{
int i;
duplo res = -1;
data/hora=0;
for(i=OrdensTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderOpenTime()>time && OrderMagicNumber()==ID && OrderType() == t)
{
res = OrderLots();
tempo = OrderOpenTime();
}
}
se ( multiplicador ) retornar(res * Lot_koeff);
se ( !multiplicador ) retornar(res + Lot_koeff);
}
int open(int tipo, double l, double sl=0, double tp=0, string comm = "")
{
int isOpened = 0, tente = 0;
duplo s,t;
enquanto ( IsTradeContextBusy() ){Sleep(500);}
RefreshRates();
if ( sl != 0 && sl < MarketInfo(Symbol(),MODE_STOPLEVEL) )sl = MarketInfo(Symbol(),MODE_STOPLEVEL);
if ( tp != 0 && tp < MarketInfo(Symbol(),MODE_STOPLEVEL) )tp = MarketInfo(Symbol(),MODE_STOPLEVEL);
se ( tipo == 0 )
{
se ( tp == 0 )t = 0;
se ( tp != 0 )t = Perguntar + tp * Ponto;
se ( sl == 0 )s = 0;
se ( sl != 0 )s = Bid - sl * Ponto;
}
se ( tipo == 1 )
{
se ( tp == 0 )t = 0;
se ( tp != 0 )t = Proposta - tp * Ponto;
se ( sl == 0 )s = 0;
se ( sl != 0 )s = Pergunta + sl * Ponto;
}
s = NormalizarDuplo(s,Dígitos);
t = NormalizeDuplo(t,Dígitos);
if(type==0)isOpened = OrderSend(Symbol(),type,check_lot(l),NormalizeDouble(Ask,Digits),10,s,t,comm,ID);
if(type==1)isOpened = OrderSend(Symbol(),type,check_lot(l),NormalizeDouble(Bid,Digits),10,s,t,comm,ID);
Sleep(500);
enquanto(isOpened<0)
{
enquanto ( IsTradeContextBusy() ){Sleep(500);}
RefreshRates();
se ( tipo == 0 )
{
se ( tp == 0 )t = 0;
se ( tp != 0 )t = Proposta + tp * Ponto;
se ( sl == 0 )s = 0;
se ( sl != 0 )s = Bid - sl * Ponto;
}
se ( tipo == 1 )
{
se ( tp == 0 )t = 0;
se ( tp != 0 )t = Perguntar - tp * Ponto;
se ( sl == 0 )s = 0;
se ( sl != 0 )s = Pergunta + sl * Ponto;
}
s = NormalizarDuplo(s,Dígitos);
t = NormalizeDuplo(t,Dígitos);
try++;
if(type==0)isOpened = OrderSend(Symbol(),type,check_lot(l),NormalizeDouble(Ask,Digits),10,s,t,comm,ID);
if(type==1)isOpened = OrderSend(Symbol(),type,check_lot(l),NormalizeDouble(Bid,Digits),10,s,t,comm,ID);
if(try > 5) break;
if(isOpened>=0)break;
Sleep(500);
}
if(isOpened<0) Alert("Ordem não aberta, erro :", GetLastError()));
retorno(isOpened);
}
int order_total( int type_1 = -1, int type_2 = -1 )
{
int i;
int kol=0;
for(i=OrdensTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderMagicNumber()==ID && (OrderType() == type_1 || OrderType() == type_2) )kol+++;
if(OrderMagicNumber()==ID && type_1 == -1 && type_2 == -1 )kol++;
}
retorno(kol);
}
check_lot duplo(duplo &lo)
{
double l = MarketInfo(Symbol(),MODE_LOTSTEP);
int ok = 0;
enquanto ( l < 1 ){l*=10;ok++;}
if( lo < MarketInfo(Symbol(),MODE_MINLOT) )lo = MarketInfo(Symbol(),MODE_MINLOT);
if( lo > MarketInfo(Symbol(),MODE_MAXLOT) )lo = MarketInfo(Symbol(),MODE_MAXLOT);
return(NormalizeDouble(lo,ok));
Você pode sugerir o seguinte, existem N EAs na conta, que sob certas condições podem todos abrir uma ordem ao mesmo tempo, cada um deles verifica não mais de 1 ordem na conta, mas às vezes eu acabo com N ordens, o que posso fazer?