[ARQUIVO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 4. - página 621

 
VladislavVG:

DLL - ver exemplos. É possível que um programador que sabe escrever em C/C++ não seja capaz de entender os exemplos padrão da entrega de МТ e isto apesar do fato de que há muito material no fórum?

Eu não sou um programador, mas às vezes eu mesmo escrevo as coisas mais simples. Eu não preciso escrever um robô complexo em nenhuma língua e não é um problema de todo. Eu quero escrever um robô com sua própria interface e não executar parte das funções como uma dll e chamá-los de μl. Graças a Deus há muitas linguagens visuais diferentes onde isso pode ser feito sem muito esforço.
 
lottamer:


Sim, entendo agora porque há uma comparação de tempo no loop, e tempo em geral....

Eu também entendo o LOGIC - marca "A", depois exclui "A", mas primeiro, todas as opções ONDE este "A" pode ser colocado - e ainda assim o conselheiro me devolve o último bilhete, não o penúltimo.

.

Introduzi 2 laços (2 funções) - primeiro seu original, segundo com exceção de "A"... correr um após o outro.

Imprime zero....


Esta função usa variáveis locais, portanto não deve ser executada sim vezes como uma função separada, fazer dois loops um após o outro em uma função, ou declarar A como uma variável global. Eu vou pegar cigarros e você experimenta, e se não funcionar, me bate quando eu voltar e nós descobriremos.
 
Desead:

Não sou um programador, mas às vezes eu mesmo escrevo as coisas mais simples. Quero escrever um robô simples em qualquer idioma e não é problema algum. Eu queria escrever um robô inteiro com sua própria interface sem chamar Metatrader, não fazendo parte de suas funções em uma dll e chamá-los de μl. Eu inventei muitas linguagens visuais diferentes, onde isto pode ser feito sem muito esforço.

Se você quiser usar as características do terminal (mais de uma centena de diferentes funções embutidas, indicadores embutidos, a interface do programa em si), então não estamos falando de um simples Expert Advisor, mas de um terminal de seu próprio projeto.
 
rigonich:

Esta função usa variáveis locais, portanto não a execute sim vezes como uma função separada, faça dois loops um após o outro em uma função, ou declare A como uma variável global. Eu saio correndo para comprar cigarros, e você tenta enquanto, se falhar, me bate quando eu voltar, nós resolvemos isso.


IS!!!! houve um pequeno erro... não foi Ticket, mas LastClosetPoz() e Sec_LastClosetPoz() que deveria ter sido impresso.

Tenho certeza de que minha versão não é a mais elegante... mas funciona... Como se coloca dois laços em uma função... Eu não sei... eu tentei... eu cometi erros... para o inferno com isso! (se não for muito incômodo - mostre-me - será útil para mim, se não - bem, não importa...) De qualquer forma, obrigado.

No entanto, tenho a sensação de que se eu precisar descobrir o bilhete da 35ª transação fechada...eu terei problemas com minha abordagem :)))) hahahah

bondade que ainda nem sequer está no horizonte...3 no máximo...

 
rigonich:

Esta função usa variáveis locais, portanto não a execute sim vezes como uma função separada, faça dois loops um após o outro em uma função, ou declare A como uma variável global. Vou pegar alguns cigarros e você pode experimentar, e se não funcionar, me bata quando eu voltar e nós descobriremos o que fazer.


funcionou até eu inserir o seguinte

se (OrderSelect( (LastClosetPoz (),SELECT_BY_TICKET)==verdadeiro)) Print("Stop Loss", OrderStopLoss();

jura

')' - contagem de parâmetros errados G:\Program_Files_2\MT4-demo\experts\000.mq4 (57, 60)

Eu não entendo o que ele quer?

--------------------------------------------------------------------------------------------

FIGURADO

==Tradução: Equipa PT-Subs

o que é estranho, pois os exemplos no tutorial sempre o dizem...

e também arredondou para cima o valor de parada... para o 4º dígito...

 
lottamer:


IS!!!! houve um pequeno erro... a impressão deveria ter sido LastClosetPoz() e Sec_LastClosetPoz() em vez de Ticket.

Tenho certeza de que minha versão não é a mais elegante... Mas funciona... Como inserir dois loops em uma função... Eu não sei... eu tentei... eu cometi erros... para o inferno com isso! (se não for muito incômodo - mostre-me - será útil para mim, se não - bem, não importa...) De qualquer forma, obrigado.

No entanto, tenho a sensação de que se eu precisar descobrir o bilhete da 35ª transação fechada...eu terei problemas com minha abordagem :)))) hahahah

bondade que ainda nem sequer está no horizonte...3 no máximo...



int Ticket1,Ticket2;
//+------------------------------------------------------------------+
int fLastClosetPoz()
{
int Tot=OrdensHistóriaTotal(),A,i;Ticket1=-1;Ticket2=-1;data/hora=0;
if(Tot>0)
{
for(i=0;i<OrdersHistoryTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==verdadeiro)
{
if(OrderSymbol()==Symbol())
{
if(OrderCloseTime()>time)
{
time=OrderCloseTime();Ticket1=OrderTicket();
}
}
}
caso contrário, continuar;
}
}
Tot=OrdensHistóriaTotal();A=Ticket1;tempo=0;
if(Tot>0)
{
for(i=0;i<OrdersHistoryTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==verdadeiro)
{
if(OrderTicket()==A)continuar;
if(OrderSymbol()==Symbol())
{
if(OrderCloseTime()>time)
{
time=OrderCloseTime();Ticket2=OrderTicket();
}
}
}
caso contrário, continuar;
}
}
retorno(0);
}
//+------------------------------------------------------------------+
P.S. Evocê precisa usar um loop aninhado (ou seja, loop dentro de um loop) para determinaro 35º comércio fechado.
 
rigonich:


int Ticket1,Ticket2;
//+------------------------------------------------------------------+
int fLastClosetPoz()
{
int Tot=OrdensHistóriaTotal(),A,i;Ticket1=-1;Ticket2=-1;data/hora=0;
if(Tot>0)
{
for(i=0;i<OrdersHistoryTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==verdadeiro)
{
if(OrderSymbol()==Symbol())
{
if(OrderCloseTime()>time)
{
time=OrderCloseTime();Ticket1=OrderTicket();
}
}
}
caso contrário, continuar;
}
}
Tot=OrdensHistóriaTotal();A=Ticket1;tempo=0;
if(Tot>0)
{
for(i=0;i<OrdersHistoryTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==verdadeiro)
{
if(OrderTicket()==A)continuar;
if(OrderSymbol()==Symbol())
{
if(OrderCloseTime()>time)
{
time=OrderCloseTime();Ticket2=OrderTicket();
}
}
}
caso contrário, continuar;
}
}
retorno(0);
}
//+------------------------------------------------------------------+


imprime zeros...não funciona...não vou cavar mais, porque é óbvio que os loops estão apenas substituindo um pelo outro - o volume não é claramente reduzido..... e já temos uma versão funcional. Posso comparar pedidos na primeira variante... e aqui não consigo nem ver onde está a segunda... e a primeira é zero...

depois de alguns pequenos ajustes... que claramente desenvolvem o cérebro, este código também funcionou! :))) obrigado

 
lottamer:


funcionou até eu inserir o seguinte

se ( "Stop Loss", OrderStopLoss());) Print("Stop Loss", OrderStopLoss();

jura

')' - contagem de parâmetros errados G:\Program_Files_2\MT4-demo\experts\000.mq4 (57, 60)

Eu não entendo o que ele quer?


Novamente 45, neste formulário OrderSelect(LastClosetPoz (),SELECT_BY_TICKET) seleciona entre as ordens pendentes e abertas por padrão e esta ordem não está lá. ColoqueOrderSelect(LastClosetPoz (),SELECT_BY_TICKET, MODE_HISTORY).
 
lottamer:


imprime zeros... não funciona... não é preciso escavar, porque é óbvio que os ciclos estão apenas substituindo um pelo outro - o volume claramente não diminuiu..... e já temos uma variante que funciona. Além disso, na primeira variante - posso comparar pedidos ... e aqui nem consigo ver onde está a segunda ... e a primeira é zero ...

depois de alguns pequenos ajustes... que claramente desenvolvem o cérebro, este código também funcionou! :))) obrigado


Basta imprimir as variáveis Ticket1 e Ticket2 após a chamada da função.
 

rigonich

Você pode me dizer para qual arquivo as variáveis do glob. são escritas? Para que possa ser rapidamente transferido para outro terminal.