Fehler, Irrtümer, Fragen - Seite 256

 

Bitte sagen Sie mir, wie man ein 2-dimensionales dynamisches Array deklariert. In der Hilfe gibt es dazu nur ein Beispiel mit einer dynamischen Dimension:

double matrix[][10][20];// 3-dimensionales dynamisches Array

ArrayResize(matrix,5);// Festlegen der Größe der ersten Dimension


Und die Erklärung:

double matrix[][];

nicht funktioniert, schreibt der Compiler: ']'. - ungültiger Indexwert

 

Hilfe, ich verstehe nicht, was er nicht mag... er schreibt immer 10016 (als ob ein Stop-Loss nicht richtig gesetzt ist) Danke

#property version   "1.00"
//+------------------------------------------------------------------+
#define MAGIC_NUMBER 12937
input double BASELOT=0.5;
input double stoploss=0.0;
input double takeprofit=0.0;
//+------------------------------------------------------------------+
int OnInit()
  {
   int send;
   int signalMA=signalMA();
   if(signalMA==1)
     {
      send=1;
      Send(send);
        } else if(signalMA==2) {
      send=2;
      Send(send);
     }
   return(0);
  }
//+------------------------------------------------------------------+
int signalMA() 
  {
   int signalMA=0;
   double inMA6 = iMA(NULL,0,6,0,MODE_SMA,0);
   double inMA1 = iMA(NULL,0,1,0,MODE_SMA,0);
   if(inMA6>inMA1)
     {
      signalMA=1;
     }
   if(inMA6<inMA1)
     {
      signalMA=2;
     }
   return(signalMA);
  }
//+------------------------------------------------------------------+
void Send(int send)
  {
   MqlTick tick;
   MqlTradeRequest request;
   MqlTradeResult tradeResult;
   MqlTradeCheckResult checkResult;
   static bool br=false;
   if(!br) 
     {
      if(send==1) 
        {
         br=true;
         request.price=tick.bid;
         request.sl = stoploss;
         request.tp = takeprofit;
         request.type=ORDER_TYPE_SELL;
           } else if(send==2){
         br=true;
         request.price=tick.ask;
         request.sl = stoploss;
         request.tp = takeprofit;
         request.type=ORDER_TYPE_BUY;
        }
      if(br) 
        {
         request.action       = TRADE_ACTION_DEAL;
         request.symbol       = _Symbol;
         request.volume       = BASELOT;
         request.deviation    = 5;
         request.type_filling = ORDER_FILLING_AON;
         request.type_time    = ORDER_TIME_GTC;
         request.comment      = "";
         request.magic        = MAGIC_NUMBER;
         if(OrderCheck(request,checkResult)) 
           {
            OrderSend(request,tradeResult);
              } else {
            Print("Error: ",checkResult.retcode);
           }
        }
     }
  }
//+------------------------------------------------------------------+
 
tmt0086:

Hilfe, ich kann nicht verstehen, was er nicht mag ... schreibt immer 10016 (wie Stop-Loss ist nicht richtig eingestellt) Danke

Zunächst einmal haben Sie diese Funktion falsch geschrieben.

int signalMA() 
  {
   int signalMA=0;
   double inMA6 = iMA(NULL,0,6,0,MODE_SMA,0);
   double inMA1 = iMA(NULL,0,1,0,MODE_SMA,0);
   if(inMA6>inMA1)
     {
      signalMA=1;
     }
   if(inMA6<inMA1)
     {
      signalMA=2;
     }
   return(signalMA);
  }

Das sollte so sein. Ich kann Ihnen nichts über den Stoppfehler sagen.


//+------------------------------------------------------------------+
#define MAGIC_NUMBER 12937
input double BASELOT=0.5;
input double stoploss=0.0;
input double takeprofit=0.0;

int handleMA1=INVALID_HANDLE;
int handleMA2=INVALID_HANDLE;

double inMA6[];
double inMA1[];

MqlTick tick;
MqlTradeRequest request;
MqlTradeResult tradeResult;
MqlTradeCheckResult checkResult;
//+------------------------------------------------------------------+
int OnInit()
  {
   handleMA1=iMA(NULL,0,6,0,MODE_SMA,0);
   handleMA2= iMA(NULL,0,1,0,MODE_SMA,0);

   int send;
   int signalMA=signalMA();
   if(signalMA==1)
     {
      send=1;
      Send(send);
        } else if(signalMA==2) {
      send=2;
      Send(send);
     }
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int signalMA()
  {
   int sig=0;
   if(handleMA1==INVALID_HANDLE)
     {
      handleMA1=iMA(NULL,0,6,0,MODE_SMA,0);
      return(0);
     }
   if(handleMA2==INVALID_HANDLE)
     {
      handleMA2=iMA(NULL,0,1,0,MODE_SMA,0);
      return(0);
     }
   if(CopyBuffer(handleMA1,0,0,1,inMA6)<1) return(0);
   if(CopyBuffer(handleMA2,0,0,1,inMA1)<1) return(0);
   if(!ArraySetAsSeries(inMA6,true)) return(0);
   if(!ArraySetAsSeries(inMA1,true)) return(0);

   if(inMA6[0]>inMA1[0]) sig=1;
   else if(inMA6[0]<inMA1[0]) sig=2;
   else sig=0;
   return(sig);
  }
//+------------------------------------------------------------------+
void Send(int send)
  {
   static bool br=false;
   if(!br)
     {
      if(send==1)
        {
         br=true;
         request.price=tick.bid;
         request.sl = stoploss;
         request.tp = takeprofit;
         request.type=ORDER_TYPE_SELL;
           } else if(send==2){
         br=true;
         request.price=tick.ask;
         request.sl = stoploss;
         request.tp = takeprofit;
         request.type=ORDER_TYPE_BUY;
        }
      if(br)
        {
         request.action       = TRADE_ACTION_DEAL;
         request.symbol       = _Symbol;
         request.volume       = BASELOT;
         request.deviation    = 5;
         request.type_filling = ORDER_FILLING_AON;
         request.type_time    = ORDER_TIME_GTC;
         request.comment      = "";
         request.magic        = MAGIC_NUMBER;
         if(OrderCheck(request,checkResult))
           {
            OrderSend(request,tradeResult);
              } else {
            Print("Error: ",checkResult.retcode);
           }
        }
     }
  }
//+------------------------------------------------------------------+
 
-Alexey-:

Bitte sagen Sie mir, wie man ein 2-dimensionales dynamisches Array deklariert. In der Hilfe gibt es dazu nur ein Beispiel mit einer dynamischen Dimension:

double matrix[][10][20];// 3-dimensionales dynamisches Array

ArrayResize(matrix,5);// Festlegen der Größe der ersten Dimension


Und die Erklärung:

double matrix[][];

funktioniert nicht, Compiler schreibt: ']' - ungültiger Indexwert

In MQL5 gibt es nur eine dynamische Dimension.

Um mehr als eine Dimension zu verwenden, können Sie Strukturen verwenden

struct SDynamic
  {
   double            data[];
  };

...

SDynamic Arr2D[];

...

bool Arr2DResize(SDynamic &a2d[],int d1,int d2)
  {
   if(ArrayResize(a2d,d1)!=d1) return(false);
   for(int i=0;i<d1;i++)
      if(ArrayResize(a2d[i].data,d2)!=d2) return(false);
   return(true);
  }

...

Arr2DResize(Arr2D,10,10);

...

Print(Arr2D[0].data[3]);
 
mql5:

In MQL5 gibt es nur eine dynamische Dimension.

mehr als eine zu verwenden, können Sie Strukturen verwenden

Liebe mql5, vielen Dank für Ihre Hilfe, Ihre Erklärungen und Ihr praktisches Beispiel.
 

Ich hätte in ein benachbartes Forum gehen sollen, aber es gibt ein Problem mit den Bildern (das Hochladen hat nicht funktioniert)... :(


An die Entwickler.

Aus dem MT4 229 Bericht. Ist das ein Fehler oder was?


 
Interesting:

Ich hätte in ein benachbartes Forum gehen sollen, aber es gibt ein Problem mit den Cortinas (das Hochladen hat nicht funktioniert)... :(



Das Bild, so wie ich es verstehe, ist gegeben.

Sie benötigen die Browserversion.

 
alexvd:

Ein Bild, wie ich es verstehe, ist gegeben.

Ich brauche die Browser-Version.

Ich habe versucht, das Bild im Png- und Gif-Format zu speichern (ich habe auch versucht, es im Jpg-Format zu speichern, indem ich den Dienst radikal.ru verwendet habe).

Browser Firefox 3.6.13.

PS

Ich habe versucht, es in diesen Thread zu stellen - Neue Version von MetaTrader 4 Client Terminal build 228

Seltsam ist, dass Png dort vorhanden zu sein scheint.

Новая версия MetaTrader 4 Client Terminal build 228 - MQL4 форум
  • www.mql5.com
Новая версия MetaTrader 4 Client Terminal build 228 - MQL4 форум
 
Interesting:

Die Entwickler.

Aus dem MT4 229 Bericht. Ist das ein Fehler oder was?



Das scheint nicht der Fall zu sein.

Es stellte sich heraus, dass es nur 2 (von 45) Verlustgeschäften gab, und beide waren Käufe.

Vielleicht suche ich an der falschen Stelle?

 
Interesting:

Ich habe versucht, das Bild im Png- und Gif-Format zu speichern (ich habe auch versucht, es im Jpg-Format zu speichern, mit radikal.ru).

Firefox 3.6.13 Browser.

PS

Ich habe versucht, es in diesen Thread einzufügen - Neue Version MetaTrader 4 Client Terminal build 228

Seltsam ist, dass Png dort vorhanden zu sein scheint.

Versuchen Sie, den Cache zu löschen. Ich habe es mit verschiedenen Optionen und Browsern versucht - das Hinzufügen war erfolgreich.

Sie fügen das Bild direkt in die Kommentare ein, nicht als Atach?