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

 
biragr:

Ich danke Ihnen für Ihre Aufmerksamkeit, aber ich verstehe Ihre Frage nicht. Sie können die Linie für ein beliebiges Datum festlegen, und wenn der Chart dieses Datum erreicht, wird der EA ausgelöst? Oder vielleicht verstehe ich etwas nicht, wenn Sie es mir erklären können.
Okay, Sie haben die Linie auf dem Tageschart festgelegt. Was ist, wenn sie auf der Uhr ist? Wird der Zeitpunkt der Auftragseröffnung durch die Linie oder streng festgelegt? Müssen Sie den Zeitplan für einen Monat mit Linien festlegen oder reicht ein Expert Advisor, der meinem Link folgt?
 
kolyango:

Hilfe, bitte! Der Indikator https://www.mql5.com/ru/code/10067 muss in einen einfachen funktionierenden EA umgewandelt werden (als Beispiel). Prinzip des Handelns:

Auf dem Paar, auf das der EA geworfen wird, sobald der Wert gleich 0,9570 ist, öffnen Sie einen Marktauftrag zum Verkauf von 0,1 Lot mit einer großen Zahl (so dass EAs in verschiedenen Fenstern nicht verwirren Aufträge), Stop-Loss 100p, Take-Profit 200p.

Fachkräfte, wir können nicht ohne Sie auskommen!



Helfen Sie einem Anfänger!
 

kolyango:

Auf dem Paar, auf das der EA geworfen wird, sobald der Wert gleich 0,9570 ist, öffnen Sie einen Marktauftrag zum Verkauf von 0,1 Lot mit einer großen Nummer (so dass EAs in verschiedenen Fenstern die Aufträge nicht verwechseln), Stop-Loss 100p, Take-Profit 200p.

Hilfe für eine Anfängerin!
Welchen Sinn hat es, einen einmaligen EA zu schreiben? Legen Sie einen schwebenden Auftrag an und es wird so funktionieren, wie Sie es wünschen. Und richten Sie EAs für die Majors ein, denn die Pause wird keine Majors haben.
 
Reshetov:
Welchen Sinn hat es, einen einmaligen EA zu schreiben? Legen Sie eine Pause ein, und der Vorgang wird so ausgelöst, wie Sie es wünschen. Und konfigurieren Sie die EAs für die Majors, denn die Pause wird keine Majors haben.

Ich muss herausfinden, wie ich das aus einem Indikator machen kann...
 

Was ist das Problem? Das Problem ist, dass der Auftrag nicht immer geöffnet wird, wenn die Linie überschritten wird, d.h. manchmal wird er geöffnet und manchmal nicht... Obwohl es nach dem gleichen Prinzip funktioniert...

//+------------------------------------------------------------------+
//|                                                      Вайкофф.mq4 |
//|                                                   Sergey Kodolov |
//|                                              84232676421@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Sergey Kodolov"
#property link      "84232676421@mail.ru"



int total,sum,sumr;  
datetime TimeBarH, TimeBarL;

int Crossed (double nach, double kon, double cenaniz, double cenaverh)
{
   static int last_dir = 0;
   static int cur_dir = 0;
   
   if(nach<cenaverh && kon>cenaverh)cur_dir=1;
   if(nach>cenaniz && kon<cenaniz)cur_dir=2;
   
   if(cur_dir != last_dir)
   {
      last_dir=cur_dir;
      return(last_dir);
   }
   else
      return(0);
}


  
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }

  
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
                     
bool NewBar = New(); //работаем только с нового бара

int volot = volotilnost(NewBar); //определяем волотильность
Hfr(NewBar,volot); //определяем фрактал верхний
Lfr(NewBar,volot); //определяем фрактал нижний

      double BuyLine, SellLine;
   
      BuyLine = ObjectGet("upline",OBJPROP_PRICE1);
      SellLine = ObjectGet("downline",OBJPROP_PRICE1);

int isCrossed = Crossed(Open[0],Bid,SellLine,BuyLine); //говорит о пересечении баром линии
OrderOpenFunction(isCrossed);



//----
   return(0);
  }
//+------------------------------------------------------------------+


bool New()
{
   static datetime lastbar = 0;
   datetime curbar = Time[0];
   //Print("lastbar = ",lastbar," curbar = ",curbar);
   if(lastbar!=curbar)
   {
      lastbar = curbar;
      //Print("ypa");
      return(true);
   }
   else
      return(false);
}

int volotilnost (bool NewBar)
{
   if(NewBar == true)
   {
      for(int i=0;i<=kolbar;i++)
      {
         sum = sum + MathAbs(High[i]-Low[i])*1000;
         //Print(sum);
      }
      sumr = sum/kolbar;
      Print(sumr);
      return(sumr);
   }   
}

void Hfr(bool NewBar, int volot)
{
   if(NewBar == true)
   {
      if(volot > kolbarv)
      {
         if(iHigh(Symbol(),TF,5)<iHigh(Symbol(),TF,4))
         {
            if(iHigh(Symbol(),TF,4)<iHigh(Symbol(),TF,3))
            {
               if(iHigh(Symbol(),TF,2)<iHigh(Symbol(),TF,3))
               {
                  if(iHigh(Symbol(),TF,1)<iHigh(Symbol(),TF,2))
                  {
                     ObjectDelete("upline");
                     ObjectCreate("upline",OBJ_HLINE,0,0,(iHigh(Symbol(),TF,3)));
                     TimeBarH = iTime(Symbol(),TF,3);
                  }
               }
            }
         }
      }   
   }   
}
         

void Lfr(bool NewBar, int volot)
{
   if(NewBar == true)
   {
      if(volot > kolbarv)
      {
         if(iLow(Symbol(),TF,5)>iLow(Symbol(),TF,4))
         {
            if(iLow(Symbol(),TF,4)>iLow(Symbol(),TF,3))
            {
               if(iLow(Symbol(),TF,2)>iLow(Symbol(),TF,3))
               {
                  if(iLow(Symbol(),TF,1)>iLow(Symbol(),TF,2))
                  {
                     ObjectDelete("downline");
                     ObjectCreate("downline",OBJ_HLINE,0,0,(iLow(Symbol(),TF,3)));
                     TimeBarL = iTime(Symbol(),TF,3);
                  }
               }
            }
         }
      }   
   }   
}

void OrderOpenFunction(int isCrossed)
{
   total = OrdersTotal();
   if(total<1)
   {
      if(isCrossed == 1)
      {
         OrderSend(Symbol(),OP_BUY,lots,Ask,slip,Bid-TS*Point,Bid+TP*Point,"Покупка",Magic,0,Green);
      }
      if(isCrossed == 2)
      {
         OrderSend(Symbol(),OP_SELL,lots,Bid,slip,Ask+TS*Point,Ask-TP*Point,"Продажа",Magic,0,Red);
      }
   }   
}
Ich denke, der Fehler ist in isCrossed, aber ich kann es dort nicht finden... Ich habe einen Teil des Codes gelöscht (wo ich einige Daten in Arrays speichern), weil es den Code überlastet, aber wenn ich es brauche, werde ich auch froh sein, es mit Ihnen zu teilen
 
Guten Abend, ich habe eine schwebende By-Limit-Order aufgegeben, kein Stop, Fehler 130 !!!! Was kann das sein? Oder bringe ich es wieder durcheinander? Bitte, beraten Sie mich!
 

Hallo.

Können Sie mir sagen, wie man die Kreuzung der Hauptlinie und der Signallinie der Stochastik beschreiben kann?

 

Ich stelle mir das ungefähr so vor

F=iStochastic( Symbol(), 0, 5, 3, 3, MODE_SMA, 1,MODE_MAIN , 0) ;
   SIGNAL=iStochastic( Symbol(), 0, 5, 3, 3, MODE_SMA, 1,MODE_SIGNAL , 0) ;
   if (F==SIGNAL) {Урра!!!!; }
 

noch eine Frage: Warum sagt das Programm, dass das Objekt existiert, obwohl es in Wirklichkeit nicht existiert (ich schaue nur auf den Monitor und sehe das Objekt nicht deutlich)

void DrawLines()
{
   ObjectCreate("line1",OBJ_TREND,0,ArrayH[1],iHigh(Symbol(),TF,iBarShift(Symbol(),TF,ArrayH[1])),ArrayH[2],iHigh(Symbol(),TF,iBarShift(Symbol(),TF,ArrayH[2])));
   Print(GetLastError());
}

iBarShift(Symbol(),TF,ArrayH[1]) - die Taktnummer angibt, habe ich alles mit Print() überprüft. Aber GetLastError gibt mir Fehler 4200 - ich verstehe nicht, was was ist =)

 
kolyango:

Ich muss herausfinden, wie ich das aus einem Indikator machen kann...

Das geht nicht mit einem Indikator