[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 737

 
trader265:
Pessoal, muito obrigado a todos vocês. Vou direto ao assunto. Se não der certo, posso incomodar você?

Mesmo que não esteja aqui ninguém hoje, seu posto será visto amanhã. Não é como se tivéssemos um escritório aqui :) onde todos partem no final do dia :)
 
drknn:


A lógica é a seguinte:

O limite de 8 buffers indicadores é devido ao próprio idioma. Não há sentido em limitar o número de outras matrizes, pois de qualquer forma não pode exceder o tamanho de RAM + arquivo swap. Portanto, não vale a pena exagerar. Quero dizer que uma certa quantidade de memória é alocada para a matriz.

Aqui está meu problema:'SymbolSellColor' - excesso de pilha interna - simplifique o programa, por favor

Aumentar a pilha não ajuda. O código é simples, eu não sou bom em escrever complexos. RAM, troca - não é um problema, é o suficiente.

 
Abzasc:

Aqui está meu problema: 'SymbolSellColor' - excesso de pilha interna - simplifique o programa, por favor

Excesso de pilha - não ajuda. O código é simples, não sou bom em complexos de escrita. RAM, troca - não é um problema, é o suficiente.


Pergunte aos desenvolvedores - talvez haja alguns problemas que não conhecemos.
 

Tenho uma pergunta por que uma ordem pendente não se abre, por favor, me ajude.

extern int TakeProfit=100;
extern int StopLoss=100;
extern double Lot=0.01;
extern int StartTime=0;
int Today=0;
int h=100;
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{if(DayOfWeek()==0 || DayOfWeek()==6) return(0); // в выходные не работаем
if(!IsTradeAllowed()) return(0); // пропустим тик если терминал занят
int total = OrdersTotal();
if(total == 0)

   {NewOrder(OP_BUY,Lot);
    NewOrder(OP_SELL,Lot);
    NewOrder(OP_BUYLIMIT,Lot);
    Today=TimeDay(TimeCurrent());}
return(0);}

  
//+------------------------------------------------------------------+
int NewOrder(int Cmd,double Lot)
{double TP=0; //тейкпрофит
double SL=0; //стоплосс
double PR=0; //Цена
double PR1=0; //Цена1
while(!IsTradeAllowed()) Sleep(100);
if(Cmd==OP_BUY)
   {PR=Ask;
    if(TakeProfit>0) TP=Ask+TakeProfit*Point;
    if(StopLoss>0) SL=Ask-StopLoss*Point;}
if(Cmd==OP_SELL)
   {PR=Bid;
    if(TakeProfit>0) TP=Bid-TakeProfit*Point;
    if(StopLoss>0) SL=Bid+StopLoss*Point;}
if(Cmd==OP_BUYLIMIT)
   {PR1=Ask-Point*h;
    if(TakeProfit>0) TP=PR+TakeProfit*Point;
    if(StopLoss>0) SL=PR-StopLoss*Point;}
int tic=OrderSend(Symbol(),Cmd,Lot,PR,3,SL,TP,0,0,CLR_NONE);
int tic1=OrderSend(Symbol(),Cmd,Lot,PR1,3,SL,TP,0,0,CLR_NONE);
if(tic<0) Print(GetLastError());
if(tic1<0) Print(GetLastError());
return(tic);}
 
FoxUA:

questionar qual é o erro por que uma ordem pendente não abre ajuda, por favor

Eu reconheço meus comentários em seu código :))))))))))

Verifique o que exatamente você passa para a função como parâmetro e o que exatamente a função obtém quando ela é executada - imprima-a.

 
drknn:
Eu reconheço meus comentários em seu código :))))))))))

Verifique exatamente o que você passa para a função como um parâmetro e exatamente o que a função recebe quando ela é executada - imprima isso.


Estou coletando a construtora Lego há cerca de 3 horas e o pedido pendente não quer abrir.
 
drknn:
Eu reconheço meus comentários em seu código :))))))))))

Verifique exatamente o que você passa para a função como um parâmetro e exatamente o que a função recebe quando ela é executada - imprima isso.


Vejo como fazer a próxima função

int tic=OrderSend(Symbol(),Cmd,Lot,PR,3,SL,TP,0,0,CLR_NONE);


após esta função

int NewOrder1(int Cmd,double Lot)
{double TP=0; //тейкпрофит
double SL=0; //стоплосс
double PR1=0; //Цена1
while(!IsTradeAllowed()) Sleep(100);

if(Cmd==OP_BUYLIMIT)
   {PR1=Ask-Point*h;
    if(TakeProfit>0) TP=PR1+TakeProfit*Point;
    if(StopLoss>0) SL=PR1-StopLoss*Point;}

int tic1=OrderSend(Symbol(),Cmd,Lot,PR1,3,SL,TP,0,0,CLR_NONE);

if(tic1<0) Print(GetLastError());
return(tic1);}
 

Eu entendo, você só precisa definir o operador não apenas um parâmetro, mas através de outro

 

Pergunta, qual função é responsável pela data de expiração de uma ordem pendente? Eu não vejo e diz 147 O uso da data de expiração não é permitido pelo corretor

 

expiração - data de expiração da ordem pendente. Quando o tempo de expiração chegar, a ordem pendente será automaticamente fechada no servidor comercial. Em alguns servidores comerciais, a aplicação do tempo de expiração de pedidos pendentes pode ser proibida. Neste caso, ao tentar definir um valor não zero do parâmetro, a ordem comercial será rejeitada.

Que valor deve ser estabelecido para que o pedido não seja rejeitado?

Razão: