Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 371

 
SpikeOne:


Mi sembra di aver trovato un bug=) nei dati iniziali dove il passo tra gli ordini è impostato su int e ho messo 1.7, l'ho cambiato in doppio e ha funzionato bene=)


Beh ciao)))) quando trovi un errore, ti rendi conto che tutto era più facile di quanto pensassi)
 
Ekburg:

allora non sono d'aiuto) bisogno di passare attraverso l'intero consigliere.

Ho cambiato tutto in doppio, ora funziona bene, devo testare il resto dei punti =) Se faccio fare all'EA un buon profitto, posso pubblicarlo se necessario =)

Avrei dimenticato qual era il problema perché non capisco perché non funzionava bene e sono contento di non averlo fatto)!

 
SpikeOne:

Ho cambiato tutto in doppio, ora funziona bene, devo testare il resto dei punti =) Se faccio fare all'EA un buon profitto, posso pubblicarlo se necessario =)

Avrei voluto dimenticarlo altrimenti, non capisco perché non ha funzionato bene).


Si può, perché no)

Non c'è di che).

La strada camminerà, anch'io, all'inizio ho avuto tali momenti, mal di testa, ma quando si risolve il problema, c'è una sorta di soddisfazione, e questa sensazione è impagabile))

 
Il tempo dopo il segnale 1 deve essere registrato e non cambiato fino all'arrivo del segnale 2, con il segnale 1 che si verifica ripetutamente in attesa del segnale 2, ma il tempo deve rimanere invariato da quando il segnale 1 è stato ricevuto per la prima volta.
 
Forexman77:
Il tempo dopo il segnale 1 deve essere registrato e non cambiato fino all'arrivo del segnale 2, con il segnale 1 che si verifica ripetutamente in attesa del segnale 2, ma il tempo deve rimanere invariato da quando il segnale 1 è stato ricevuto per la prima volta.

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

Ecco il codice in generale, si inserisce all'inizio e tutta la parte fino al posto che ho dato sotto, ecco l'Expert Advisor stesso in cui si dovrebbe inserire l'inizio https://www.mql5.com/ru/code

Si inizia la notte alle 00:00 circa e si fa trading fino a una certa ora, dopo di che si chiudono i trade e l'EA.

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


Deve essere un po' più complicato. Una variabile dipende dal segnale 1, quindi finché non c'è il segnale 2, i dati usati dal segnale 1 saranno aggiornati, cambiando la variabile, ma ho bisogno che la variabile cambi una volta sola. Modifiche successive alla variabile solo dopo il segnale 2. In breve, l'interruttore 1 è innescato, ne innesca uno e nient'altro cambia fino a quando l'interruttore 2 non è innescato. Ma, dato che l'interruttore 1 usa certi dati per accendere, li elaborerà di nuovo, ed è necessario farlo solo una volta.

 
SpikeOne:

Ecco il codice in generale, è inserito all'inizio e tutta la parte fino al posto che ho dato sotto viene sostituita, ecco l'Expert Advisor stesso dove si dovrebbe inserire l'inizio di https://www.mql5.com/ru/code

Si inizia la notte alle 00:00 circa e si fa trading fino a una certa ora, dopo di che si chiudono i trade e l'EA.


E allora?! Funziona?).
 
Forexman77:

Deve essere un po' più complicato. Una variabile dipende dal segnale 1, quindi finché non c'è il segnale 2, i dati usati dal segnale 1 saranno aggiornati, cambiando la variabile, ma ho bisogno che la variabile cambi una volta sola. Modifiche successive alla variabile solo dopo il segnale 2. In breve, l'interruttore 1 è innescato, ne innesca uno e nient'altro cambia fino a quando l'interruttore 2 non è innescato. Ma, dato che l'interruttore 1 usa certi dati per accendere, li elaborerà di nuovo, ed è necessario farlo solo una volta.


Ti ho dato le basi, vai avanti e fallo da solo! Perché sei così pigro... come l'hai descritto, così l'ho scritto, senza nemmeno dire grazie;)
 
Ekburg:

Ti ho dato le basi, vai avanti e fallo da solo! Perché sei così pigro... Ho scritto come l'hai descritto, e non hai nemmeno detto grazie;)
Grazie! Ad essere onesti conosco le basi da solo)