[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 407

 
costy_:

BASIS BEFIEDERUNG... :-)

und auch ein BASE TREND ))

wenn der eur und der dol fallen, flach


:-)
 
costy_:
Wurden die Swap-Spreads bei den Überlegungen berücksichtigt?
Ja, das ist richtig. Das liegt an den Spreads. Keine Swaps, die Positionen sind short. Der Expert Advisor sollte also noch widerstandsfähiger sein, damit die Gewinne die Verluste überwiegen. Danke, ich werde es versuchen.
 
costy_:
Auf die Tatsache, dass nach der...

Ja.... "Ausführliche" Antwort. Für jedes Ereignis muss es einen Grund geben. Fachleute, die mit einigen Störungen konfrontiert werden, wissen, worauf sie achten müssen. Ich habe den Algorithmus mehrmals durchgesehen, aber ich kann die Ursache nicht finden. Deshalb wende ich mich an die Profis um Rat - was könnte der Grund sein?
 

Ich versuche, einen schwebenden Auftrag wie diesen zu eröffnen:

//+---------Функция расчета лота---------------------------------------+
double GetLot(int Risiko)
{
double Free=AccountFreeMargin();
double One_Lot=MarketInfo(Symbol(),MODE_MARGINREQUIRED);
double Min_Lot=MarketInfo(Symbol(),MODE_MINLOT);
double Max_Lot=MarketInfo(Symbol(),MODE_MAXLOT);
double Step=MarketInfo(Symbol(),MODE_LOTSTEP);
double Lot=MathFloor(Free*Risk/100/One_Lot/Step)*Step;
if(Los<Min_Los)Los=Min_Los;
if(Los>Max_Los)Los=Max_Los;
if(Lot*One_Lot>Free)return(0.0);
zurück(Lot);
}

//+----------Функция открытия ордера-----------------------------------+
int NewOrder(int Cmd,double Lot)
{
double TP=0;//takeprofit
double SL=0;// Stop Loss
double PR=0;// Preis
while(!IsTradeAllowed())Sleep(100);
if(TakeProfit<MarketInfo(Symbol(),MODE_STOPLEVEL))
TakeProfit=MarketInfo(Symbol(),MODE_STOPLEVEL);
if(StopLoss<MarketInfo(Symbol(),MODE_STOPLEVEL))
StopLoss=MarketInfo(Symbol(),MODE_STOPLEVEL);
if(Cmd==OP_BUYSTOP)
{
PR=NormalizeDouble(Ask,Digits);
if(TakeProfit>0)TP=NormalizeDouble(Ask+TakeProfit*Point,Digits);
if(StopLoss>0)SL=NormalizeDouble(Bid-StopLoss*Point,Digits);
}
if(Cmd==OP_SELLSTOP)
{
PR=NormalizeDouble(Bid,Digits);
if(TakeProfit>0)TP=NormalizeDouble(Bid-TakeProfit*Point,Digits);
if(StopLoss>0)SL=NormalizeDouble(Ask+StopLoss*Point,Digits);
}
tic=OrderSend(Symbol(),Cmd,Lot,PR,3,SL,TP,"",0,0,CLR_NONE);
if(tic<0)Print("Fehler beim Öffnen der Order:",GetLastError()); Print("Cmd-",Cmd, "Lot=",Lot, "PR=",PR, "SL=",SL, "TP=",TP);
zurück(tic);
}

Wenn ich es überprüfe, erhalte ich eine Meldung:

2011.12.06 23:36:50 2010.01.06 16:19 Big Dog 1.01 EURUSD,M15: Ungültige Losgröße für OrderSend-Funktion

2011.12.06 23:36:50 2010.01.06 16:19 Big Dog 1.01 EURUSD,M15: OrderSend Fehler 4051

2011.12.06 23:36:51 2010.01.07 17:20 Big Dog 1.01 EURUSD,M15: Fehlerhafte Order offen:405

2011.12.06 23:36:51 2010.01.07 17:20 Big Dog 1.01 EURUSD,M15: Cmd-5Lot=0PR=1.4316SL=1.4419TP=1.4216

Offensichtlich ist es etwas mit der Berechnung der Lose, aber ich weiß nicht, was))) Bitte beraten

 
LOA:

Jep.... "Ausführliche" Antwort. Für jedes Ereignis muss es einen Grund geben. Fachleute wissen, worauf sie achten müssen, wenn eine Störung auftritt. Ich habe den Algorithmus mehrmals durchgesehen, kann aber den Grund dafür nicht finden. Deshalb bitte ich die Profis um Rat - woran kann das liegen?

Und wo ist der Indikator?! (Ich vermute durch Kaffeesatz tel. https://www.mql5.comhttps://www.mql5.com/ru/)

Nun, wenn Sie alles auflisten, werden die Buchstaben ausgehen.

continue break return um zu sehen, ob und wann es eine Unterbrechung gibt. funktioniert mit der Öffnung der bar....

"wenn sie auf Probleme stoßen, wissen sie, worauf sie achten müssen", sie achten nicht darauf, sondern fangen an zu debuggen, fangen auch an, ihren Indikator zu debuggen, z.B. über print (noch dazu mit dem von jemand anderem und so 15 Seiten lang, mehr als 50 aufgerufene Funktionen...)

Print("дошли до инициализации, сделаем ресайз запишем все 0.0 size="+ArrayRange(buf,0)+" resize= "+ArrayResize(buf,Bars)+"  "+ArrayInitialize(buf,0.0)) ;

 

Hallo.

Ich habe ein Array erstellt:

double fibo[]={-10.09,-5.854,-4.98,-4.108,-3.236,-2.618,-2.11,-1.618,-1.11,-0.618,-0.382,0,0.118,0.236,0.382,0.5,0.618,0.764,0.882,1,1.382,1.618,2.11,2.618,3.11,3.618,4.236,5.108,5.98,6.854,11.09};

Aus irgendeinem Grund geht der erste Wert jedoch auf Null (-10,09 wird zu 0). Auf diese Weise habe ich einen Ausweg aus der Situation gefunden:

double fibo[]={,-10.09,-5.854,-4.98,-4.108,-3.236,-2.618,-2.11,-1.618,-1.11,-0.618,-0.382,0,0.118,0.236,0.382,0.5,0.618,0.764,0.882,1,1.382,1.618,2.11,2.618,3.11,3.618,4.236,5.108,5.98,6.854,11.09};

Können Sie mir bitte sagen, worum es hier geht? Ich möchte sehr gerne verstehen.

Ich danke Ihnen im Voraus.

 
nemo811:

Hallo.

Ich habe ein Array erstellt:

Aus irgendeinem Grund geht der erste Wert jedoch auf Null (-10,09 wird zu 0). Auf diese Weise habe ich einen Ausweg aus der Situation gefunden:

Können Sie mir bitte sagen, worum es hier geht? Ich möchte sehr gerne verstehen.

Ich danke Ihnen im Voraus.

Ich habe nicht mit Index = 0 genullt

double fibo[]={-10.09,-5.854,-4.98,-4.108,-3.236,-2.618,-2.11,-1.618,-1.11,-0.618,-0.382,0,0.118,0.236,0.382,0.5,0.618,0.764,0.882,1,1.382,1.618,2.11,2.618,3.11,3.618,4.236,5.108,5.98,6.854,11.09};
Alert(fibo[0]);

2011.12.06 20:00:47 MA_TF AUDUSD,M30: Alert: -10.09


 

Hier ist der problematische Teil des Codes:

  if (FIBO)
   {
    double fibo[]={-10.09,-5.854,-4.98,-4.108,-3.236,-2.618,-2.11,-1.618,-1.11,-0.618,-0.382,0,0.118,0.236,0.382,0.5,0.618,0.764,0.882,1,1.382,1.618,2.11,2.618,3.11,3.618,4.236,5.108,5.98,6.854,11.09};
    double fiboPoint = 0;
    for(i=1;i<ArraySize(fibo)+1;i++)
     {
      fiboPoint = NormalizeDouble(MinAsia+Asia*fibo[i],Digits);
      double v = 0;
      if (fibo[i]<0) v=(MathAbs(fibo[i])+1)*100;
      else v=fibo[i]*100;
      string kk;
      kk=StringConcatenate (DoubleToStr(fiboPoint,Digits)," / ",DoubleToStr(v,1),"%");
      string k=DoubleToStr (i,0);
      ObjectCreate (nameF+k, OBJ_TREND, 0,0,0,0,0,0,0);
      ObjectSet (nameF+k, OBJPROP_RAY, false);
      ObjectSet (nameF+k, OBJPROP_TIME1, TimeBegAsia);
      ObjectSet (nameF+k, OBJPROP_PRICE1, fiboPoint);
      ObjectSet (nameF+k, OBJPROP_TIME2, FlowTime);
      ObjectSet (nameF+k, OBJPROP_PRICE2, fiboPoint);
      ObjectCreate (nameFT+k, OBJ_TEXT, 0,0,0,0,0,0,0);
      ObjectSet (nameFT+k, OBJPROP_TIME1, TimeBegAsia);
      ObjectSet (nameFT+k, OBJPROP_PRICE1, fiboPoint);
      ObjectSetText (nameFT+k,kk,8,"Arial");
     }
   }

Hier ist das oben beschriebene Problem: Die vom Wert -10,09 abgeleitete Linie wird nicht gezeichnet (sie nimmt den Wert von MinAsia an).

 
nemo811:

Hier ist der problematische Teil des Codes:

tuz

for(i=0;i<ArraySize(fibo)/**/-/**/1;i++)
 
mamba5:

Ich versuche, einen schwebenden Auftrag wie diesen zu eröffnen:

//+---------Функция расчета лота---------------------------------------+

Wenn ich es überprüfe, erhalte ich eine Meldung:

2011.12.06 23:36:50 2010.01.06 16:19 Big Dog 1.01 EURUSD,M15: Ungültige Losgröße für OrderSend-Funktion

2011.12.06 23:36:50 2010.01.06 16:19 Big Dog 1.01 EURUSD,M15: OrderSend Fehler 4051

2011.12.06 23:36:51 2010.01.07 17:20 Big Dog 1.01 EURUSD,M15: Fehlerhafte Order offen:405

2011.12.06 23:36:51 2010.01.07 17:20 Big Dog 1.01 EURUSD,M15: Cmd-5Lot=0PR=1.4316SL=1.4419TP=1.4216

Offensichtlich ist es etwas mit der Berechnung der Lose, aber ich weiß nicht, was))) Bitte beraten


Verwenden Sie die bewährten Funktionen, um Aufträge sowohl für den Tester als auch für den echten Schlepper zu eröffnen