Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1770

 
MakarFX #:

Aber warum Sie diese Anordnung brauchen, verstehe ich immer noch nicht...

int TradeSignal() 
  {
   int limit, i, sig=-1;
   double Ma_curr, Ma_prev, value;
   limit=MaPeriod*3;
   for(i=limit;i>=0;i--)
     {
      Ma_curr=iMA(_Symbol,_Period,MaPeriod,0,MaMethod,MaPrice,i);
      Ma_prev=iMA(_Symbol,_Period,MaPeriod,0,MaMethod,MaPrice,i+1);
      value=Ma_curr-Ma_prev;
      if(value>0) sig=0;
      if(value<0) sig=1;
     }
   return(sig);
  }

Die Funktion funktioniert auch ohne sie.

 
Mihail Matkovskij #:

Aber warum Sie diese Anordnung brauchen, verstehe ich immer noch nicht...

Die Funktion funktioniert auch ohne sie.

Und eine Schleife ist hier nicht nötig

int TradeSignal() 
  {
   int sig=-1;
   double Ma_curr, Ma_prev, value;

   Ma_curr=iMA(_Symbol,_Period,MaPeriod,0,MaMethod,MaPrice,0);
   Ma_prev=iMA(_Symbol,_Period,MaPeriod,0,MaMethod,MaPrice,1);
   value=Ma_curr-Ma_prev;
   if(value>0) sig=0;
   if(value<0) sig=1;

   return(sig);
  }
 
Mihail Matkovskij #:

Und eine Schleife ist nicht nötig.

Das habe ich getan, aber ich wollte verstehen, warum die Anordnung nicht funktioniert hat.

Und nebenbei bemerkt

ArraySize(Buffer,limit);

hat nicht geholfen (


ArraySize' - falsche Parameteranzahl

uneingeschränkt korrigiert

Array außerhalb des Bereichs in '_exp.mq4' (267,17)

 
MakarFX #:


ArrayResize, nicht ArraySize.

 
Yurij Kozhevnikov #:

ArrayResize, nicht ArraySize.

Array außerhalb des Bereichs
 
MakarFX #:

Das habe ich getan, aber ich wollte verstehen, warum die Anordnung nicht funktioniert hat.

Und nebenbei bemerkt

hat nicht geholfen (


ArraySize' - falsche Parameteranzahl

uneingeschränkt korrigiert

Array außerhalb des Bereichs in '_exp.mq4' (267,17)


Ich habe das bemerkt und sofort danach korrigiert. Und Sie müssen den unkorrigierten Code kopiert haben.

Und wenn Sie wissen wollen, warum die Anordnung nicht funktioniert hat, usw., siehe: Operationen. Siehe: Array-Operationen .

Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
  • 2021.11.28
  • www.mql5.com
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти н...
 
Mihail Matkovskij #:


Ich habe das bemerkt und sofort danach korrigiert. Und Sie müssen den unkorrigierten Code kopiert haben.
Danke, es klappt!
 
MakarFX #:
Danke, es funktioniert!

Bitte sehr! Vervollständigt die Nachricht...

 
//+------------------------------------------------------------------+
//| trial by muving.mq4 |
///+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link"https://www.mql5.com"
#Eigenschaft Version "1.00"
#Eigenschaft streng
extern string Moving_Averages1= "Indikatorparameter";
extern int MA_Period=13;
extern int MA_Shift=0;
extern int MA_Methode=0;

extern int int TakeProfit= 300;
extern int StopLoss= 50;
double ma1,ma2,Lots,SL,TP;

int res;



//+------------------------------------------------------------------+
Experteninitialisierungsfunktion //|
//+------------------------------------------------------------------+
int OnInit()
{
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Experten-Deinitialisierungsfunktion |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+------------------------------------------------------------------+
//| Experten-Tick-Funktion |
//+------------------------------------------------------------------+
void OnTick()
{
if(!OllCount()==0)
{
switch(Auftragsart())
{
Fall OP_BUY
ma1=iMA(NULL,0,MA_Zeitraum,MA_Schicht,MA_Methode,0,0);
ma2=iMA(NULL,0,MA_Zeitraum,MA_Schicht,MA_Methode,0,1);
wenn((ma1-ma2)>0)
{
Rückkehr;
}else
SL=NormalizeDouble(Bid+StopLoss*Point,5);
TP=NormalizeDouble(Bid-TakeProfit*Point,5);
if(OrderClose(OrderTicket(),OrderLots(),Ask,3,Black))
if(OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,",0,0,Red))
Rückkehr;
Fall OP_SELL
ma1=iMA(NULL,0,MA_Zeitraum,MA_Schicht,MA_Methode,0,0);
ma2=iMA(NULL,0,MA_Zeitraum,MA_Schicht,MA_Methode,0,1);
if((ma1-ma2)<0)
{
Rückkehr;
}
sonst
SL=NormalizeDouble(Ask-StopLoss*Point,5);
TP=NormalizeDouble(Ask+TakeProfit*Point,5);
if(OrderClose(OrderTicket(),OrderLots(),Bid,3,Red))
if(OrderSend(Symbol(),OP_SELL,Lots,Ask,3,0,0,",0,0,Black))
Rückkehr;
}
}
ma1=iMA(NULL,0,MA_Zeitraum,MA_Schicht,MA_Methode,0,0);
ma2=iMA(NULL,0,MA_Zeitraum,MA_Schicht,MA_Methode,0,1);
if((ma1-ma2)<0)
{
SL=NormalizeDouble(Bid+StopLoss*Point,5);
TP=NormalizeDouble(Bid-TakeProfit*Point,5);
res=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,",0,0,0,Red);
if(res<0)
{
Print("Fehler beim Öffnen der Verkaufsorder");
}
}
sonst
SL=NormalizeDouble(Ask-StopLoss*Point,5);
TP=NormalizeDouble(Ask+TakeProfit*Point,5);
if(OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,",0,0,0,Blue))
Rückkehr;
}
//+------------------------------------------------------------------+
int OllCount()
{
int count=0;
for(int i=OrdersTotal()-1;i>=0;i--)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
zählen++;
}
}
return(count);
}
//+------------------------------------------------------------------+
//+---/| Copyright 2021, MetaQuotes Software Corp.
---------------------------------------------------------------+

//+------------------------------------------------------------------+

Ich habe versucht, meinen eigenen MA-Berater zu schreiben, ich habe alle Beispiele befolgt, aber er gibt immer wieder Fehler zurück.

'ma1' - irgendein Operator erwartet trial by muving.mq4 47 21

'=' - ':' Doppelpunktzeichen erwartet mq4 muving trial 47 24

'=' - Operand erwartet muving.mq4 47 24

'ma1' - irgendein Operator erwartet trial by muving.mq4 60 15

'=' - ':' Doppelpunkt-Zeichen erwartet muving.mq4 60 18

'=' - Operand erwartet muving.mq4 60 18


 
Sanjakotik78 #:


Ihre Bestelllogik ist von Anfang an falsch. Finden Sie einen einfachen EA auf MA(z.B. CodeBase) und verwenden Sie ihn. Sie können es aber auch nach Ihren eigenen Vorstellungen abändern. Was Ihren Code als Ganzes betrifft, so ist dort alles falsch. Achten Sie mehr auf die Kodierung. Beginnen Sie mit einem einfachen Beispiel. Oder, wie ich schon sagte, finden Sie ein fertiges Beispiel.

Fügen Sie über die spezielle Schaltfläche oben Codefragmente hinzu:


Grund der Beschwerde: