Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 371

 
SpikeOne:


Il semble que j'ai trouvé un bug=) dans les données initiales où le pas entre les ordres est défini en int et j'ai mis 1,7, je l'ai changé en double et ça a bien marché=)


Eh bien hello)))) quand vous trouvez une erreur, vous vous rendez compte que tout était plus facile que vous ne le pensiez).
 
Ekburg:

alors je ne suis d'aucune aide) doivent passer par le conseiller entier.

J'ai tout changé en double, cela fonctionne bien maintenant, je dois tester le reste des points =) Si l'EA fait un bon profit, je peux le poster si nécessaire =)

J'aurais oublié quel était le problème parce que je ne comprends pas pourquoi il n'a pas fonctionné correctement et je suis heureux de ne pas l'avoir fait !)

 
SpikeOne:

J'ai tout changé en double, cela fonctionne bien maintenant, je dois tester le reste des points =) Si l'EA fait un bon profit, je peux le poster si nécessaire =)

J'aurais aimé l'oublier sinon, je ne comprends pas pourquoi cela n'a pas bien fonctionné).


Vous pouvez, pourquoi pas)

De rien).

La route marchera, moi aussi, au début, j'ai eu de tels moments, des maux de tête, mais quand on résout le problème, il y a une sorte de satisfaction, et ce sentiment n'a pas de prix)).

 
Le temps après le signal 1 doit être enregistré et ne pas être modifié jusqu'à l'arrivée du signal 2. Le signal 1 se répète en attendant le signal 2, mais le temps doit rester inchangé depuis la réception du signal 1.
 
Forexman77:
Le temps après le signal 1 doit être enregistré et ne pas être modifié jusqu'à l'arrivée du signal 2. Le signal 1 se répète en attendant le signal 2, mais le temps doit rester inchangé depuis la réception du signal 1.

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

Voici le code en général, il est inséré au début et toute la partie jusqu'à l'endroit que j'ai indiqué ci-dessous, voici le conseiller expert lui-même dans lequel vous devez insérer le début https://www.mql5.com/ru/code.

Vous démarrez la nuit à environ 00:00 et elle effectue des transactions jusqu'à une certaine heure, après quoi elle ferme les transactions et l'EA.

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


Il faut que ce soit un peu plus compliqué. Une variable dépend du signal 1, donc tant qu'il n'y a pas de signal 2, les données utilisées par le signal 1 seront mises à jour, modifiant la variable, mais j'ai besoin que la variable change une fois. Les modifications ultérieures de la variable ne se font qu'après le signal 2. En bref, l'interrupteur 1 est déclenché, il déclenche un et rien d'autre ne change jusqu'à ce que l'interrupteur 2 soit déclenché. Mais, comme l'interrupteur 1 utilise certaines données pour s'allumer, il les traitera à nouveau, et vous ne devrez le faire qu'une seule fois.

 
SpikeOne:

Voici le code en général, il est inséré au début et toute la partie jusqu'à l'endroit que j'ai donné ci-dessous est remplacée, voici le conseiller expert lui-même où vous devez insérer le début de https://www.mql5.com/ru/code.

Vous démarrez la nuit à environ 00:00 et elle effectue des transactions jusqu'à une certaine heure, après quoi elle ferme les transactions et l'EA.


Alors ? ! Est-ce que ça marche ?)
 
Forexman77:

Il faut que ce soit un peu plus compliqué. Une variable dépend du signal 1, donc tant qu'il n'y a pas de signal 2, les données utilisées par le signal 1 seront mises à jour, modifiant la variable, mais j'ai besoin que la variable change une fois. Les modifications ultérieures de la variable ne se font qu'après le signal 2. En bref, l'interrupteur 1 est déclenché, il déclenche un et rien d'autre ne change jusqu'à ce que l'interrupteur 2 soit déclenché. Mais, comme l'interrupteur 1 utilise certaines données pour s'allumer, il les traitera à nouveau, et vous ne devrez le faire qu'une seule fois.


Je vous ai donné les bases, allez-y, faites-le vous-même ! Pourquoi es-tu si paresseux... comme tu l'as décrit, je l'ai donc écrit, sans même te dire merci ;)
 
Ekburg:

Je vous ai donné les bases, allez-y et faites-le vous-même ! Pourquoi es-tu si paresseux... J'ai écrit comme tu l'as décrit, et tu n'as même pas dit merci ;)
Merci ! Pour être honnête, je connais moi-même les bases).
Raison: