Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 371

 
SpikeOne:


Parece que he encontrado un fallo=) en los datos iniciales donde el paso entre órdenes está puesto en int y ponía 1,7, lo he cambiado a doble y ha funcionado bien=)


Bueno hola)))) cuando encuentras un error, te das cuenta de que todo era más fácil de lo que pensabas)
 
Ekburg:

entonces no soy de ayuda) necesita pasar por todo el asesor.

He cambiado todo al doble, ahora funciona bien, tengo que probar el resto de puntos =) Si hago que el EA tenga una buena ganancia, puedo publicarlo si es necesario =)

Me habría olvidado de cuál era el problema porque no entiendo por qué no funcionaba bien y me alegro de no haberlo hecho).

 
SpikeOne:

He cambiado todo al doble, ahora funciona bien, tengo que probar el resto de puntos =) Si hago que el EA obtenga un beneficio normal, puedo publicarlo si es necesario =)

Si no, me hubiera gustado olvidarlo, no sé por qué no me salió como debía =) Me alegro de no haberlo olvidado).


Puede, por qué no)

De nada).

El camino va a caminar, yo también, al principio tenía esos momentos, dolor de cabeza, pero cuando se resuelve el problema, hay una especie de satisfacción, y este sentimiento no tiene precio))

 
El tiempo después de la señal 1 debe registrarse y no cambiarse hasta que llegue la señal 2, con la señal 1 ocurriendo repetidamente mientras se espera la señal 2, pero el tiempo debe permanecer sin cambios desde que se recibió la señal 1 por primera vez.
 
Forexman77:
El tiempo después de la señal 1 debe registrarse y no cambiarse hasta que llegue la señal 2, con la señal 1 ocurriendo repetidamente mientras se espera la señal 2, pero el tiempo debe permanecer sin cambios desde que se recibió la señal 1 por primera 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);

Aquí está el código en general, se inserta al principio y toda la parte hasta el lugar que he dado a continuación, aquí es el propio Asesor Experto en el que debe insertar el principio https://www.mql5.com/ru/code

Comienza la noche alrededor de las 00:00 y negocia hasta una hora determinada, después cierra las operaciones y el EA.

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


Tiene que ser un poco más complicado. Una variable depende de la señal 1, así que mientras no haya señal 2, los datos utilizados por la señal 1 se actualizarán, cambiando la variable, pero necesito que la variable cambie una vez. Cambios posteriores en la variable sólo después de la señal 2. En resumen, el interruptor 1 se dispara, dispara uno y nada más cambia hasta que se dispara el interruptor 2. Pero, como el interruptor 1 utiliza ciertos datos para encenderse, los procesará de nuevo, y sólo tendrá que hacerlo una vez.

 
SpikeOne:

Aquí está el código en general, se inserta al principio y se sustituye toda la parte hasta el lugar que he dado a continuación, aquí está el propio Asesor Experto en el que debe insertar el principio https://www.mql5.com/ru/code

Comienza la noche alrededor de las 00:00 y negocia hasta una hora determinada, después cierra las operaciones y el EA.


¿Y? ¿Funciona?)
 
Forexman77:

Tiene que ser un poco más complicado. Una variable depende de la señal 1, así que mientras no haya señal 2, los datos utilizados por la señal 1 se actualizarán, cambiando la variable, pero necesito que la variable cambie una vez. Cambios posteriores en la variable sólo después de la señal 2. En resumen, el interruptor 1 se dispara, dispara uno y nada más cambia hasta que se dispara el interruptor 2. Pero, como el interruptor 1 utiliza ciertos datos para encenderse, los procesará de nuevo, y sólo tendrá que hacerlo una vez.


Te he dado lo básico, ¡hazlo tú mismo! Por qué eres tan perezoso... como lo describiste, así lo escribí, sin siquiera dar las gracias;)
 
Ekburg:

Te he dado lo básico, ¡hazlo tú mismo! Por qué eres tan perezoso... escribí como lo describiste, y ni siquiera dijiste gracias;)
Gracias. Para ser honesto, yo mismo conozco lo básico)