[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 213

 
Sergey_Rogozin:

Eu já descobri isso. A princípio, só olhava de forma desatenta.

Eu não vejo o erro.

Então, por que as ordens não são apagadas? Posso postar o código para toda a EA, mas será que isso faria sentido?
 
dzhini:
Então, por que as ordens não são apagadas? Eu posso traçar o código de toda a EA, mas será que isso faria sentido?

Tente apenas escrever suas condições no início. Na minha opinião, você não precisa do laço acima para() no início.


      if(CalculateCurrentOrders(Symbol())>0) {Alert(CalculateCurrentOrders(Symbol()));ClosePendingOrder(OP_SELLLIMIT);} // (1) 
      if(CalculateCurrentOrders(Symbol())<0) {Alert(CalculateCurrentOrders(Symbol()));ClosePendingOrder(OP_BUYLIMIT);} //(2) 
      if(TimeCurrent() - OrderOpenTime()>=HowManyHours*60*60) {ClosePendingOrder(OP_BUYLIMIT);ClosePendingOrder(OP_SELLLIMIT);} //(3

Basta colocá-los no início.

 

Hehehe... Isso é exatamente o que não é. Então, como se passaria pelas ordens sem um ciclo? Como estamos assumindo que poderia haver um grande número de pedidos e queremos evitar o uso de símbolos mágicos como etiquetas individuais, as etiquetas principais são símbolo de moeda e tipo de pedido. Basicamente, funciona com eles, mas descobri acidentalmente que não funcionaria com a combinação acima. Eu não consigo entender onde está o erro. E se eu não conseguir descobrir, vou até os verdadeiros especialistas.

Se você estiver realmente interessado, posso postar o código da coruja... vamos dar uma olhada... será útil.

 
dzhini:

Hehehe... Isso é exatamente o que não é. Então, como se passaria pelas ordens sem um ciclo? Como estamos assumindo que poderia haver um grande número de pedidos e queremos evitar o uso de símbolos mágicos como etiquetas individuais, as etiquetas principais são símbolo de moeda e tipo de pedido. Basicamente, ele funciona com esses, mas descobrimos acidentalmente que não funcionaria com a combinação acima. Eu não consigo entender onde está o erro. E se eu não conseguir descobrir, vou até os verdadeiros especialistas.

Se você estiver realmente interessado, posso postar o código da coruja... vamos dar uma olhada... ...será útil.

Sou preguiçoso demais para olhar agora.

Você tem um laço com seleção por tipo de operação e símbolo definidos na função,

e no início você prescreve apenas aquelas condições, no cumprimento das quais a ação necessária é executada, ou seja, ClosePendingOrder(OP).

Ou você pode pesquisar as ordens por assistente com a execução da ordem satisfazendo a condição .

 

Rapazes, criem corretoras estrangeiras...muito dinheiro e não querem pagar impostos....))) que trabalham no Metatrader 4...))

 
Vovo4ka:

Rapazes, criem corretoras estrangeiras...muito dinheiro e não querem pagar impostos....))) que trabalham no Metatrader 4...))

Há muitos deles.

O Google o levará a eles facilmente.

Pague seus impostos e durma bem...

 

Boa tarde. Por favor, informe como "forçar" a EA a parar de colocar ordens pendentes se eu já tiver 5 ordens de compra e 5 de venda abertas no mercado e assim que pelo menos uma das ordens fechar, a EA continua colocando ordens pendentes na direção em que a ordem fechou, e assim por diante no ciclo. (Agora, eu já afixei o código de forma correta)

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

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();

}
 

Rapazes, surgiu outra pergunta. Alguns corretores, incluindo a Alpari, por exemplo, oferecem a seus clientes um spread flutuante .... em conexão com isto meu assessor não trabalha...(((

Eles têm um número flutuante que só estraga tudo...((((

 
Qual é a pergunta? Reduzir a EA...
 
eddy:
Qual é a pergunta? Reduzir a EA...


Essa é a questão, refazer funciona em qualquer lugar, mas não com o flutuante((