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 1069

 
CloseAllBuy() é chamado em um único lugar: na função OnTick() pela condição if(Bid>buycloseprice) CloseAllBuy(); esta condição não veio na nova ativação e também não veio durante o período de desativação, mas a função CloseAllBuy() foi acionada de qualquer forma quando a EA foi ativada novamente.
 
rapid_minus:
CloseAllBuy() é chamado em um único lugar: na função OnTick() pela condição if(Bid>buycloseprice) CloseAllBuy(); esta condição não ocorreu na nova habilitação e também não ocorreu durante o período de desativação, mas a função CloseAllBuy() foi acionada de qualquer forma quando a EA foi habilitada novamente.
Haverá um código? O que é preço de compra, de onde veio, com o que foi inicializado, onde foi mudado, não se pode ver daqui...
 
Aqui está um pedaço de código:
 
Não consigo ver se o SRC está inserido por algum motivo. Caso contrário, me avise e eu o repetirei em texto.
 
Pergunta: favor aconselhar como aplicar uma variável global especificamente neste caso. Eu não consigo entender. Obrigado.
 
rapid_minus:
Aqui está um pedaço de código:

não é visível.

rapid_minus:
Pergunta:você poderia aconselhar como exatamente neste caso aplicar uma variável global? Eu não consigo entender. Obrigado.

Leia a documentaçãoVariáveis globais do terminal, verifique a ajuda do meta-editor, é mais rápido de atualizar lá.

Alternativamente, você pode salvar configurações e valores de variáveis importantes em um arquivo e lê-los a partir daí ao carregar.

Mas na maioria das vezes você pode passar sem tudo isso, basta usar sua cabeça e fazer a lógica correta no código.

 
Repetindo com texto:RefreshRates();
total=OrdensTotal();
if(total>0)
{
for(int i=0; i<=OrdensTotal(); i++)
if(OrderSelect(i,SELECT_BY_POS)==verdadeiro)
{
if(OrderType()==OP_BUY && OrderMagicNumber()==magic)
{ RefreshRates();
if(Bid>buycloseprice) CloseAllBuy();
}

if(OrderType()==OP_SELL && OrderMagicNumber()==magic)
{ RefreshRates();
if(Ask<sellcloseprice) CloseAllSell();
}
}
}

if((total==0) ||| (total>0 && OrderSelect(1,SELECT_BY_POS,MODE_TRADES)==verdadeiro && OrderSymbol()!=Symbol())
{
Comment("No open positions");

if(condition && timeBar!=iTime(Symbol(),Period(),1))
{
Print("Criterion-1 for BAY has appeared");
int poz_1 = OrderSend(Symbol(),OP_BUY,lot,Ask,slip,0,0,NULL,magic,Blue);
Sleep(1000);
RefreshRates();
int poz_2 = OrderSend(Symbol(),OP_BUY,lot,Ask,slip,0,0,NULL,magic,Blue);
Sleep(1000);
RefreshRates();
int poz_3 = OrderSend(Symbol(),OP_BUY,lot,Ask,slip,0,0,NULL,magic,Blue);
Sleep(1000);
RefreshRates();
int poz_4 = OrderSend(Symbol(),OP_BUY,lot,Ask,slip,0,0,NULL,magic,Blue);
Sleep(1000);
RefreshRates();
int poz_5 = OrderSend(Symbol(),OP_BUY,lot,Ask,slip,0,0,NULL,magic,Blue);
timeBar=iTime(Símbolo(),Período(),1);
double spread = (Ask-Bid);
buyopentime = iTime(Symbol(),Period(),0);
buycloseprice = NormalizeDouble((iOpen(Symbol(),Period(),0)+spread+75*Point),Digitos);
Comentário ("Magic 510015 BAY");
Imprimir ("CLOSE PRICE = ",buycloseprice");
}
}

}

//+
+*/
void CloseAllBuy()
{
bool fc; for (int i=OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==falso) break;
if (OrderType()==OP_BUY)
{
fc=OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),slip);
buycloseprice=0.0;
tc=OrderCloseTime();
}
}
}
 
Então, onde estou cometendo um erro em meu código?
 
rapid_minus:
Repetindo em texto:

Ainda não está claro de onde vem o preço de fechamento de compra, o que acontece com ele antes da condiçãose(Licitação>preço de fechamento de compra) FechamentoEllBuy();. Porque só vejo isto em código, depois de - buycloseprice = NormalizeDouble((iOpen(Symbol(), Period(), 0)+spread+75*Point), Digits);, mas onde estebuycloseprice é declarado e que valor é inicializado?


Se este é o suposto preço de fechamento de uma ordem de compra, então a lógica se quebra aqui porque o valor é passado para a variável depois que ela foi acionada e você não nos mostrou o que estava nela antes.

Agora um pouco de aritmética, existe tal laço no código:

for(int i=0; i<=OrdensTotal(); i++)

Digamos, há 5 pedidos que vão de 0 a 4. O laço conta de 0 a 5. Este laço funciona corretamente?

Além disso, na linha if(condição && timeBar!=iTime(Símbolo(),Período(),1), de onde vem a condição e a barra de tempo?

 
Acho que entendi - o erro é que eu estabeleço o preço de compra global e imediatamente dou a ele um valor de 0,0. E embora depois tome um valor específico ao abrir uma posição, este valor é perdido quando o terminal é desligado e toma o valor original ao ligar, ou seja, 0,0, e respectivamente a condição se (Bid>buycloseprice) é respeitada e o comando para fechar. Mas como transferir esta variável para o terminal global, eu não entendo.
Razão: