Precisamos acrescentar código ao EA que fechará todas as ordens e posições no final da semana de negociação.
Você poderia, por favor, escrever este código?
Eu posso fazer isso. Não há problema. Você já fez alguma coisa por conta própria? Este tópico não é sobre obter coisas de graça, é sobre ajudar as pessoas que estão tentando codificar por si mesmas.
artmedia70: Eu posso fazer isso. Não há problema. Você já fez alguma coisa por conta própria? Este tópico não se trata de preparar algo de graça, mas de ajudar aqueles que estão tentando codificar por conta própria.
A função que determina a última posição fechada na parada tem o tipo bool, enquanto você está tentando retornar o tipo duplo a partir dele. Assim, ele retorna 0 ou 1.
Eu lhe disse que você deveria acrescentar a passagem de uma variável por referência a ela:
A função que determina a última posição fechada na parada tem o tipo bool, enquanto você está tentando retornar o tipo duplo a partir dele. Assim, ele retorna 0 ou 1.
Escrevi-lhe que você deve acrescentar a passagem de uma variável por referência a ela:
Verifique agora a última compra, por exemplo:
Assim...
Fez tudo como você disse. Todos compilados...... mas o funcionamento não funciona quando o assessor de testes..... todos os cargos de assessor abrem 0,1 lote.
doubleMagic, Lot;int start()
{
double Price=iOpen (Symbol (),0,0);
int last_order_bar = 0;
int ot = OrdersTotal();
if (ot>0) //если есть ордера в рынке
{
if (OrderSelect (ot-1,SELECT_BY_POS))
if (OrderType ()==OP_BUY || OrderType ()==OP_SELL )
last_order_bar = iBarShift (Symbol (),0,OrderOpenTime ());
}
int last_hist_order_bar = 0;
int oht = OrdersHistoryTotal();
if (oht>0)
{
if (OrderSelect (oht-1,SELECT_BY_POS, MODE_HISTORY))
if (OrderType ()==OP_BUY || OrderType ()==OP_SELL)
last_hist_order_bar = iBarShift (Symbol (),0,OrderOpenTime ());
}
if (ot==0)
if (Bid ==Price)
//=============================================================== if(((Open[1]-Close[1])>100*Point)&&((Open[1]-Close[1])<120*Point))
if(((High[1]-Open[1])>40*Point)&&((High[1]-Open[1])<60*Point))
if(((Close[1]-Low[1])>40*Point)&&((Close[1]-Low[1])<60*Point))
//============================================================
// задавать минимальное значение лота я не стал,мне кажется для тестера это не обязательноif (isCloseLastPosByStop(Symbol(), OP_BUY, Magic, Lot))
{Lot=Lot*2;OrderSend(Symbol(),OP_SELL,Lot,Bid,1,Ask+1500*Point,Ask-300*Point,"jfh",123 );
}
else
{
Lot=0.1;
OrderSend(Symbol(),OP_SELL,1,Bid,Lot,Ask+1500*Point,Ask-300*Point,"jfh",123 );
}
return(0);
}
//============================================================ bool isCloseLastPosByStop(string sy, int op, int mn, double ll) //у Вас перед названием формального параметра 11 стоял знак &- я его убрал.
{
double pt;
datetime t; //у вас тип переменной t был int - я сделал datetimeint dg, i, j=-1, k=OrdersHistoryTotal()-1;
for (i=k; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
{
if (OrderMagicNumber()!=mn) continue; // если магик не тот, переходим к следующемуif (OrderSymbol()!=sy) continue; // если символ не тот, переходим к следующемуif (OrderType()!=op) continue; // если тип не тот, переходим к следующемуif (t<OrderCloseTime())
{
t=OrderCloseTime();
j=i;
}
}
}
if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY))
{
dg=MarketInfo(OrderSymbol(), MODE_DIGITS); // количество знаков в цене символа ордера
pt=MarketInfo(OrderSymbol(), MODE_POINT); // размер пункта инструмента в валюте котировки ордераif (MathAbs(OrderClosePrice()-OrderStopLoss())< 0.5*pt) // Если закрыт по стопу
{
ll=OrderLots(); // записываем количество лотов в ордере, закрытом по стопуreturn(true); // возвращаем истину
}
}
return(False); // возвращаем ложь (позиции нету, либо не по стопу)
}
Por favor, diga-me qual é o meu erro.
Não entendo este ponto - como você notou corretamente a função retorna o valor do tipo bool, mas na chamada de função, na qual a função deve colocar o valor do tipo bool.
Eu fiz tudo como você disse. Tudo compila......, mas a função não funciona ao testar a EA..... todas as posições que a EA abre 0,1 lotes.
Você poderia me dizer qual é o meu erro?
Não entendo este momento - como você percebeu corretamente a função retorna valor do tipo bool, mas na chamada de função, na qual a função deve colocar valor do tipo bool
Você sugere a especificação de outros tipos de valores .
Obrigado.
bool isCloseLastPosByStop(string sy, int op, int mn, double ll) //у Вас перед названием формального параметра 11 стоял знак &- я его убрал.
Por que você a removeu? Se você o tivesse deixado, tudo teria funcionado.
Boa noite.
Você poderia me dizer como adicionar o fechamento de todas as posições e a exclusão de todas as ordens ao final da semana de negociação?
Obrigado!
Boa noite.
Você poderia me dizer como adicionar o fechamento de todas as posições e a exclusão de todas as ordens ao final da semana de negociação?
Obrigado!
Escreva tal roteiro, depois jogue-o na tabela quando quiser fechar e apague tudo. Isso é tudo...
Seja bem-vindo!
Escreva tal roteiro, depois jogue-o na tabela quando quiser fechar e apague tudo. A questão é...
Por favor!
Obrigado:) Esclarecendo o pedido.
Precisamos acrescentar código ao EA que fechará todas as ordens e posições no final da semana de negociação.
Você poderia, por favor, escrever este código?
Obrigado:) Esclarecendo o pedido.
Precisamos acrescentar código ao EA que fechará todas as ordens e posições no final da semana de negociação.
Você poderia, por favor, escrever este código?
Eu posso fazer isso. Não há problema. Você já fez alguma coisa por conta própria? Este tópico não se trata de preparar algo de graça, mas de ajudar aqueles que estão tentando codificar por conta própria.
Confira em https://book.mql4.com/ru/trading/orderclose.
Pesquisado no google, no fórum. Não encontrei nenhum. Talvez eu esteja escrevendo a pergunta de forma errada.
Pensei em perguntar no tópico do novato.
Como receitar?
Enquanto você executa o roteiro:
Uma janela aparece com as guias "geral" e "parâmetros de entrada".
É possível que quando eu executar o roteiro, uma caixa de data apareça, eu introduza a data, clique em ok e tudo funcione?
E posso fazer com que o roteiro lembre a última data em que entrei?
A função que determina a última posição fechada na parada tem o tipo bool, enquanto você está tentando retornar o tipo duplo a partir dele. Assim, ele retorna 0 ou 1.
Eu lhe disse que você deveria acrescentar a passagem de uma variável por referência a ela:
Verifique agora a última compra, por exemplo:
Assim...
A função que determina a última posição fechada na parada tem o tipo bool, enquanto você está tentando retornar o tipo duplo a partir dele. Assim, ele retorna 0 ou 1.
Escrevi-lhe que você deve acrescentar a passagem de uma variável por referência a ela:
Verifique agora a última compra, por exemplo:
Assim...
Fez tudo como você disse. Todos compilados...... mas o funcionamento não funciona quando o assessor de testes..... todos os cargos de assessor abrem 0,1 lote.
Por favor, diga-me qual é o meu erro.
Não entendo este ponto - como você notou corretamente a função retorna o valor do tipo bool, mas na chamada de função, na qual a função deve colocar o valor do tipo bool.
Você sugeriu especificar outros tipos de valores.
Obrigado.
Eu fiz tudo como você disse. Tudo compila......, mas a função não funciona ao testar a EA..... todas as posições que a EA abre 0,1 lotes.
Você poderia me dizer qual é o meu erro?
Não entendo este momento - como você percebeu corretamente a função retorna valor do tipo bool, mas na chamada de função, na qual a função deve colocar valor do tipo bool
Você sugere a especificação de outros tipos de valores .
Obrigado.
Por que você a removeu? Se você o tivesse deixado, tudo teria funcionado.
Por que removê-lo? Se tivessem, tudo teria funcionado