Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1338

 

Vou fazer a pergunta de forma mais correta.

Há um bloco de código que explica ao Consultor Especialista quantas negociações ele precisa abrir. É assim que parece

int OPEN=1;

if(OrdensTotal())

OPEN=0; // não podem ser abertas mais ordens

if(OPEN===1)

{

//abrir aqui

}

O problema é que ele abre o número necessário de acordos (1 neste exemplo) para todos os símbolos. E eu preciso explicar a ele

que precisa abrir este número de acordos sobre o instrumento CURRENT . Algo como _Símbolo ou Símbolo (). Como isso pode ser feito? Eu acho que a solução é simples.

 
sibiriyak73:

Vou fazer a pergunta de forma mais correta.

Há um bloco de código que explica ao Consultor Especialista quantas negociações ele precisa abrir. É assim que parece

int OPEN=1;

if(OrdensTotal())

OPEN=0; // não podem ser abertas mais ordens

if(OPEN===1)

{

//abrir aqui

}

O problema é que ele abre o número necessário de acordos (1 neste exemplo) para todos os símbolos. E eu preciso explicar a ele

que precisa abrir este número de acordos sobre o instrumento CURRENT . Algo como _Símbolo ou Símbolo (). Como isso pode ser feito? Eu acho que a solução é simples.

if(!isTradeToDay(Symbol()))
 {
  //Здесь открываем
 }
 
Iurii Tokman:
É preciso fazer um monte de negócios, e em uma venda
 
sibiriyak73:
Explode um inferno de muitos negócios, e em uma venda

bem, há duas opções:
1. mostrar todo o código
2. aderir ao telepath club

 
Iurii Tokman:

bem, há duas opções:
1. mostrar o código completo
2. aderir ao telepath club:)

:)

Descobri como abrir tanto a compra quanto a venda. Mas o número de acordos não se abre em cada tick

int start()

{

double a=iOpen(NULL,PERÍODO_D1,0);

duplo d=_ORDER*0.00001;

duplo c=d+1;

duplo s=c*a;

limite duplo= NormalizarDuplo(s,_Dígitos);

// Imprimir("nível limite= ",limite);

duplo e=_STOP*0.00001;

duplo n=e+1;

duplo m=n*a;

duplo SL= NormalizeDuplo(m,_Dígitos);

//Print("stop level= ",SL);

duplo p=_TP*0.00001;

duplo f=p+1;

duplo z=f*a;

duplo TP= NormalizeDuplo(z,_Dígitos);

duplo w=iOpen(NULL,PERÍODO_D1,0);

duplo q=_ORDER*0.00001;

duplo j=q+1;

duplo v=w/j;

limite duplo1= NormalizeDuplo(v,_Dígitos);

// Imprimir("nível limite= ",limite);

duplo k=_STOP*0.00001;

duplo y=k+1;

duplo u= p/p/y;

duplo SL1= NormalizeDuplo(u,_Dígitos);

//Print("stop level=",SL);

duplo g=_TP*0.00001;

duplo _f=g+1;

duplo _m=w/_f;

duplo TP1= NormalizeDuplo(_m,_Dígitos);


if(Hora()==Nac)

{

if(iOpen(NULL,PERÍODO_D1,0)<iOpen(NULL,PERÍODO_D1,1))

{

if(!isTradeToDay(Símbolo()))

{

int ticket1=OrderSend(Symbol(),OP_SELLSTOP,1.5,limit1,3,SL1,TP1,NULL,0,0,clrRRed); //abrir aqui

}

}

if(iOpen(NULL,PERIOD_D1,0)>iOpen(NULL,PERIOD_D1,1))

{

if(isTradeToDay(Símbolo()))

{

int ticket=OrderSend(Symbol(),OP_BUYSTOP,1.5,limit,3,SL,TP,NULL,0,0,0,clrBlueViolet); //abrir aqui

}

}

}

if(Hora()==Kon)

{

resultado da bool;

erro int;

//----

while(OrdensTotal()>0)

{

if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))

{

if(OrderType()==OP_BUY)

result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),MarketInfo(OrderSymbol(),MODE_DIGITS),3,CLR_NONE);

if(OrderType()==OP_SELL)

result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),MarketInfo(OrderSymbol(),MODE_DIGITS)),3,CLR_NONE);

if(OrderType()==OP_BUYLIMIT || OrderType()==OP_BUYSTOP || OrderType()==OP_SELLLLIMIT || OrderType()==OP_SELLSTOP)

OrderDelete(OrderTicket());

if(resultado!=TRUE)

{

erro=GetLastError();

Imprimir("LastError = ",error, ",Symbol());

}

senão

erro=0;

}

senão

Print("Error when order select ", GetLastError());

}

}

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

retorno(0);

}

Aqui está o código sem nenhuma variável declarada.

 
sibiriyak73:

o código deve ser inserido Alt+S
e onde está a função ?
como você a compila ? sem erros ?

 
Iurii Tokman:

o código deve ser inserido Alt+S
e onde está a função ?
como você a compila ? sem erros ?

A função está no fundo. A compilação é sem erros. O lado da venda conseguiu ajustar uma negociação em um instrumento específico, mesmo que haja abertura em outro

instrumentos. Mas o lado da baía atira em cada carrapato e é isso

 
Iurii Tokman:

O código precisa ser inserido Alt+S
e onde está a função ?
como foi compilado ? sem erros ?

No momento, o código é assim. Vender tudo bem, mas comprar tudo bem, cada carrapato é um negócio
Arquivos anexados:
 
sibiriyak73:
No momento, o código é assim. Vender tudo bem, mas comprar lado cada carrapato é uma troca

no lado da compra, a mesma coisa deve ser feita

 
Iurii Tokman:

o mesmo deve ser feito no lado da compra

Não consigo descobrir o que deve ser mudado na função isTradeToDay para torná-la igual no lado da compra e no lado da venda. Ainda assim o lado da compra não funciona :(

Razão: