[Archiv!] Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Könnte nirgendwo ohne dich hingehen - 2. - Seite 366

 
abolk:

Sie haben

aber man muss es (Vergleich)


Nehmen Sie den Code eines beliebigen OEM-Indikators und sehen Sie sich an, wie der Code formatiert ist

Ich sehe keinen Unterschied. zum Beispiel ist es eine Standarddisziplin. es ist nur die Komplexität, die es so macht. aber abgesehen von der Klammer selbst kann es zum Beispiel eine Frage von ";" sein...

//+------------------------------------------------------------------+
//|                                                       Discipline |
//|                 Copyright © 1999-2008, MetaQuotes Software Corp. |
//|                                                         FX_FISH  |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, Kiko Segui"
#property link      "webtecnic@terra.es"
//----
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Red
//----
double buffer1[];
double buffer2[];
//----
extern int period=10;
extern int price=0; // 0 or other = (H+L)/2
                    // 1 = Open
                    // 2 = Close
                    // 3 = High
                    // 4 = Low
                    // 5 = (H+L+C)/3
                    // 6 = (O+C+H+L)/4
                    // 7 = (O+C)/2
extern bool Mode_Fast=false;
extern bool Signals  =true;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
   SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2,Lime);
   SetIndexBuffer(0,buffer1);
   SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,2,Red);
   SetIndexBuffer(1,buffer2);
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit()
  {
   int i;
   double tmp;
//----
   for(i=0;i<Bars;i++)
     {
      ObjectDelete("Sel"+DoubleToStr(i,0));
      ObjectDelete("Buy"+DoubleToStr(i,0));
      ObjectDelete("Exit"+DoubleToStr(i,0));
     }
   return(0);
  }
double Value=0,Value1=0,Value2=0,Fish=0,Fish1=0,Fish2=0;
int buy=0,sell=0;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   int i;
   int barras;
   double _price;
   double tmp;
   double MinL=0;
   double MaxH=0;
   double Threshold=1.2;
//----
   barras=Bars;
   if(Mode_Fast) barras=100;
   i=barras-period-1;
   while(i>=0)
     {
      MaxH=High[Highest(NULL,0,MODE_HIGH,period,i)];
      MinL= Low[ Lowest(NULL,0,MODE_LOW, period,i)];
      switch(price)
        {
         case 0:  _price=(High[i]+Low[i])/2;                   break;
         case 1:  _price= Open[i];                             break;
         case 2:  _price= Close[i];                            break;
         case 3:  _price= High[i];                             break;
         case 4:  _price= Low[i];                              break;
         case 5:  _price=(High[i]+Low[i]+Close[i])/3;          break;
         case 6:  _price=(Open[i]+High[i]+Low[i]+Close[i])/4;  break;
         case 7:  _price=(Open[i]+Close[i])/2;                 break;
         default: _price=(High[i]+Low[i])/2;                   break;
        }
      Value=0.33*2*((_price-MinL)/(MaxH-MinL)-0.5) + 0.67*Value1;
      Value=MathMin(MathMax(Value,-0.999),0.999);
      Fish =0.5*MathLog((1+Value)/(1-Value))+0.5*Fish1;
      buffer1[i]=0;
      buffer2[i]=0;
//----
      if((Fish<0) && (Fish1>0))
        {
         if(Signals)
           {
            ObjectCreate("Exit"+DoubleToStr(i,0),OBJ_ARROW,0,Time[i],_price);
            ObjectSet("Exit"+DoubleToStr(i,0),OBJPROP_ARROWCODE,251);
            ObjectSet("Exit"+DoubleToStr(i,0),OBJPROP_COLOR,Red);
           }
         buy=0;
        }
      if((Fish>0) && (Fish1<0))
        {
         if(Signals)
           {
            ObjectCreate("Exit"+DoubleToStr(i,0),OBJ_ARROW,0,Time[i],_price);
            ObjectSet("Exit"+DoubleToStr(i,0),OBJPROP_ARROWCODE,251);
            ObjectSet("Exit"+DoubleToStr(i,0),OBJPROP_COLOR,Red);
           }
         sell=0;
        }
      if(Fish>=0)
      { buffer1[i]=Fish; }
      else
      { buffer2[i]=Fish; }
      tmp=i;
      if((Fish<-Threshold) && (Fish>Fish1) && (Fish1<=Fish2))
        {
         if (Signals)
           {
            ObjectCreate("Sel"+DoubleToStr(i,0),OBJ_ARROW,0,Time[i],High[i]+5*Point);
            ObjectSet("Sel"+DoubleToStr(i,0),OBJPROP_ARROWCODE,226);
            ObjectSet("Sel"+DoubleToStr(i,0),OBJPROP_COLOR,Red);
           }
         sell=1;
        }
      if((Fish>Threshold) && (Fish<Fish1) && (Fish1>=Fish2))
        {
         if (Signals)
           {
            ObjectCreate("Buy"+DoubleToStr(i,0),OBJ_ARROW,0,Time[i],Low[i]-5*Point);
            ObjectSet("Buy"+DoubleToStr(i,0),OBJPROP_ARROWCODE,225);
            ObjectSet("Buy"+DoubleToStr(i,0),OBJPROP_COLOR,Aqua);
           }
         buy=1;
        }
      Value1=Value;
      Fish2=Fish1;
      Fish1=Fish;
      i--;
     }
   return(0);
  }
//+------------------------------------------------------------------+
 
KONDOR:
achten Sie mehr auf die Klammern ))))
Symbol()

Ist es das, was Sie meinen, zum Beispiel?

if(AuftragsSymbol()==Symbol())

Der Fehler bleibt aber bestehen.

 

ist es auch wenn? oder was?

Dann mache ich es noch einmal...

sollte wie folgt aussehen: if(OrderSymbol()==Symbol() ??

alle Symbole sind definiert.

die Klammern entfernt - es hat sich nichts geändert.

 
KONDOR:
die vorletzte Klammer ist überflüssig
alle dasselbe =(
 
frxmax:

wo ist der Fehler a, bei den Klammern scheint alles gerade zu sein?


//+------------------------------------------------------------------+
//|                                                        Beta2.mq4 |
//|                                                                  |
//|                                                                  |
//+------------------------------------------------------------------+
extern int       StopLoss=100;
extern int       TakeProfit=20;
extern double    Lot=0.01;
extern int       cnt, ticket, total;

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{
      double LoCurent=iCustom(NULL, 0, "LO",0,0);
      double LoPrevious=iCustom(NULL, 0, "LO",1,1);
      double FtCurent=iCustom(NULL, 0, "FT",0,0);
      double FtPrevious=iCustom(NULL, 0, "FT",1,1);
//----
   if (total==0)
      {
         if (LoCurent>LoPrevious && FtCurent>FtPrevious)
            {
               ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Bid-StopLoss*Point,Bid+TakeProfit*Point,"Buy",1111,0,Green);
               if(ticket>0)
                  {
                     if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
                  }else Print("Error opening BUY order : ",GetLastError()); 
            return(0); 
            }else 
            if(LoCurent<LoPrevious && FtCurent<FtPrevious)
               {
                  ticket=OrderSend(Symbol(),OP_SELL,Lot,Bid,3,Ask+StopLoss*Point,Ask-TakeProfit*Point,"Sell",2222,0,Red);
                  if(ticket>0)
                     {
                        if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
                     }else Print("Error opening SELL order : ",GetLastError()); 
                  return(0); 
               }    
             return(0);
      }
      else 
      if(LoCurent<LoPrevious || FtCurent<FtPrevious || LoCurent<-30 || LoPrevious<-30)
         {
            if(OrderSelect(ticket,SELECT_BY_POS,MODE_TRADES)==false) //break;
               {
                  if(OrderSymbol()==Symbol())
                   {
                      if(OrderType()==OP_SELL)
                         {
                         OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position
                         }
                     return(0);
                   }
               }
         }
         else
            if (LoCurent>LoPrevious || FtCurent>FtPrevious || LoCurent>30 || LoPrevious>30)
               {
                  if(OrderSelect(ticket,SELECT_BY_POS,MODE_TRADES)==false) //break;
                     {
                        if(OrderSymbol()==Symbol())
                           {
                              if(OrderType()==OP_SELL)
                                 {
                                    OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close position
                                 }
                               return(0);
                           }
                     }
               }
           //}
return(0);
      }
//+------------------------------------------------------------------+
 
frxmax:
ohne Fehler.
 else 
      if(LoCurent<LoPrevious || FtCurent<FtPrevious || LoCurent<-30 || LoPrevious<-30)
         {
            if(OrderSelect(ticket,SELECT_BY_POS,MODE_TRADES)) //break ругается

               {
                  if(OrderSymbol()==Symbol())
                   {
                      if(OrderType()==OP_SELL)
                         {
                         OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position
                         }
                     return(0);
                   }
               }
         }
         else
            if (LoCurent>LoPrevious || FtCurent>FtPrevious || LoCurent>30 || LoPrevious>30)
               {
                  if(OrderSelect(ticket,SELECT_BY_POS,MODE_TRADES)) //break ругается
                     {
                        if(OrderSymbol()==Symbol())
                           {
                              if(OrderType()==OP_SELL)
                                 {
                                    OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close position
                                 }
                               return(0);
                           }
                     }
               }
      
return(0);
      }
 
Herzlichen Dank für Ihre Hilfe. KONDOR
 

Das einzige Problem ist, dass die Ergebnisse nicht so gut sind.

Helfen Sie mir zu verstehen, wie es zu machen, so dass nur ein Auftrag in Richtung der zuvor empfangenen Signal geöffnet wurde. schließen Sie es, wenn einer der Indikatoren wird eine umgekehrte Signal zeigen. und alle unter Berücksichtigung der Währungspaar

 
Prüfen Sie die Funktion NumberOfBarOpenLastPos(), sie prüft die Nummer des Balkens, an dem der Auftrag geöffnet ist.
 

Ich würde es lieber so haben: (z.B. auf dem Eurodollar-Chart gibt es ein Kaufsignal)

wenn Summe>1

wenn Währungspaar = Eurodollar

wenn der Auftrag zum Verkauf bestimmt ist

den Auftrag abschließen

einen Kaufauftrag eröffnen


Die allgemeine Ansicht sollte wie folgt aussehen

wenn (Kaufsignal)

wenn gesamt==0

kaufen

sonst (insgesamt >1)

prüfen, für welches Währungspaar Geschäfte eröffnet wurden

wenn unser

bei Verkauf

schließen Sie es und kaufen Sie weiter

oder sonst (Summe = 0, Kauf eröffnen) ....