Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 371

 
SpikeOne:


Ich scheine einen Fehler gefunden zu haben=) in den anfänglichen Daten, wo der Schritt zwischen den Aufträgen auf int gesetzt ist und ich 1,7 eingegeben habe, ich habe es auf double geändert und es hat gut funktioniert=)


Hallo)))) wenn man einen Fehler findet, merkt man, dass alles einfacher war, als man dachte)
 
Ekburg:

dann bin ich keine Hilfe) den gesamten Ratgeber durchgehen müssen.

Ich habe alles auf doppelt geändert, es funktioniert jetzt gut, ich muss den Rest der Punkte testen =) Wenn ich mit dem EA einen guten Gewinn mache, kann ich ihn bei Bedarf posten =)

Ich hätte vergessen, was das Problem war, weil ich nicht verstehe, warum es nicht richtig funktioniert hat, und ich bin froh, dass ich es nicht getan habe.)

 
SpikeOne:

Ich habe alles auf doppelt geändert, es funktioniert jetzt gut, ich muss den Rest der Punkte testen =) Wenn ich mit dem EA einen guten Gewinn mache, kann ich ihn bei Bedarf posten =)

Ich hätte es sonst gerne vergessen, ich weiß nicht, warum es nicht so geklappt hat, wie ich es hätte tun sollen =) Ich bin froh, dass ich es nicht vergessen habe.)


Sie können, warum nicht)

Gern geschehen).

Der Weg wird gehen, auch ich hatte zunächst solche Momente, Kopfschmerzen, aber wenn Sie das Problem zu lösen, gibt es eine Art von Zufriedenheit, und das Gefühl ist unbezahlbar))

 
Die Zeit nach Signal 1 muss aufgezeichnet und bis zum Eintreffen von Signal 2 nicht verändert werden, wobei Signal 1 während des Wartens auf Signal 2 wiederholt auftritt, die Zeit aber seit dem ersten Empfang von Signal 1 unverändert bleiben muss.
 
Forexman77:
Die Zeit nach Signal 1 muss aufgezeichnet und bis zum Eintreffen von Signal 2 nicht verändert werden, wobei Signal 1 während des Wartens auf Signal 2 wiederholt auftritt, die Zeit aber seit dem ersten Empfang von Signal 1 unverändert bleiben muss.

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

Hier ist der Code im Allgemeinen, es ist am Anfang eingefügt und der ganze Teil bis zu der Stelle, die ich unten angegeben habe, hier ist der Expert Advisor selbst, in dem Sie den Anfang einfügen sollten https://www.mql5.com/ru/code

Sie beginnen die Nacht um etwa 00:00 Uhr und handeln bis zu einer bestimmten Zeit, danach werden die Geschäfte und der EA geschlossen.

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


Es muss ein bisschen komplizierter sein. Eine Variable hängt von Signal 1 ab. Solange es kein Signal 2 gibt, werden die von Signal 1 verwendeten Daten aktualisiert, wodurch sich die Variable ändert, aber ich muss die Variable einmal ändern. Spätere Änderungen der Variablen erst nach Signal 2. Kurz gesagt, Schalter 1 wird ausgelöst, löst einen aus und nichts anderes ändert sich, bis Schalter 2 ausgelöst wird. Da der Schalter 1 jedoch bestimmte Daten zum Einschalten verwendet, wird er diese erneut verarbeiten, und Sie brauchen dies nur einmal zu tun.

 
SpikeOne:

Hier ist der Code im Allgemeinen, er wird am Anfang eingefügt und der gesamte Teil wird bis zu der Stelle ersetzt, die ich unten angegeben habe, hier ist der Expert Advisor selbst, in den Sie den Anfang einfügen sollten https://www.mql5.com/ru/code

Sie beginnen die Nacht um etwa 00:00 Uhr und handeln bis zu einer bestimmten Zeit, danach werden die Geschäfte und der EA geschlossen.


Und? Funktioniert es?)
 
Forexman77:

Es muss ein bisschen komplizierter sein. Eine Variable hängt von Signal 1 ab. Solange es kein Signal 2 gibt, werden die von Signal 1 verwendeten Daten aktualisiert, wodurch sich die Variable ändert, aber ich muss die Variable einmal ändern. Spätere Änderungen der Variablen erst nach Signal 2. Kurz gesagt, Schalter 1 wird ausgelöst, löst einen aus und nichts anderes ändert sich, bis Schalter 2 ausgelöst wird. Da der Schalter 1 jedoch bestimmte Daten zum Einschalten verwendet, wird er diese erneut verarbeiten, und Sie brauchen dies nur einmal zu tun.


Ich habe Ihnen die Grundlagen erklärt, machen Sie es doch selbst! Warum bist du so faul... wie du es beschrieben hast, also habe ich es geschrieben, ohne mich zu bedanken;)
 
Ekburg:

Ich habe Ihnen die Grundlagen erklärt, machen Sie es doch selbst! Warum bist du so faul... Ich habe geschrieben, wie du es beschrieben hast, und du hast dich nicht einmal bedankt;)
Danke! Um ehrlich zu sein, kenne ich die Grundlagen selbst)