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 371

 
SpikeOne:


Pareço ter encontrado um bug=) nos dados iniciais onde o passo entre os pedidos está definido para int e eu coloquei 1,7, mudei-o para o dobro e funcionou bem=)


Bem, olá)))) quando você encontra um erro, você percebe que tudo era mais fácil do que você pensava)
 
Ekburg:

então não sou nenhuma ajuda) precisa passar por todo o assessor.

Eu mudei tudo para o dobro, agora está funcionando bem, preciso testar o resto dos pontos =) Se eu fizer o EA ter um bom lucro, posso publicá-lo se necessário =)

Eu teria esquecido qual era o problema porque não entendo porque não funcionava direito e estou feliz por não ter funcionado!)

 
SpikeOne:

Mudei tudo para o dobro, está funcionando bem agora, preciso testar o resto dos pontos =) Se eu fizer o EA ter um bom lucro, posso publicá-lo se necessário =)

Eu gostaria de ter esquecido de outra forma, não sei por que não funcionou como deveria =) Estou feliz por não ter esquecido).


Você pode, porque não)

De nada).

A estrada vai andar, eu também, no início, tive esses momentos, dor de cabeça, mas quando você resolve o problema, há uma espécie de satisfação, e esse sentimento não tem preço))

 
O tempo após o sinal 1 deve ser registrado e não deve ser alterado até a chegada do sinal 2, com o sinal 1 ocorrendo repetidamente enquanto se aguarda o sinal 2, mas o tempo deve permanecer inalterado desde que o sinal 1 foi recebido pela primeira vez.
 
Forexman77:
O tempo após o sinal 1 deve ser registrado e não deve ser alterado até a chegada do sinal 2, com o sinal 1 ocorrendo repetidamente enquanto se aguarda o sinal 2, mas o tempo deve permanecer inalterado desde que o sinal 1 foi recebido pela primeira vez.

int sm;
datetime data;
if(sm==0) if(сигнал1==true) data=TimeLocal(); sm=1;
if(sm==1) if(сигнал2==true) data=TimeLocal();
 
extern bool test=false;  // откл объектов при тесте
extern int prof=4;     // уровень профита
extern int chag=3;     // шаг между ордерами
extern int risk=0;         //уровень риска
extern double lot = 0.01; // начальный лот
extern double k_lot=2; // увеличение объема
extern double lot_max=100; // максимальный лот
//=====================================================//
int kn=20;  // величина вертикальной шкалы
int magic = 37649; 
extern double  BeginHour =3;
bool result;
bool fail=false; 
double gg=0;
int k,c,b_ind,s_ind,objtot,er;
double buy_prs,sel_prs,buy_ind,sel_ind,or_bu,or_sl,prf_b,prf_s,b_pr,s_pr,b2_cls,s2_cls;
string nh;
//нннннннннннннннннннннннннннн//
int init()
  {
//----
 
if(Digits==2) k=1;
if(Digits==3) k=10;
if(Digits==4) k=1;
if(Digits==5) k=10;
nh=StringSubstr(Symbol(),2,2);
 
 if(!IsTesting()){
    buy_prs=GlobalVariableGet(nh+"_buy_prs"); buy_ind=GlobalVariableGet(nh+"_buy_ind");
    sel_prs=GlobalVariableGet(nh+"_sel_prs"); sel_ind=GlobalVariableGet(nh+"_sel_ind");}
 
c=0;
chag=chag*k;
prof=prof*k;
//нннннннннннннннннннннннннннн//
   return(0);
  }
//============================================//
int start()
  {
//----
int i,y,tick_s,tick_b,tick_slm,tick_blm;
double prov,price_b,price_s,prof_b,prof_s,lot_b,lot_s,b_cls,s_cls,abc;
bool mod_b=false,mod_s=false;
 
//=================//
   if(Bars-c>1) c=0;
   i=Bars-c; c=Bars;
//==================================//   
 if(!IsTesting()){for(y=0;y<OrdersTotal();y++)
   {OrderSelect(y,0,0); if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=magic||(OrderType()!=0&&OrderType()!=1)) continue;
      prov=prov+OrderProfit()+OrderSwap()+OrderCommission();}
   if(prov<0&&prov<GlobalVariableGet(nh+"_max_prov"))GlobalVariableSet(nh+"_max_prov",prov);}
 
//=================================================//
    for (y=0;y<OrdersTotal();y++){OrderSelect(y,0);
      if(Symbol()!=OrderSymbol()||OrderMagicNumber()!=magic) continue; 
      if (OrderType() == 0 || OrderType() == 1) abc=abc + OrderProfit() + OrderSwap() + OrderCommission();
     
      if(OrderType()==0){if(prf_b!=OrderTakeProfit() && prf_b!=0) mod_b=true; prf_b=OrderTakeProfit();}
      if(OrderType()==OP_BUY && tick_b<OrderTicket()) {
       tick_b=OrderTicket();
       price_b=OrderOpenPrice();
       lot_b=OrderLots();
       prof_b=OrderTakeProfit();}
 
      if(OrderType()==1){if(prf_s!=OrderTakeProfit() && prf_s!=0) mod_s=true; prf_s=OrderTakeProfit();}      
      if(OrderType()==OP_SELL && tick_s<OrderTicket()) {
       tick_s=OrderTicket();
       price_s=OrderOpenPrice();
       lot_s=OrderLots();
       prof_s=OrderTakeProfit();} 
 
      if (OrderType()==OP_BUYLIMIT)  tick_blm = OrderTicket();
      if (OrderType()==OP_SELLLIMIT) tick_slm = OrderTicket();}
//=====================================================//
   if(Ask>buy_prs && or_bu<=0) {buy_prs=Ask; buy_ind=Ask;}
   if((Ask<buy_prs && Ask<buy_ind) || buy_ind==0) buy_ind=Ask;
   b_cls=buy_ind+MathFloor(prof+chag/2)*Point;
   or_bu=MathFloor((buy_prs-buy_ind)/Point/chag); 
   if(Bid>=b_cls && or_bu>0){buy_prs=Ask; buy_ind=Ask; or_bu=0;}
   if(tick_b==0 && b_ind>0){buy_prs=Ask; buy_ind=Ask; or_bu=0;}
 
   if((Bid<sel_prs||sel_prs==0) && or_sl<=0) {sel_prs=Bid; sel_ind=Bid;}
   if(Bid>sel_prs && Bid>sel_ind) sel_ind=Bid;
   s_cls=sel_ind-MathFloor(prof+chag/2)*Point;
   or_sl=MathFloor((sel_ind-sel_prs)/Point/chag);
   if(Ask<=s_cls && or_sl>0){sel_prs=Bid; sel_ind=Bid; or_sl=0;}
   if(tick_s==0 && s_ind>0) {sel_prs=Bid; sel_ind=Bid; or_sl=0;}
 
 if(!IsTesting()){
   GlobalVariableSet(nh+"_buy_prs",buy_prs); GlobalVariableSet(nh+"_buy_ind",buy_ind);
   GlobalVariableSet(nh+"_sel_prs",sel_prs); GlobalVariableSet(nh+"_sel_ind",sel_ind);} 
//===============================
   if(tick_b==0 && tick_blm!=0) OrderDelete(tick_blm);
   if(tick_s==0 && tick_slm!=0) OrderDelete(tick_slm);
   if (AccountBalance()>gg)
   {
    gg= AccountBalance();
   }
   if(Hour() >= BeginHour )
{
if ( AccountEquity()>=gg)
   {
 //if(AccountEquity()>=740)
  // {
 
   for(int zx=OrdersTotal(); zx+1>=0; zx--)
      {
      if(OrderSelect(zx,SELECT_BY_POS,MODE_TRADES)==true)
      OrderDelete(OrderTicket());
      }
   while (OrdersTotal()>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_SELLLIMIT || OrderType()==OP_SELLSTOP)
         OrderDelete(OrderTicket());
         if(result!=TRUE)
            {
            er=GetLastError();
            Print("LastError = ",er, " ",Symbol());
            }
         else er=0;
         }
      else Print( "Error when order select ", GetLastError());
      }
   if(OrdersTotal()==0) fail=true;
   }
}
if(fail==true) return(0);
 
   if(or_bu==risk && tick_b==0) open(0);
   if(or_sl==risk && tick_s==0) open(1);

Aqui está o código em geral, ele é inserido no início e a parte inteira até o lugar que eu dei abaixo, aqui está o próprio Expert Advisor no qual você deve inserir o início https://www.mql5.com/ru/code

Você começa a noite por volta das 00:00 horas e ele negocia até um certo horário, depois disso fecha os negócios e a EA.

if(or_bu==risk && tick_b==0) open(0);
if(or_sl==risk && tick_s==0) open(1);
 
Ekburg:


Precisa ser um pouco mais complicado. Uma variável depende do sinal 1, portanto, enquanto não houver sinal 2, os dados usados pelo sinal 1 serão atualizados, mudando a variável, mas eu preciso que a variável mude uma vez. Alterações subseqüentes na variável somente após o sinal 2. Em resumo, a chave 1 é acionada, aciona uma e nada mais muda até que a chave 2 seja acionada. Mas, como a chave 1 usa certos dados para ligar, ela os processará novamente, e você só precisa fazê-lo uma vez.

 
SpikeOne:

Aqui está o código em geral, ele é inserido no início e a parte inteira até o lugar que eu dei abaixo, aqui está o próprio Expert Advisor no qual você deve inserir o início https://www.mql5.com/ru/code

Você começa a noite por volta das 00:00 horas e ele negocia até um certo horário, depois disso fecha os negócios e a EA.


Então?! funciona?)
 
Forexman77:

Precisa ser um pouco mais complicado. Uma variável depende do sinal 1, portanto, enquanto não houver sinal 2, os dados usados pelo sinal 1 serão atualizados, mudando a variável, mas eu preciso que a variável mude uma vez. Alterações subseqüentes na variável somente após o sinal 2. Em resumo, a chave 1 é acionada, aciona uma e nada mais muda até que a chave 2 seja acionada. Mas, como a chave 1 usa certos dados para ligar, ela os processará novamente, e você só precisa fazê-lo uma vez.


Eu lhe dei o básico, vá em frente e faça-o você mesmo! Por que você é tão preguiçoso... como você o descreveu, então eu o escrevi, sem mesmo dizer obrigado;)
 
Ekburg:

Eu lhe dei o básico, vá em frente e faça-o você mesmo! Por que você é tão preguiçoso... Eu escrevi como você o descreveu, e você nem disse obrigado;)
Obrigado! Para ser honesto, eu mesmo conheço o básico)