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

 

Können Sie einen Roboter erstellen, der beide Richtungen mit kleinen Stopps mit Lots öffnet und eine Gewinnposition wählt, oder ist das eine Fantasie?

 

OK mit Farbe...

Die Frage ist - ich möchte SL vor DM "verstecken", d.h. ich möchte nicht, dass es mit dem Öffnungsoperator gesetzt wird, sondern dass es einer Variablen innerhalb von expert zugewiesen wird:

extern double TrailingStop=25.0;

extern double Lots=0.1;

....
double StopB;

.....

if( Eingangsbedingung) {

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0, "Buy EA",123,0,Green);
StopB=Ask-TrailingStop*Lots; //hide
the stop < - mache ich das richtig?

}

.....

if( profit exit conditions || Ask > StopB)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //
Position schließen
return(0); // exit
}

Und wo schreiben wir die SL-Exit-Bedingung hin? Zusammen mit der Gewinnabschlussbedingung mittels "||" oder separat?

 

Guten Tag, bitte beraten Sie mich, wie ich die iCustom Funktion richtig verwende, ich möchte Bedingungen für den Handel durch die Indikatorfarbe erstellen, die in einem separaten Histogrammfenster gezeichnet wird:

color Oct_1=iCustom(NULL,0, "octava_1");

wenn ( Okt_1==Grün).... usw.

Beim Kompilieren des Programms tritt ein Fehler auf, der besagt: "'green' - variable not defined, what's the reason?

Ich wäre für eine Antwort sehr dankbar)))

 

Frage entfernt, der Großbuchstabe hat eine Bedeutung))))

 
DOCTORS:

OK mit Farbe...

Die Frage ist - ich möchte SL vor DC "verstecken", d.h. nicht mit dem Eröffnungsoperator setzen, sondern ihn einer Variablen innerhalb von expert zuweisen:

extern double TrailingStop=25.0;

extern double Lots=0.1;

....
double StopB;

.....

if( Eingangsbedingung) {

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0, "Buy EA",123,0,Green);
StopB=Ask-TrailingStop*Lots; //hide
the stop < - mache ich das richtig?

}

.....

if( profit exit conditions || Ask > StopB)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //
Position schließen
return(0); // exit
}

Und wo schreiben wir die SL-Exit-Bedingung hin? Zusammen mit der Gewinnabschlussbedingung mittels "||" oder separat?

Ich bin kein Profi, aber ich habe mich das Gleiche gefragt. Ich persönlich habe es so geschrieben (Fachleute werden mich korrigieren, wenn sie kommen)

Dieser Teil nimmt einen offenen Auftrag auf und weist den Variablen Stop- und Take-Werte zu

// +----------------------------------------------------------------------+
//------- : функция поиска открытых ордеров по символу графика, подхват и установки уровней стопа и профита
double TradeSymbol()
   {
   int    TotalTradeSymbol = 0;
   int    SendGo           = 0;
   total=OrdersTotal();  
   for(cnt=0;cnt<total;cnt++)
      {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
        {
        if(OrderType()== OP_BUY)
          {
          if(StopLoss   > 0 && Bid < OrderOpenPrice()) {sl = NormalizeDouble(OrderOpenPrice() - StopLoss*Point, Digits);}  
          if(TakeProfit > 0)                           {tp = NormalizeDouble(OrderOpenPrice() + TakeProfit*Point, Digits);}
          }
        if(OrderType()== OP_SELL)
          {
          if(StopLoss   > 0 && Ask > OrderOpenPrice()) {sl = NormalizeDouble(OrderOpenPrice() + StopLoss*Point, Digits);}  
          if(TakeProfit > 0)                           {tp = NormalizeDouble(OrderOpenPrice() - TakeProfit*Point, Digits);} 
          }
        if(OrderStopLoss()   != sl){SendGo++;}
        if(OrderTakeProfit() != tp){SendGo++;}
        if(!UseVirtualTradeLevel && SendGo != 0) {OrderModify(OrderTicket(),OrderOpenPrice(),sl,tp,0,CLR_NONE);}
        TotalTradeSymbol++;
        }
      }
    return(TotalTradeSymbol);  
    }
// +----------------------------------------------------------------------+

dieser Teil prüft und schließt bei der Übernahme

// +----------------------------------------------------------------------+
//------- : функция проверки тейкпрофита
void CheckTakeProfit()
   {
   if(tp == 0)return(0);
   total=OrdersTotal();  
   for(cnt=0;cnt<total;cnt++)
      {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
        {
        if(OrderType()== OP_BUY)
          {
          if(Bid > tp)
            {
            OrderClose(OrderTicket(), OrderLots(), Bid, SleepPage, Lime);
            if(UseSound)PlaySound("ok.wav");
            }
          }
        if(OrderType()== OP_SELL)
          {
          if(Ask < tp)
            {
            OrderClose(OrderTicket(), OrderLots(), Ask, SleepPage, Lime);
            if(UseSound)PlaySound("ok.wav");
            }
          }
        }
      }
    }
// +----------------------------------------------------------------------+

dieser Teil prüft und schließt bei Stopp

// +----------------------------------------------------------------------+
//------- : функция проверки стоплоса
void CheckStopLoss()
   {
   if(sl == 0)return(0);
   total=OrdersTotal();  
   for(cnt=0;cnt<total;cnt++)
      {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
        {
        if(OrderType()== OP_BUY)
          {
          if(Bid < sl)
            {
            OrderClose(OrderTicket(), OrderLots(), Bid, SleepPage, Blue);
            if(UseSound)PlaySound("ok.wav");
            }
          }
        if(OrderType()== OP_SELL)
          {
          if(Ask > sl)
            {
            OrderClose(OrderTicket(), OrderLots(), Ask, SleepPage, Blue);
            if(UseSound)PlaySound("ok.wav");
            }
          }
        }
      }
    }
// +----------------------------------------------------------------------+
P.S.

Fachleute - machen Sie sich nicht über die Autodidakten lustig, vielleicht könnte es anders sein, aber für mich funktioniert es ....

 
elmucon:

Ich bin kein Profi, aber ich habe mich das Gleiche gefragt. Ich persönlich habe es so geschrieben (wenn Sie ein Profi sind - korrigieren Sie mich)

Dieser Teil nimmt einen offenen Auftrag auf und weist den Variablen Stop- und Take-Werte zu

dieser Teil prüft und schließt bei der Übernahme

dieser Teil prüft und schließt bei Stopp

P.S.

Fachleute - machen Sie sich nicht über die Autodidakten lustig, vielleicht könnte es anders sein, aber für mich funktioniert es ....

Alles ist praktisch in Ordnung! Das einzige Problem ist, dass es bei der Ein- und Ausfahrt einige Merkwürdigkeiten gibt. Nun, und eine solche Strategie schützt nicht vor Ausrutschern. Aber herzlichen Dank!
 

Können Sie mir sagen, wie ich den aktuellen Zeitrahmen für den EA ermitteln kann?

Wenn der Zeitrahmen M1 ist, muss ich eine Bedingung erfüllen, und wenn der Zeitrahmen M5 ist, muss ich eine weitere Bedingung erfüllen.

 
sss2019:

Können Sie mir sagen, wie ich den aktuellen Zeitrahmen für den EA ermitteln kann?

Wenn der Zeitrahmen M1 ist, muss ich eine Bedingung erfüllen, und wenn der Zeitrahmen M5 ist, muss ich eine weitere Bedingung erfüllen.


Verwendung der Funktion Periode()
 
sss2019:

Können Sie mir sagen, wie ich den aktuellen Zeitrahmen für den EA ermitteln kann?

Wenn der Zeitrahmen M1 ist, muss ich eine Bedingung erfüllen, und wenn der Zeitrahmen M5 ist, muss ich eine weitere Bedingung erfüllen.

if (Period()==1) return; //Условие минуток
if (Period()==5) bool working=true; //Условие пятиминуток
 
splxgf:


Ich danke Ihnen. Der Wert 1 entspricht also der Periode M1 und der Wert 5 entspricht der Periode M5, das heißt, der Wert 60 entspricht der Periode H1 und der Wert 240 entspricht der Periode H4, richtig?

Ich benötige folgende Konstruktion: Wenn die Periode M1 ausgewählt wird, ist dies der Fall 1 und wenn die Periode M15 ausgewählt wird, der Fall 15. Funktioniert das, oder muss man Fall 1, Fall 2 und Fall 3 der Reihe nach durchführen?

  switch(Period())
    {
    case 1 : Ba = 60;
    case 5 : Ba = 12;
    case 15 : Ba = 4;
    case 30 : Ba = 2;
    case 60 : Ba = 1;
    }
Grund der Beschwerde: