ONLY CANDLE / BAR - Wie katalogisiere oder trenne ich die Kerze? - BITTE KORRIGIEREN SIE MICH!

 


ONLY CANDLE - Wie kann man die Kerze katalogisieren oder abtrennen?

BITTE KORRIGIEREN SIE MICH!



Wir haben eine bullische und eine bärische Kerze, die ich abtrennen möchte.

Es ist wie bei einem Hirten. Der Hirte hat eine Farm, einen Hof und Schafe.

Wenn es Zeit ist, die Schafe zu scheren, geht Herr JOHN zur Farm, fängt die Schafe ein und ...

Das erste gefangene Schaf ist zu klein zum Scheren - John lässt es los.

Dasnächste Schaf ist gut, John nimmt eine Schere und das Schaf ist nackt.

Dasnächste Schaf ist gut und hat viel Wolle - John nimmt eine GROSSE Schere und das Schaf ist nackt

Nächstes Schaf ist Widder - John nimmt Messer und Widder ist in diesem Moment Eunuch


Ich möchte das Gleiche mit Kerzen/Balken machen
Unsere Kerze wird Bar[0].... wir warten..... sie wird gehen, wir warten.... 15 Minuten (M15) und da ist sie! ... was ist das? check!

Wenn ich Bullisch Candle habe und Candle (Preis open [1]- Preis close [1]) 2 Punkt zu klein ist - loslassen, wir machen nichts



Wenn ich Bullisch Candle habe und Candle (price open [1]- price close [1]) haben 4 Punkt - dann Programm starten

CheckForOpenS1(); Kauffunktion starten, wenn unser Kurs + 4 Punkte über unsere Kerze kommt (Szenario1)

Wenn ich eine Bullische Kerze habe und die Kerze (Preis offen [1]- Preis geschlossen [1]) hat 5 Punkte - das ist eine sehr große Kerze - dann starte das Programm

CheckForOpenS2(); Kauffunktion starten, wenn der Preis + 14 Punkte über unserer Kerze liegt (Szenario2)



Ich will diese Hexe jede Kerze, ich will das Programm KAUFEN starten, wenn ich eine große Kerze habe, wenn ich eine zu kleine Kerze habe, werde ich auf die nächste warten

So... das ist richtig aber ich habe eine Idee :)

Bitte nicht schreiben keine notwendige Sache.

int start() // start program 
   
double bear() // check first candle -mabey is bear? = THIS IS aur NEW function title bear body is in()
   {     // start body
      double A=Open[1];  // stay Open[1] is changeable A
      double B=Close[1];  // stay Open[1] is changeable A    
      double C=A-B;         // result
      return(C);              // take result C and put in to function bear()
   }                              //end body, NOW bear is aur C example 6 or 89 ;212; 1; 2;..;;;.
   
double bull() // check first candle -mabey is bull
   {
      double A=Open[1];   // we use double because euro/usd have point example 1.9865
      double B=Close[1];     
      double C=B-A;
      return(C);
   }

// when we have bull catalog/ segregate  him..
switch(bull())
      { 
         case 1 : break;            // nothing happen
         case 2 : break;            // nothing happen
         case 3 : break;            // nothing happen
         case 4 : CheckForOpenS1(); break; // start CheckForOpenS1()- take it and go thrue with this.. we will see want is '...S1'
         case 5 : CheckForOpenS2(); CheckForOpenS3() break; // start CheckForOpenS2() and S3 ....
      }

// when we have bears catalog/segregate him..
switch(bears())
      { 
         case 1 : break;
         case 2 : break;
         case 3 : break;
         case 4 : CheckForOpenY1(); break;// start CheckForOpenY1()- take it and go thrue with this.. we will see want is '...Y1'
         case 5 : CheckForOpenY2(); CheckForOpenY3(); break; // start CheckForOpenY2() and Y3
      }


return(); // exit program wait for new tip, and ower and ower ....
}  // end


 
 

Glauben Sie, dass Menschen, deren Muttersprache nicht Englisch ist, Ihre Geschichte verstehen können? Ich verstehe die Schafe und den Hirten Mr. John, aber die Geschichte ergibt für mich keinen Sinn. (Vielleicht liegt es an mir... also tut es mir leid)

Könnten Sie Ihr Problem in "internationalem Englisch" unter Verwendung der allgemeinen Definitionen für Handel/mql4 erklären?

Was bedeutet dieser Satz?

<br / translate="no">Bitte schreiben Sie kein Thema, das könnte einHandbuch für die anderen sein
 
kronin:

Glauben Sie, dass Menschen, deren Muttersprache nicht Englisch ist, Ihre Geschichte verstehen können? Ich verstehe die Schafe und den Hirten Mr. John, aber die Geschichte ergibt für mich keinen Sinn. (Vielleicht liegt es an mir... also tut es mir leid)

Könnten Sie Ihr Problem in "internationalem Englisch" unter Verwendung der allgemeinen Definitionen für Handel/mql4 erklären?

Was bedeutet dieser Satz?

Kronin, wahrscheinlich war das nur ein Fehler im Online-Übersetzer, das passiert im Forum ständig.
 

ONLY CANDLE - Wie wird die Position geöffnet? - Es sollte das nächste Thema sein. Moderator was denken Sie? kann ich?

Wir implementieren das ausgewählte Szenario
Wie sendet man einen Auftrag?

int start() // start program 
{

// We have some function here like "int CalculateCurrentOrders(string symbol)" and  "double LotsOptimized()"
// many different thing, suddenly! we have our "CheckOpen();" 

//--------------------------------

void CheckOpen()      // void - because function return nothing
{                     // start body
   int    res;        // we will use changeable "res" this is "int" value
   if( Bid==Close[1]+4*Point)  // check conditions: Bid or Ask must be 4 Point above a BAR if no - nothing happen if Yes go below
     {               // start body if
      res=OrderSend(Symbol(),OP_SELL,0.02,Bid,0,Open[1]+37*Point,0,"",MAGICMA,0,Red);  // start "res" and "res" is sending message to platform to open position 
                     // what position is in "()" allways must be the same sequence symbol , op_*** , lot size , ...)
      return;        // if "res" do it then retunrn too ... y ... "if". Because "if" is done return too CheckOpen(). Because "CheckOpen()" is done stop and end.
     }               // stop body if

  }                  // stop body function "void CheckOpen()"
  
//-------------------------------- 

Wir haben einen Auftrag
Aber was sollte ich tun, um zwei Positionen in einer Funktion zu öffnen?
Wir haben unser Szenario CheckForOpenS1() in diesem Szenario kaufen wir zwei Mal, wenn unser Preis in der richtigen Stelle natürlich sein wird

//--------------------------------  


 
void CheckOpen1()      // define first function
{                     
   int    res;       
   if( Bid==Close[1]+4*Point)  
     {               
      res=OrderSend(Symbol(),OP_SELL,0.02,Bid,0,0,0,"",MAGICMA,0,Red);  
                     
      return;        
     }               

}   
  
void CheckOpen2()      // define second function
{                     
   int    res;       
   if( Bid==Close[1]+8*Point)  // change 8 Point ( 4 ==> 8 )
     {               
      res=OrderSend(Symbol(),OP_SELL,0.02,Bid,0,0,0,"",MAGICMA,0,Red);  
                     
      return;        
     }               

}   

//       I DONT KNOW..............

//--------------------------------  / our scenario  
void CheckForOpenS1()= true;      
 
  void CheckOpen1()
  void CheckOpen2()
  
  
//--------------------------------  / OR LIKE THESE
int res;
if ( CheckForOpenS1() == true)
 {
 res= CheckOpen1() CheckOpen2();
 }
 
Wodzuuu:

ONLY CANDLE - Wie wird die Position geöffnet? - Es sollte das nächste Thema sein. Moderator was sind Sie denken? kann ich?

Wir implement ieren das ausgewählte Szenario
Wie sendet man einen Auftrag?

Wir haben einen Auftrag
Aber was sollte ich tun, um zwei Positionen in einer Funktion zu öffnen?
Wir haben unser Szenario CheckForOpenS1() in diesem Szenario kaufen wir zwei Mal, wenn unser Preis in der richtigen Stelle natürlich sein wird

Ich verstehe nicht wirklich, was Sie fragen ... Sie machen sich nicht sehr klar ... oder vielleicht liegt es nur an mir.

Dieser Code wird Ihnen allerdings Probleme bereiten...

if( Bid == Close[1] + 4 * Point)

Lesen Sie diesen Thread:Kann Preis != Preis ?

 

könnte sonst
wie man einen einfachen EA mit mehreren Szenarien von Ereignissen

war eine kleine Kerze - offen Features 1
war die durchschnittliche Kerze - offen Features 2
war eine große Kerze - offen Features 3


switch () ist an dieser Stelle angebracht , denke ich

Funktion 1 öffnet 1 Position und sorgt dafür, dass sie geschlossen wird
Die 2 öffnet 2 Positionen , bewacht sie und schließt
Die drei öffnen 2 Positionen , aber zu einem anderen Preis ....

jedes Mal, wenn wir eine Kerze haben , jedes Mal gibt es eine andere Funktion , die verschiedene Dinge tut

Ich weiß, dass Sie nicht für mich schreiben können , aber jede Beratung....

 

Wie versprochen, habe ich mir das noch einmal angesehen, aber es ergibt für mich immer noch keinen Sinn, tut mir leid.

Das wird niemals funktionieren:

double bull() // check first candle -mabey is bull
   {
      double A=Open[1];   // we use double because euro/usd have point example 1.9865
      double B=Close[1];     
      double C=B-A;
      return(C);	// <-- C is probably never 1,2,3,4,5.....
   }

// when we have bull catalog/ segregate  him..
switch(bull())		// <-- the expression here is something like 0.00123. None of your case statements will be executed.
      { 
         case 1 : break;            // nothing happen
         case 2 : break;            // nothing happen
         case 3 : break;            // nothing happen
         case 4 : CheckForOpenS1(); break; // start CheckForOpenS1()- take it and go thrue with this.. we will see want is '...S1'
         case 5 : CheckForOpenS2(); CheckForOpenS3() break; // start CheckForOpenS2() and S3 ....
      }

Lesen Sie hier, wie man den Schalter benutzt: https://docs.mql4.com/basis/operators/switch

Das ist überhaupt nicht klar:

void CheckOpen2()      // define second function
{                     
   int    res;       
   if( Bid==Close[1]+8*Point)  // change 8 Point ( 4 ==> 8 )
     {               
      res=OrderSend(Symbol(),OP_SELL,0.02,Bid,0,0,0,"",MAGICMA,0,Red);  
                     
      return;        
     }               

} 

Der Gleichheitsausdruck ist vielleicht nicht erwünscht, aber wie sollte er lauten?

Wenn er < lautet, dann wird sofort eine SELL-Order gesendet, wenn ein neuer Balken eintrifft (da der Eröffnungskurs des neuen Balkens vielleicht < ist als der Schlusskurs des vorherigen Balkens+8*Punkt)
Wenn der Wert > ist, wird er warten, bis der Preis ein wenig gestiegen ist und dann eine SELL-Order senden. Ich verstehe Ihre Strategie nicht wirklich, vielleicht ist sie so gewollt.

Ich könnte mir auch vorstellen, dass Sie das meinen:

if(Bid<Close[1]-8*Point)   

Handeln Sie mit einem 4-stelligen Broker, bei dem 1 Point gleich 1 Pip ist? Andernfalls muss sich der Kurs nur um 0,8 Pips bewegen, was wahrscheinlich auch nicht das ist, was Sie wollen (und der Spread könnte es zusätzlich verwirren).

Ich denke, Sie sollten Ihren Code noch einmal durchgehen und korrigieren, wo Sie können. Sie können gerne weitere Fragen stellen, wenn Sie spezielle Fragen haben. Bitte seien Sie sich bewusst, dass Ihre Strategie auch ganz anders funktionieren kann, nur weil ein Programmierer falsch verstanden hat, was Sie gemeint haben.

 

Meine Strategie ist zu
wenn die Kerze erscheint BULL von 4 bis 5 Punkt , nach der Kerze (jemals, unter allen Bedingungen) bereit, zwei Buy-Aufträge zu senden ( wennder Preis erreicht unsere erforderlichen Niveau zu kaufen , und wie zu erreichen buy2)

wenn die Kerze erscheint BULL von 6 bis 7 Punkt, nach der Kerze (jemals, unter allen Bedingungen) bereit, dreiBuy-Aufträge zu senden (wenn der Preis erreicht unsere erforderlichen Niveau zu kaufen ein, und wie zu erreichen buy2und 3)

Ich habe einen kleinen Fehler irgendwo in der Bid oder Ask , warum EA nicht funktioniert. .. (Ich kann diesen Fehler nicht finden , aber normalerweise EA funktioniert sehr gut für das , was ich schrieb .. kauft und schließen) , aber es zeigt meine technischen Plan.

ICH KORRIGIERE, DASS ES JETZT FUNKTIONIERT

Wie Sie an der Unterseite wird es sehr voll und manchmal ersetzt die EA Bull4 Szenarien und Szenario öffnet Bull6 Bull4 und wie ich erkannte es plötzlich Ihre Meinung ändern und beenden Sie die Bull6 Bull6
Kann es vereinfacht werden?

//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
#define MAGICMA  20050610


//+------------------------------------------------------------------+
//| Calculate open positions    HOW MEANY OF THIS                    |
//+------------------------------------------------------------------+

int CalculateCurrentOrders(string symbol)
  {
   int buys=0,sells=0;
//----
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; 
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
        {
         if(OrderType()==OP_BUY) buys++;
        }
     }
//---- return orders volume
   return(buys);
  }

//+------------------------------------------------------------------+
//| Calculate candle                                                 |
//+------------------------------------------------------------------+
bool BULL4()
   {
   if(Close[1]-Open[1]>=4*Point && Close[1]-Open[1]<=5*Point)
   return(true);
   } 

bool BULL6()
   {
   if(Close[1]-Open[1]>=6*Point && Close[1]-Open[1]<=7*Point)
   return(true);
   }
      
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
 
void CheckForOpenBULL41()
  {
   int    res;
   if(Bid==Close[1]+3*Point)  
     {
      res=OrderSend(Symbol(),OP_BUY,0.41,Ask,0,Close[1]-25*Point,0,"",MAGICMA,0,Blue);
      return;
     }
  }
  
void CheckForOpenBULL42()
  {
   int    res;
   if(Ask>OrderOpenPrice()+2*Point)  
     {
      res=OrderSend(Symbol(),OP_BUY,0.42,Ask,0,Close[1]-25*Point,0,"",MAGICMA,0,Blue);
      return;
     }
  }  
  
void CheckForOpenBULL61()
  {
   int    res;
   if(Bid==Close[1]+4*Point)  
     {
      res=OrderSend(Symbol(),OP_BUY,0.61,Ask,0,Close[1]-25*Point,0,"",MAGICMA,0,Red);
      return;
     }
  }
  
void CheckForOpenBULL62()
  {
   int    res;
   if(Ask>OrderOpenPrice()+2*Point)  
     {
      res=OrderSend(Symbol(),OP_BUY,0.62,Ask,0,Close[1]-25*Point,0,"",MAGICMA,0,Red);
      return;
     }
  }

void CheckForOpenBULL63()
  {
   int    res;
   if(Ask>OrderOpenPrice()+2*Point)  
     {
      res=OrderSend(Symbol(),OP_BUY,0.63,Ask,0,Close[1]-25*Point,0,"",MAGICMA,0,Red);
      return;
     }
  }
//+------------------------------------------------------------------+
//| Check for close order conditions                                 |
//+------------------------------------------------------------------+

void CheckForCloseBULL()
{
   RefreshRates();
   if(OrderOpenPrice()+4*Point< Ask)
   for (int i = OrdersTotal(); i >= 0;i--)
   {
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if (OrderSymbol() == Symbol()) 
      {
         bool ticket = true;
         if (OrderType() == OP_BUY) ticket = OrderClose(OrderTicket(),OrderLots(),Bid,1,Black);

      }
   }
} 

  
  
//+------------------------------------------------------------------+
//| Start function                                 |
//+------------------------------------------------------------------+
void start()
  {
   
   if(BULL4()==true && CalculateCurrentOrders(Symbol())==0) CheckForOpenBULL41();
   else                                    CheckForCloseBULL();

   if(CalculateCurrentOrders(Symbol())==1) CheckForOpenBULL42();
   else                                    CheckForCloseBULL();
   
   //---//
   
   if(BULL6()==true && CalculateCurrentOrders(Symbol())==0) CheckForOpenBULL61();
   else                                    CheckForCloseBULL();

   if(CalculateCurrentOrders(Symbol())==1) CheckForOpenBULL62();
   else                                    CheckForCloseBULL();
   
   if(CalculateCurrentOrders(Symbol())==2) CheckForOpenBULL63();
   else                                    CheckForCloseBULL(); 
    
   if(CalculateCurrentOrders(Symbol())==3) CheckForOpenBULL63();
   else                                    CheckForCloseBULL(); 
       
   if(CalculateCurrentOrders(Symbol())==4) CheckForCloseBULL();
  }
//+------------------------------------------------------------------+

 
Wodzuuu:

Meine Strategie ist es
wenn die Kerze erscheint BYK von 4 bis 5, nach der Kerze (jemals, unter allen Bedingungen) bereit, zwei Daten Kaufaufträge zu senden (wenn der Preis erreicht unsere erforderlichen Niveau zu kaufen , und wie man zkup 2 zu erreichen )

wenn die Kerze erscheint BYK von 6 bis 7, nach der Kerze (jemals, unter allen Bedingungen) bereit, drei Kaufaufträge zu senden (wenn der Preis erreicht unsere erforderlichen Niveau zu kaufen , und wie man zkup 2 und 3 zu erreichen )

Ich habe einen kleinen Fehler irgendwo in der Bid oder Ask , warum EA nicht funktioniert. .. (Ich kann diesen Fehler nicht finden , aber normalerweise EA funktioniert sehr gut für das , was ich schrieb .. kauft und schließen) , aber es zeigt meine technischen Plan.

Wie Sie an der Unterseite wird es sehr voll und manchmal ersetzt die EA Bull4 Szenarien und Szenario öffnet Bull6 Bull4 und wie ich erkannte es plötzlich Ihre Meinung ändern und beenden Sie die Bull6 Bull6
Kann es vereinfacht werden?

BYK ??

Das ist falsch...

for (int i = OrdersTotal(); i >= 0;i--)

... die Positionen beginnen bei 0, also müssen Sie von OrdersTotal() - 1 herunterzählen


Sie tun dies.......

void CheckForCloseBull()           // close ALL AT ONCE buy of course
{
   RefreshRates();
   if(  OrderOpenPrice()  > Ask+6*Point)

. . Sie erhalten denOrderOpenPrice(), aber für welche Order? Sie werden mehrere offene Orders haben ...



Sie verwenden die Variableres, um den Rückgabewert Ihrer OrderSend()-Aufrufe zu speichern ... und was machen Sie damit? nichts, warum?

Was sind Funktionsrückgabewerte? Wie verwende ich sie?

 

Sehr gute Antwort RaptorUK


1. res Problem
Ich studiere EA Moving Average Auflösung gibt es nur 3 mal, alle als eine Funktion der Zeit, nach für sie nicht existiert.

Das erste Mal wird es für die Information "Hallo, wir werden res verwenden " verwendet.

ein zweites Mal , um die Bestellung zu senden . OrderSend gibt die Anzahl der Bestellungen zurück, die unsere res = 343321 ist, abowe die Funktion 'void CheckForOpen () " res nicht existiert.

aber...
Ich denke, dass , wenn die "void CheckForOpen ()" Beobachten Sie die Wahrheit dieses Befehls OrderSelect irgendwie bringen , dass die Zahl außer "void CheckForOpen ()" Ich werde versuchen ..

2. OrderOpenPrice() Problem

Sie haben völlig Recht, aber diese Syntax funktioniert erstaunlich gut :) Ich werde versuchen, etwas an dieser Stelle zu tun

3. OrdersTotal() - 1Sie haben absolut Recht,

4. BYK (POLEN)= BULL Übersetzer haben Problem

 

Für diejenigen , die meine EA immer noch nicht verstehen, schreibe eine Geschichte: D hehehe


Alle Schritte, die wir tun, sind die Funktionen. Ich schreibe jetzt an einem Computer ist eine Funktion.Ich schaue eine Fernsehsendung ist die zweite Funktion, usw.
Jetzt gehen wir in die Küche ...
Wir haben ein Kochbuch, öffnen das Inhaltsverzeichnis und lesen nacheinander die Punkte
Erstens: Wie man Schweinekoteletts macht - das Fleisch in eine Schüssel geben, salzen, pfeffern, Kartoffeln schälen
Auf der linken Seite das Ereignis - das Recht Funktionen, und ein paar von Thema - nein , es sei denn, einfach!


Nach dem Lesen , wie man Schweinekoteletts zu machenbeginnen, es zu tun, die Dinge zu tun. Steak bekommt 25 Minuten, und als ich begann , ein Ende zu haben .
Es ist schon fünf Minuten M5 ( fünf Minuten später)beginnen wir den nächsten Punkt ein Kochbuch zulesen.
Zweite Wie man einen Salat machen - Karotten schälen, Zwiebeln schälen , und anderen Mist


Und hier geschieht die Magie, weil es doppelt, Ahorn (zweite Person) erstellt. Wir tun dies auf Schweinekoteletts und Salat zur gleichen Zeit.Wir beginnen, in der Küche zwei Personen in einemzu haben.

Je mehr Punkte Sie lesen, desto mehr Personen erscheinen in der Küche . Die Leute in der Küche verschwinden , nachdem sie ihre Aufgaben erledigt haben , und waschen das Geschirr ab.


Das Ereignis ist Kerzen - bietet verschiedene Optionen für den Kauf und Verkauf oder Schließung.