[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 980

 

Ich möchte Ihnen die Idee kurz erläutern.

Sie müssen den ersten Pfeil in der Historie des aktuellen Balkens finden oder identifizieren.

Dabei spielt es keine Rolle, ob es nach oben oder nach unten geht.

(A) Und dann speichern Sie dieses Ergebnis in einer Variablen oder einem Kennzeichen. Zum Beispiel GlobalFlag =-1 (wenn der Pfeil nach unten zeigt) und +1, wenn er nach oben zeigt.

Dann ging der Kurs weiter nach vorne und es wird wieder ein Pfeil gezogen.

Im EA wird der Suchzyklus jedes Mal mit einem neuen Tick gestartet, richtig?

Die Schleife wurde erneut gestartet und der soeben gezeichnete Pfeil gefunden und in einer Variablen oder einem Flag gespeichert, d.h.

d.h. Posten A wurde ausgeführt.

Das ist die Idee dahinter.

Wozu die Fahne und so weiter?

Dann wird diese Flagge, d.h. die Stelle, auf die der Pfeil zeigt, mit einem anderen Indikator verwendet, um das Signal zu bestätigen.

Wenn zum Beispiel GlobalFlag=+1 (Pfeil nach oben) ist und ein anderer Indikator nach oben zeigt, bedeutet dies, dass wir in den Markt einsteigen sollten.

Das heißt, beide Bedingungen sollten in den Indikatoren übereinstimmen.


Wie gefällt Ihnen dieser Code?

Das heißt, ich brauche nicht zu berechnen, auf welcher Kerze ist der Pfeil, was Preis ist es, usw. Die Hauptsache ist, die Tatsache zu beheben

Die Hauptsache ist, die Verfügbarkeit des Pfeils und seine Richtung festzulegen.

Kann ich statt +1 und -1 auch true und falce ???? zuweisen oder nicht?


double DataIndUP, DataIndDN;
int    i, GlobalFlag, nBars = 250 ;  // nBars = количество проверяемых баров вглубь истории

for (i=0; i<nBars; i++) 
{
   DataIndUP = iCustom(Symbol(),Period(),"Имя индюшонка", через запятую все параметры индюка , номер буфера стрелки вверх, i)
   DataIndDN = iCustom(Symbol(),Period(),"Имя индюшонка", через запятую все параметры индюка , номер буфера стрелки вниз, i)
   if (DataIndUP !=EMPTY_VALUE)     // или if (DataIndUP !=0) // найдена стрелка вверх
                                    // всё зависит от того, что выдаёт буфер при отсутствии стрелки 
                                    // нажмите Ctrl+D и посмотрите что вам в окне данных будет показано
      GlobalFlag=+1                 // присвоение значения +1(стрелка вверх)  переменной 
      Break;                        //выход из цикла, так как  нашлась последняя стрелка
if (DataIndDN !=EMPTY_VALUE)     // или if (DataIndDN !=0) // найдена стрелка вниз
                                    // всё зависит от того, что выдаёт буфер при отсутствии стрелки 
                                    // нажмите Ctrl+D и посмотрите что вам в окне данных будет показано
      GlobalFlag=-1                 // присвоение значения -1(стрелка вниз) переменной
      Break;                        //выход из цикла, так как  нашлась последняя стрелка
}
 
Tupen:


Das ist ein Anfang.


Der Einstiegspunkt A - Verkaufen und Kaufen - liegt also bei 4 Pips. 1 Variante des Verhaltens - der Preis geht nach unten, - wir fixieren den Gewinn in, sagen wir, 5 Punkten vom Einstiegspunkt. - Wenn der Kurs steigt, ändert sich auch die Anzahl der Punkte vor der Gewinnfeststellung (vorerst ein Minimum), d.h. das Programm muss 4 Aufträge auf einmal erteilen.
 
Roman.:



Beitrag wegen obszöner Obszönität gelöscht

 
Vinin:

Beitrag wegen obszöner Obszönität gelöscht


Tut mir leid, großzügig, ich konnte nicht anders. Genug von den Geschichten aus dem Wienerwald...
 

Bitte schreiben Sie ein Programm mit 4 Aufträgen. Ich muss mir die Demo ansehen und die Umkehrung sehen

 
Tupen:

Bitte schreiben Sie ein Programm mit 4 Aufträgen. Ich muss mir die Demo ansehen und sehen, ob ich die Pivot-Option herausfinden kann.


Siehe den "Avalanche"-Thread - dort wurde alles gründlich durchdacht, einschließlich der Umkehrmöglichkeiten.

Es besteht keine Notwendigkeit, das Rad neu zu erfinden. Alles wurde vor langer Zeit von Menschen erfunden. Lesen, analysieren, verwenden und nutzen Sie es.

Sie werden nicht früh genug zum "richtigen" Fahrrad (sprich: zur Lösung) kommen...

 

Können Sie mir sagen, warum es keine Zyklizität gibt? In der Testversion eröffnet der Expert Advisor nur zwei Trades.

extern int F = 8; //Zeitspanne des schnellen МА
extern int S = 20; //Zeitspanne der langsamen MA
extern double Lots = 0.1; // Los bestellen
int Slippage = 5; // Slippage in Pips.
int Magic = 123; //magische Nummer des Expert Advisors
int ticketsell;
int ticketbuy;
int start()
{
double MAfast = iMA(NULL,0,F,0,MODE_SMA,PRICE_CLOSE,1);
double MAslow = iMA(NULL,0,S,0,MODE_SMA,PRICE_CLOSE,1);
// kein Auftrag mit ticketell im Terminal ODER es ist geschlossen UND der schnelle MA ist niedriger als der langsame, verkaufen !
if ( (OrderSelect(ticketsell,SELECT_BY_TICKET,MODE_TRADES) == false ) && MAfast < MAslow )
{
// wenn wir bereits einen gegenteiligen Auftrag, Kauf, hatten, schließen wir ihn ab:
if ( OrderSelect(ticketbuy,SELECT_BY_TICKET,MODE_TRADES) == true )
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, CLR_NONE);
OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,Magic,0,Red)
}
if ( (OrderSelect(ticketbuy,SELECT_BY_TICKET,MODE_TRADES) == false ) && MAfast > MAslow )
{
if ( OrderSelect(ticketsell,SELECT_BY_TICKET,MODE_TRADES) == true )
OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, CLR_NONE);
ticketbuy = OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,Magic,0,Blue);
}
zurück(0);
}

 

Mirgha Versuchen Sie dies

extern int F = 8; //период быстрой МА
extern int S = 20; //период медл.МА
extern double Lots = 0.1; // лот ордера
int Slippage = 5; // проскальзывание в пп.
int Magic = 123; // магический номер эксперта
int ticketsell;  
int ticketbuy;

int start()
{
   double MAfast = iMA(NULL,0,F,0,MODE_SMA,PRICE_CLOSE,1);
   double MAslow = iMA(NULL,0,S,0,MODE_SMA,PRICE_CLOSE,1); 
   
   ticketsell = -1;
   ticketbuy = -1;
   for (int i = 0; i < OrdersTotal(); i++)
   {
      OrderSelect( i, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
      {
         if (OrderType() == OP_SELL) ticketsell = OrderTicket();
         if (OrderType() == OP_BUY)  ticketbuy  = OrderTicket();
      }
    }
   // ордера с тикетом ticketsell в терминале нету ИЛИ он закрылся И быстрая МА ниже медленной, продаем !
   if ( (OrderSelect(ticketsell,SELECT_BY_TICKET,MODE_TRADES) == false ) && MAfast < MAslow )
   {
      // если у нас при этом был противоположный ордер, бай, его закроем :
      if ( OrderSelect(ticketbuy,SELECT_BY_TICKET,MODE_TRADES) == true )
         OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, CLR_NONE);
      ticketsell = OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,0,Magic,0,Red);
   } 
   if ( (OrderSelect(ticketbuy,SELECT_BY_TICKET,MODE_TRADES) == false ) && MAfast > MAslow )
   {
      if ( OrderSelect(ticketsell,SELECT_BY_TICKET,MODE_TRADES) == true )
         OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, CLR_NONE);
      ticketbuy = OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,0,Magic,0,Blue);
   }
   return(0);
} 
 
Ich danke Ihnen!
 

Meine Frage bleibt unbeantwortet.

Doch wie kann ich die Anzahl der eingehenden Signale des Indikators filtern? Zum Beispiel akzeptiert der Expert Advisor Signal Nummer drei, um mit der Arbeit zu beginnen, d.h. die ersten beiden Signale werden übersprungen, und das dritte wird für die Aktion akzeptiert. Wie ich oben schrieb, habe ich versucht, es mit globalen Variablen zu implementieren, aber es funktioniert nicht....

Grund der Beschwerde: