[Arquivo!] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por ela. Não poderia ir a lugar algum sem você - 2. - página 215

 

E ainda, como limitar o número de ordens abertas na EA, porque ela as abre como uma bola de neve?

 
stalkertula:

E ainda, como limitar o número de ordens abertas na EA, porque ela as abre como uma bola de neve?

1. Verificou a necessidade de estabelecer um pedido, se sim.

2. Verifique o número de pedidos existentes, se sim, então...

3. Verificado o tempo decorrido desde que o pedido anterior foi estabelecido (ou qualquer outro critério de atraso), se sim, então...

4. Colocou uma ordem.

Em geral, é algo parecido com isto...

Embora... cada um desses itens inclua várias outras verificações necessárias para corrigir os parâmetros de configuração do pedido (para evitar o retorno de um erro do CD)

Dica:
Quando você decide fazer um pedido ou abrir uma posição, quais são seus próprios critérios?
Agora pergunte-se: "Por que eu não deixo minha EA avaliar todos os critérios para minha decisão como eu faço?
Uma vez considerados todos os critérios em sua EA, você reduzirá consideravelmente os erros lógicos...

Tome como regra descrever primeiro toda a lógica deste ou daquele bloco de programa em um pedaço de papel (não há nada de errado nisso, pelo contrário - ajuda),
e depois traduzi-lo em código.

 
artmedia70:

1. Verificar se um mandado precisa ser instalado, se for o caso

2. Verifique o número de pedidos existentes já em vigor, se sim, então...

3. Verificado o tempo decorrido desde que o pedido anterior foi estabelecido (ou qualquer outro critério de atraso), se sim...

4. Ordem colocada.

Em geral, é algo assim...
Embora... cada um desses pontos também inclua várias verificações necessárias para corrigir os parâmetros de configuração do pedido (para evitar o retorno de um erro do CD)

Obrigado por sua resposta, mas o algoritmo está escrito em russo, mas em mql, eu não sou forte, pelo menos uma dica sobre as funções que fixaram o número (o número de prescrição nos ajustes) ordens de venda/compra abertas, e então o sinal para proibir a colocação de um selltop/buystop.

//----------------------------------------------------------------------- проверка установленных стоп ордеров

double StopOrderUp,StopOrderDn,price,MinBuyOrder=1000000000,MaxSellOrder,OldBuyOrder,OldSellOrder,OldBuyLot,OldSellLot;

int TicketUp,TicketDn;

TimeOllOpenBuy=0;TimeOllOpenSell=0;

double OOL_BUYSTOP,OOL_SELSTOP;

for (i=0; i<OrdersTotal(); i++)

{

if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)

{ price = OrderOpenPrice();

if (Magic==OrderMagicNumber() && OrderSymbol()==Symbol())

{

if (OrderType()==OP_BUYSTOP ) {StopOrderUp = price; TicketUp=OrderTicket(); OOL_BUYSTOP=OrderLots();}

if (OrderType()==OP_SELLSTOP) {StopOrderDn = price; TicketDn=OrderTicket(); OOL_SELSTOP=OrderLots();}

if (OrderType()==OP_BUY )

{ TimeOllOpenBuy = TimeOllOpenBuy + TimeCurrent()-OrderOpenTime();

if (MinBuyOrder > price) MinBuyOrder = price;

OldBuyOrder=price;

OldBuyLot=OrderLots();

if (DrawInfo&&!IsTesting()){

NameLine="ордер Bay "+OrderTicket();ObjectDelete(NameLine);ObjectDelete(NameLine+" з");

ObjectCreate(NameLine, OBJ_TREND, 0, OrderOpenTime(),price,Time[0],Bid);

ObjectSet(NameLine, OBJPROP_COLOR,LightSkyBlue);

ObjectCreate(NameLine+" з",OBJ_ARROW,0,Time[0],Bid,0,0,0,0);

ObjectSet(NameLine, OBJPROP_STYLE, STYLE_DOT);// Стиль

ObjectSet(NameLine, OBJPROP_RAY, false); // Луч

ObjectSet(NameLine+" з",OBJPROP_ARROWCODE,3);ObjectSet(NameLine+" з",OBJPROP_COLOR,WhiteColor);}

}

if (OrderType()==OP_SELL)

{ TimeOllOpenSell = TimeOllOpenSell + TimeCurrent()-OrderOpenTime();

if (MaxSellOrder < price) MaxSellOrder = price;

OldSellOrder=price;

OldSellLot=OrderLots();

if (DrawInfo&&!IsTesting()){

NameLine="ордер Sell "+OrderTicket();ObjectDelete(NameLine);ObjectDelete(NameLine+" з");

ObjectCreate(NameLine, OBJ_TREND, 0, OrderOpenTime(),price,Time[0],Ask);

ObjectSet(NameLine, OBJPROP_COLOR,Pink);

ObjectCreate(NameLine+" з",OBJ_ARROW,0,Time[0],Ask,0,0,0,0);

ObjectSet(NameLine, OBJPROP_STYLE, STYLE_DOT);// Стиль

ObjectSet(NameLine, OBJPROP_RAY, false); // Луч

ObjectSet(NameLine+" з",OBJPROP_ARROWCODE,3);ObjectSet(NameLine+" з",OBJPROP_COLOR,WhiteColor);}

}

}

}

}

if (MinBuyOrder==1000000000 && MaxSellOrder==0 && OOL_BUYSTOP!=OOL_SELSTOP)//если серия закрылась

{

DELETEORDERS();

}
 
Roman.:

Testei EAs em preços abertos de novos bares (para fazer isso, preciso especificar no código EA o controle para a formação de um novo bar)
Tento modificar as paradas no sentido de um tic-tac. Roman, quais são as desvantagens desta modificação, além das setas de modificação que faltam?
 

ao colar o indicador, o terminal fica pendurado e escreve a mesma coisa nos registros: subjanela número -1 desconhecido para a função ObjectCreate

Tenho o índice de uma janela com o nome deste indicador em todo ObjectCreate(x=WindowFind(short_name); ObjectCreate("fut "+i,OBJ_TREND,x,0,0,0);)

Sempre funcionou antes... Não entendo por que é assim.

 
eddy:

quando inseri um indicador, o terminal fica pendurado e escreve a mesma coisa no log: 15:18:16 RSI EURUSD,M15: número de subjanela desconhecido -1 para a função ObjectCreate

Tenho um índice de uma janela com o nome deste indicador em todos os ObjectCreate (WindowFind(indikator_name), por exemplo, ObjectCreate("fut "+i,OBJ_TREND,x,0,0,0,0);

sempre funcionou antes... Não entendo por que é assim

Pode ser porque o ObjectCreate é chamado do init(). Neste caso, a busca na janela pode retornar -1, mesmo que o nome do indicador esteja correto.
 
isso é o que ele está fazendo... obrigado
 
Eu não consigo entender.
2011.03.07 15:49:40     2011.01.19 10:50  RSI-тралинг EURUSD,H1: OrderSend error 131

Isto é na Alpari...com spread flutuante...mas o spread fixo funciona bem...

Li sobre o erro, coloquei todos os volumes e 1 lote e 0,1 lote e 0,01 lote.....pis o mesmo erro((((((

 
Vovo4ka:
Eu não consigo entender, diz ele.

Isto é na Alpari...com spread flutuante...mas o spread fixo funciona bem...

Li sobre o erro, coloquei todos os volumes e 1 lote e 0,1 lote e 0,01 lote.....pis o mesmo erro((((((

Em um código do erro, você pode aprender a direção em que deve cavar. Mas sem o código, ninguém lhe dirá de onde vem este erro.

 
Vovo4ka:
Eu não consigo entender.

Isto é na Alpari...com spread flutuante...mas o spread fixo funciona bem...

Li sobre o erro, coloquei todos os volumes e 1 lote e 0,1 lote e 0,01 lote.....pis o mesmo erro((((((


Escreva o código.