Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4973
Beiträge: 43249
Benutzer: 7.219
Aktive Benutzer: 81
Links: 84
Wir begrüßen unseren neuesten Benutzer: Hopfen&Malz
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einem Tag
- Hopfen&Mal...
vor 2 Tagen
- frankmicha...
vor einer Woche
- DFeck
vor einer Woche
- bb1107
vor 2 Wochen
- rg-trader

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 687
Gesamt: 687
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Like Tree5Likes
Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #11 (permalink)  
Alt 11.12.20
Mitglied
 
Registriert seit: Apr 2018
Beiträge: 103
daybyter befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Indikator-Trading Beitrag anzeigen
@daybyter: Nein, das der EA die Orders nicht schließt liegt bei diesem EA ganz ganz ganz bestimmt nicht am Broker!
Außerdem meint MA-EA ja auch das die Orders überhaupt nicht geschlossen werden. Was du da ansprichst ist der Faktor aus der die Slippage entsteht, also das du zu einem anderen Preis ausgeführt wirst, als du es in dem Moment des Sendens von OrderSend/Close gehabt hättest.
Wenn die Orders gar nicht geschlossen werden, ist es natürlich was anderes.
Wir haben aber schon Broker gemessen, und da kannst Du diese Verzögerung vom last look oft genau sehen.
  #12 (permalink)  
Alt 13.12.20
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Hallo.

Dieser EA funktioniert vermutlich am Besten bei kleinem Spread. Ist der Spread doch was höher, dann wärs gut, wenn er von größeren Trends möglichst viel mit nimmt.

Sollte man möglichst viele kleine Bewegungen versuchen mit zu nehmen? Oder doch auf größere Trends setzen? 1. Wäre vielleicht besser, ihn wie ne Art Scalper zu nutzen. Aber das bräuchte vermutlich viel Leistung. Mein PC wird wohl mehr als ausreichen, aber meine Verbindung ist nicht die Schnellste.
Code:
extern string esIITCBSMS1="if IsTradeContexBusy()";
extern string esIITCBSMS2="sleep Milli Seconds";
extern int slMS=16; // Zum Testen 16 MS
//-----------------------------------------------------------------------------------------------------------*/
extern string esDOONO1="Dist to OrderOpenPrice()";
extern string esDOONO2="open next Order";
extern int Dist_ONO = 15; // ?
//-----------------------------------------------------------------------------------------------------------*/
extern string esDOCAO1="Dist to OrderOpenPrice()";
extern string esDOCAO2="close all Orders";
extern int Dist_CAO = 35; // Zum Testen 35. Weniger als ... ist wahrscheinlich nicht ausreichend?
//-----------------------------------------------------------------------------------------------------------*/
extern int OrdersNeed_Multi = 2;
Angehängte Dateien
Dateityp: mq4 LoShDistV3.mq4 (36,2 KB, 2x aufgerufen)
  #13 (permalink)  
Alt 14.12.20
Mitglied
 
Registriert seit: Apr 2018
Beiträge: 103
daybyter befindet sich auf einem aufstrebenden Ast
Standard

Mein Tipp ist, dass er im Dow Jones am besten geht.
Mich würde interessieren wie er auf einer Bitcoin Börse mit 50 ct Spread geht.
Ich würde ihn vermutlich mit 2 unterschiedlichen Symbolen testen, nämlich Asset gegen Future.
Ausserdem könnte man ihn mal mit Optionen testen. Dann kannst Du auf der 'falschen' Seite einfach die Option verfallen lassen.
  #14 (permalink)  
Alt 15.12.20
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Er ist eigentlich (erst mal) für Forex versucht worden. Mehr als ca. 20 Spread wird nix für ihn sein.

Im Anhang der neueste Versuch. Nix mehr mit Ticket, nur noch select by pos. Mach mir zu viele Sorgen, dass er die Tickets irgendwann mal vergisst.

Die neue Sorge ist jetzt, dass er ohne nach Ticket aus zu wählen, falsche Orders für weitere Funktionen benutzt. Mal angenommen man hat

1.
Zwei Sells geöffnet

2.
weitere vier Sells geöffnet

3.
weitere acht Sells geöffnet

und so weiter. Dann weiß ich nicht, ob das mit OrderSelect() funktioniert wie es soll. Er soll z.B. in dem Fall eben die letzten 8 Sells aus 3. auswählen. Nach denen wird geprüft, ob er noch mehr öffnen soll, oder, wenn die allererste Sell-Order ihr Gewinn-Ziel erreicht hat, alle offenen Orders, egal ob Buy oder Sell, egal ob im Gewinn oder im Verlust, schließen soll.
Code:
//=============================================================================================================
// C L O S E   A L L   O R D E R S   B Y   S E L L   D I S T
//=============================================================================================================
// FirstSell raus suchen.
for(t=OrdersTotal()-1;t>=0;t--){
if(OrderSelect(t,SELECT_BY_POS)){
if(OrderSymbol()==Symbol()){
if(OrderMagicNumber()==MN_FiSel){

//Wenn FirstSell Gewinn-Dist erreicht hat...
  FiSelOOP_DCAO = NormalizeDouble( OrderOpenPrice() - Dist_CAO *_Point,_Digits);
  if( Ask < FiSelOOP_DCAO ){

//  ...Lots erhöhen...
    Lots = OrderLots() + LotsPlus; // ?

//  ...und alle Orders schließen.
    for(u=OrdersTotal()-1;u>=0;u--){
    if(OrderSelect(u,SELECT_BY_POS)){
    if(OrderSymbol()==Symbol()){
      if(OrderMagicNumber()==MN_FiBuy){
        if(IsTradeAllowed()==true)OCsel=OrderClose(OrderTicket(),OrderLots(),NULL,Slippage,clrRed);
        if(IsTradeContextBusy()==true)Sleep(slMS);}
      if(OrderMagicNumber()==MN_NeBuy){
        if(IsTradeAllowed()==true)OCsel=OrderClose(OrderTicket(),OrderLots(),NULL,Slippage,clrRed);
        if(IsTradeContextBusy()==true)Sleep(slMS);}
      if(OrderMagicNumber()==MN_FiSel){
        if(IsTradeAllowed()==true)OCsel=OrderClose(OrderTicket(),OrderLots(),NULL,Slippage,clrRed);
        if(IsTradeContextBusy()==true)Sleep(slMS);}
      if(OrderMagicNumber()==MN_NeSel){
        if(IsTradeAllowed()==true)OCsel=OrderClose(OrderTicket(),OrderLots(),NULL,Slippage,clrRed);
        if(IsTradeContextBusy()==true)Sleep(slMS);}
    } } }
//-----------------------------------------------------------------------------------------------------------*/
} } } } }
//=============================================================================================================
// C L O S E   A L L   O R D E R S   B Y   B U Y   D I S T
//=============================================================================================================
//FirstBuy raus suchen.
for(v=OrdersTotal()-1;v>=0;v--){
if(OrderSelect(v,SELECT_BY_POS)){
if(OrderSymbol()==Symbol()){
if(OrderMagicNumber()==MN_FiBuy){

//Wenn FirstBuy Gewinn-Dist erreicht hat...
  if( Bid > FiBuyOOP_DCAO ){
          
//...Lots erhöhen...
    Lots = OrderLots() + LotsPlus; // ?

//...und alle Orders schließen.
    for(w=OrdersTotal()-1;w>=0;w--){
    if(OrderSelect(w,SELECT_BY_POS)){
    if(OrderSymbol()==Symbol()){
      if(OrderMagicNumber()==MN_FiSel){
        if(IsTradeAllowed()==true)OCsel=OrderClose(OrderTicket(),OrderLots(),NULL,Slippage,clrRed);
        if(IsTradeContextBusy()==true)Sleep(slMS);}
      if(OrderMagicNumber()==MN_NeSel){
        if(IsTradeAllowed()==true)OCsel=OrderClose(OrderTicket(),OrderLots(),NULL,Slippage,clrRed);
        if(IsTradeContextBusy()==true)Sleep(slMS);}
      if(OrderMagicNumber()==MN_FiBuy){
        if(IsTradeAllowed()==true)OCsel=OrderClose(OrderTicket(),OrderLots(),NULL,Slippage,clrRed);
        if(IsTradeContextBusy()==true)Sleep(slMS);}
      if(OrderMagicNumber()==MN_NeBuy){
        if(IsTradeAllowed()==true)OCsel=OrderClose(OrderTicket(),OrderLots(),NULL,Slippage,clrRed);
        if(IsTradeContextBusy()==true)Sleep(slMS);}
} } }
//-----------------------------------------------------------------------------------------------------------*/
} } } } }
Angehängte Dateien
Dateityp: mq4 LoShDistV3.mq4 (38,4 KB, 3x aufgerufen)
  #15 (permalink)  
Alt 15.12.20
Mitglied
 
Registriert seit: Apr 2018
Beiträge: 103
daybyter befindet sich auf einem aufstrebenden Ast
Standard

Da ist ja noch kein Trailing Stop drin? Musst für Indizes reinmachen, damit Du die langen Trends auch nutzen kannst.
  #16 (permalink)  
Alt 23.12.20
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Hallo.

Nen TrailingStop dürfte nix bringen. Der ganze EA ist ja eher ne Art Martin Gale - Scalper.

Im Anhang die neueste Version. Im Großen und Ganzen scheint er zu machen, was er soll.

Aber irgendwie ist das nicht optimal, wie er berechnet, wann er weitere Orders in eine Richtung öffnen oder alle Orders schließen soll. Die Berechnungen dafür scheinen sich schnell in die Quere zu kommen und so kommts anscheinend zu zu vielen Orders oder es wird geschlossen oder geöffnet wenns nicht gut ist. Weiß gerade nicht wirklich, wie man das besser machen kann.

Wenn Bid/Ask bestimmte Distanzen zu dem jeweiligen OrderOpenPrice erreicht haben, sollen je nach Abstand weitere Orders geöffnet oder Alle geschlossen werden. Sah heute im Demo so aus, als ob diese Berechnungen sich immer wieder mal in die Quere kommen.
Code:
//Wenn FirstSell Bedingungen erfüllt, next Sell öffnen.
  FiSelOOP_DistONO=NormalizeDouble( OrderOpenPrice() - Dist_ONO *_Point,_Digits);
  if( Bid <= FiSelOOP_DistONO ){

- weitere Sell-Orders öffnen -




  ...

  //Wenn FirstBuy Bedingungen erfüllt,next Buy öffnen.       
  FiBuyOOP_DistONO=NormalizeDouble( OrderOpenPrice() + Dist_ONO *_Point,_Digits);
   if( Ask >= FiBuyOOP_DistONO ){

- weitere Buy-Orders öffnen -
Code:
 //Wenn FirstSell Gewinn-Dist erreicht hat...
  FiSelOOP_DCAO = NormalizeDouble( OrderOpenPrice() - Dist_CAO *_Point,_Digits);
  if( Ask < FiSelOOP_DCAO ){

- alle Orders schließen -

  ...


  //Wenn FirstBuy Gewinn-Dist erreicht hat...
  FiBuyOOP_DCAO = NormalizeDouble( OrderOpenPrice() + Dist_CAO *_Point,_Digits);
  if( Bid > FiBuyOOP_DCAO ){

- alle Orders schließen -
Angehängte Dateien
Dateityp: mq4 LoShDistV3.mq4 (36,3 KB, 1x aufgerufen)
  #17 (permalink)  
Alt 23.12.20
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

@daybyter, Du tust ihm damit keinen Gefallen, aufzufordern, einen Tralingsstop einzubauen. Damit gerät nun alles aus den Fugen, sofern irgendetwas überhaupt in den Fugen war.

Wenn ich das schon wieder lese: "Im Großen und Ganzen scheint er zu machen, was er soll.", um danach sofort den Satz ad absurdum zu führen mit: "Aber irgendwie ist das nicht optimal, wie er berechnet, wann er weitere Orders in eine Richtung öffnen oder alle Orders schließen soll. Die Berechnungen dafür scheinen sich schnell in die Quere zu kommen und so kommts anscheinend zu zu vielen Orders oder es wird geschlossen oder geöffnet wenns nicht gut ist. Weiß gerade nicht wirklich, wie man das besser machen kann."

Sag mal @MA-EA, bist Du Dir wirklich sicher, dass das Programmieren von EAs eine sinnvolle Freizeitbeschäftigung für Dich ist.
Nach nunmehr über 1000 Posts und der vielen fehlerhaften EAs, gekoppelt mit Deiner Beratunsgresistenz, glaube ich das nicht.
Wer soll denn mit den durch die Bank fehlerhaften EAs hier was anfangen?
Wozu postest Du diese fehlerhaften EAs? Wenn, dann optimiere sie doch erst, teste sie aus und wenn sie wirklich fehlerfrei, das tun, was sie genau machen sollen, dann poste sie.

Alles andere ergibt keinen Sinn. Du verschwendest Deine und unsere Zeit und die ist dazu zu kostbar.

Ich wünsche Dir dennoch ein frohes Weihnachtsfest und nutze die Zeit, an Dir zu arbeiten.

traderdoc
Indikator-Trading likes this.
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #18 (permalink)  
Alt 24.12.20
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Er ist ja eigentlich nicht fehlerhaft. Gibt keine Fehlermeldungen oder Warnungen und tut, soweit ich gesehn habe, was er soll. Vermutlich kann man das ein oder andere besser machen, aber er funktioniert.

Das einzige "Problem" ist ( hoffe ich jedenfalls ) , genau zu berechnen wann er weitere Orders öffnen oder Alle schließen soll. Die Berechnungen / Bedingungen dafür kommen sich gern mal in die Quere. Da hatte ich auf Tipps / Hinweise gehofft.
Code:
//=============================================================================================================
// P R O P E R T Y
//============================================================================================================*/
//#property strict
// #property strict sorgt anscheinend dafür,
// dass Kommentare im Konfig-Fenster im MT4 sichtbar sind.
#property copyright"LoShDistV3.mq4"
#property copyright"daniel-rudloff@web.de"
//=============================================================================================================
// B E S C H R E I B U N G
//=============================================================================================================
extern string TOY="true  = on / yes";
extern string FON="false = off / no";
//=============================================================================================================
// E I N S T E L L U N G E N
//=============================================================================================================
extern string esMN="Magic Numbers";
extern int MN_FiSel=12;
extern int MN_FiBuy=34;
extern int MN_NeSel=56;
extern int MN_NeBuy=78;
//-----------------------------------------------------------------------------------------------------------*/
extern string OOO1="Open Orders";
extern string OOO2="from/till Hour";
extern string OOO3="(Server Time)";
extern int FromH=5;  // Zum Testen ab 5 Uhr Orders öffnen lassen.
extern int TillH=15; // Zum Testen bis einschließlich 15 Uhr öffnen lassen.
//-----------------------------------------------------------------------------------------------------------*/
extern int Slippage=12345;
//-----------------------------------------------------------------------------------------------------------*/
extern int SL=425; // ?
//-----------------------------------------------------------------------------------------------------------*/
extern int TP=275; // ?
//-----------------------------------------------------------------------------------------------------------*/
extern string esIITCBSMS1="if IsTradeContexBusy()";
extern string esIITCBSMS2="sleep Milli Seconds";
extern int slMS=16; // Zum Testen 16 MS
//-----------------------------------------------------------------------------------------------------------*/
extern string esDOONO1="Dist to OrderOpenPrice()";
extern string esDOONO2="open next Order";
extern int Dist_ONO = 12; // ?
//-----------------------------------------------------------------------------------------------------------*/
extern string esDOCAO1="Dist to OrderOpenPrice()";
extern string esDOCAO2="close all Orders";
extern int Dist_CAO = 32; // Zum Testen 32. Weniger als ca. 24 ist wahrscheinlich nicht ausreichend?
//-----------------------------------------------------------------------------------------------------------*/
extern int OrdersNeed_Multi = 2; //
//-----------------------------------------------------------------------------------------------------------*/
extern double Lots=0.01;
extern double LotsPlus=0.0; // ?
//=============================================================================================================
// G L O B A L E   D E K L A R A T I O N E N
//=============================================================================================================
bool
fiSH,fiLO,
neSH,neLO,
OCsel,OCbuy
;
//-----------------------------------------------------------------------------------------------------------*/
double
SL_Sel,SL_Buy,TP_Sel,TP_Buy,MSL,
FiSelOOP_DistONO,FiBuyOOP_DistONO,
NeSelOOP_DONO,NeBuyOOP_DONO,
FiSelOOP_DCAO,FiBuyOOP_DCAO
;
//-----------------------------------------------------------------------------------------------------------*/
int
TI_FiSel,TI_FiBuy,TI_NeSel,TI_NeBuy,
i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,
Opened_Sel,Opened_Buy,
Need_Sel,Need_Buy
;
//=============================================================================================================
// I N I T
//=============================================================================================================
void OnInit(){}
//=============================================================================================================
// D E I N I T ?
//=============================================================================================================
void OnDeinit(const int reason){}// ?
//=============================================================================================================
// E A   F U N K T I O N E N   S T A R T
//=============================================================================================================int 
void OnTick(){
//=============================================================================================================
// S T O P   L O S S
//=============================================================================================================
//SL auf 0 stellen, wenn oben <1,
//um irgendwelche Missverständnisse zu vermeiden.
if(SL<1){
  SL_Sel=0.0;
  SL_Buy=0.0;}
if(SL>=1){
  SL_Sel=NormalizeDouble(Bid+SL*_Point,_Digits);
  SL_Buy=NormalizeDouble(Ask-SL*_Point,_Digits);}
//SL genauso groß wie Minstoplevels machen, wenn er kleiner ist:
MSL=MarketInfo(Symbol(),MODE_STOPLEVEL);
if(SL_Sel<MSL)SL_Sel=MSL;
if(SL_Buy<MSL)SL_Buy=MSL;
//=============================================================================================================
// T A K E   P R O F I T
//=============================================================================================================
//TP auf 0 stellen, wenn oben <1,
//um irgendwelche Missverständnisse zu vermeiden.
if(TP<1){
  TP_Sel=0.0;
  TP_Buy=0.0;}
if(TP>=1){
  TP_Sel=NormalizeDouble(Bid-TP*_Point,_Digits);
  TP_Buy=NormalizeDouble(Ask+TP*_Point,_Digits);}
//=============================================================================================================
// 1 . O R D E R   S E A R C H   
//=============================================================================================================
fiSH=false;
neSH=false;
fiLO=false;
neLO=false;
for(i=OrdersTotal()-1;i>=0;i--){
if(OrderSelect(i,SELECT_BY_POS)){
if(OrderSymbol()==Symbol()){
if(OrderMagicNumber()==MN_FiSel)fiSH=true;
if(OrderMagicNumber()==MN_NeSel)neSH=true;
if(OrderMagicNumber()==MN_FiBuy)fiLO=true;
if(OrderMagicNumber()==MN_NeBuy)neLO=true;}}}
//=============================================================================================================
// C H E C K   H O U R
//=============================================================================================================
// Prüfen, ob Orders geöffnet werden dürfen.
if(

   ( Hour()>=FromH && Hour()<=TillH )

|| ( Hour()< FromH && fiSH==true && fiLO==true )

|| ( Hour()> TillH && fiSH==true && fiLO==true )

  ){ // Schließende Klammer ...
//=============================================================================================================
// O P E N   F I R S T   S E L L / O P E N   F I R S T   B U Y
//=============================================================================================================// Prüfen, überhaupt Orders offen sind.
// Wenn gar keine Orders offen sind...
if(fiSH==false&&neSH==false&&fiLO==false&&neLO==false){
//...FirstSell öffnen:
  if(IsTradeAllowed()==true){
    TI_FiSel=OrderSend(Symbol(),OP_SELL,Lots,NULL,Slippage,SL_Sel,TP_Sel,NULL,MN_FiSel,clrBlue);
    if(IsTradeContextBusy()==true)Sleep(slMS);} // ?
//...FirstBuy öffnen:
  if(IsTradeAllowed()==true){
    TI_FiBuy=OrderSend(Symbol(),OP_BUY,Lots,NULL,Slippage,SL_Buy,TP_Buy,NULL,MN_FiBuy,clrBlue);
    if(IsTradeContextBusy()==true)Sleep(slMS);}
}
//=============================================================================================================
// 2 . O R D E R   S E A R C H 
//=============================================================================================================
// Prüfen, ob FirstSell und FirstBuy geöffnet wurden,
// und ob NextSell und NextBuy schon geöffnet wurden.
for(j=OrdersTotal()-1;j>=0;j--){
if(OrderSelect(j,SELECT_BY_POS)){
if(OrderSymbol()==Symbol()){
if(OrderMagicNumber()==MN_FiSel)fiSH=true;
if(OrderMagicNumber()==MN_NeSel)neSH=true;
if(OrderMagicNumber()==MN_FiBuy)fiLO=true;
if(OrderMagicNumber()==MN_NeBuy)neLO=true;}}}
//=============================================================================================================
// O P E N   F I R S T   N E X T   O R D E R S
//=============================================================================================================
// Wenn nur FirstSell und FirstBuy offen sind...
if(fiSH==true&&fiLO==true&&neSH==false&&neLO==false){
//...alle Zähler auf 0 setzen...  
Opened_Sel=0;
Opened_Buy=0;
Need_Sel  =0;
Need_Buy  =0;
//-----------------------------------------------------------------------------------------------------------*/
// ...und bei entsprechenden Bedingungen next-Sel/next-Buy öffnen.

// FirstSell raus suchen:
if(OrderSelect(TI_FiSel,SELECT_BY_TICKET)){

//Wenn FirstSell Bedingungen erfüllt, next Sell öffnen.
  FiSelOOP_DistONO=NormalizeDouble( OrderOpenPrice() - Dist_ONO *_Point,_Digits);
  if( Bid <= FiSelOOP_DistONO ){

    for( l=OrdersNeed_Multi ; l>=1 ; l--){
      if(IsTradeAllowed()==true)TI_NeSel=OrderSend(Symbol(),OP_SELL,Lots,NULL,Slippage,SL_Sel,TP_Sel,NULL,MN_NeSel,clrBlue);
      if(IsTradeContextBusy()==true)Sleep(slMS);

      Opened_Sel++;

      Need_Sel = Opened_Sel * OrdersNeed_Multi;

      Need_Buy = Need_Sel * OrdersNeed_Multi;} } // ?
}
//-----------------------------------------------------------------------------------------------------------*/
// FirstBuy auswählen...
if(OrderSelect(TI_FiBuy,SELECT_BY_TICKET)){

//Wenn FirstBuy Bedingungen erfüllt,next Buy öffnen.       
  FiBuyOOP_DistONO=NormalizeDouble( OrderOpenPrice() + Dist_ONO *_Point,_Digits);
  if( Ask >= FiBuyOOP_DistONO ){

    for( m=OrdersNeed_Multi ; m>=1 ; m--){
      if(IsTradeAllowed()==true)TI_NeBuy=OrderSend(Symbol(),OP_BUY,Lots,NULL,Slippage,SL_Buy,TP_Buy,NULL,MN_NeBuy,clrBlue);
      if(IsTradeContextBusy()==true)Sleep(slMS);
          
      Opened_Buy++;
      
      Need_Buy = Opened_Buy * OrdersNeed_Multi;
          
      Need_Sel = Need_Buy * OrdersNeed_Multi;} }
}
//-----------------------------------------------------------------------------------------------------------*/
}
//=============================================================================================================
// 3 . O R D E R   S E A R C H 
//=============================================================================================================
// FirstSell und FirstBuy müssen offen sein.
// NextSell und/oder NextBuy müssen offen sein.
for(n=OrdersTotal()-1;n>=0;n--){
if(OrderSelect(n,SELECT_BY_POS)){
if(OrderSymbol()==Symbol()){
if(OrderMagicNumber()==MN_FiSel)fiSH=true;
if(OrderMagicNumber()==MN_NeSel)neSH=true;
if(OrderMagicNumber()==MN_FiBuy)fiLO=true;
if(OrderMagicNumber()==MN_NeBuy)neLO=true;}}}
//=============================================================================================================
// C H E C K   F I R S T   O R D E R S   A N D   N E X T   O R D E R S
//=============================================================================================================
// Wenn FirstSel   u n d   FirstBuy offen sind...
if(fiSH==true&&fiLO==true){
//...wenn NextSell   u n d / o d e r   NextBuy offen sind...
  if(neSH==true||neLO==true){
//=============================================================================================================
// C H E C K   F I R S T   A N D   N E X T   S E L L   O R D E R S
//=============================================================================================================//
//Letzten NextSell raussuchen:
if(OrderSelect(TI_NeSel,SELECT_BY_TICKET)){

//Prüfen, ob letzter NextSell OpenNextOrder-Dist erreicht hat.
  NeSelOOP_DONO=NormalizeDouble( OrderOpenPrice() - Dist_ONO *_Point,_Digits);
  if( Bid <= NeSelOOP_DONO ){

//  Wenn ja, FirstSell raussuchen.
    if(OrderSelect(TI_FiSel,SELECT_BY_TICKET)){
    if(OrderSymbol()==Symbol()){
    
//    Wenn FirstSell Gewinn-Distanz nicht erreicht hat... 
      FiSelOOP_DCAO = NormalizeDouble( OrderOpenPrice() - Dist_CAO *_Point,_Digits);
      if( Ask > FiSelOOP_DCAO ){

//      ...weitere Sell_Orders öffnen.
        for( l=Need_Sel ; l>=1 ; l--){
          if(IsTradeAllowed()==true)TI_NeSel=OrderSend(Symbol(),OP_SELL,Lots,NULL,Slippage,SL_Sel,TP_Sel,NULL,MN_NeSel,clrBlue);
          if(IsTradeContextBusy()==true)Sleep(slMS);

          Opened_Sel++;

          Need_Sel = Opened_Sel * OrdersNeed_Multi;

          Need_Buy = Need_Sel * OrdersNeed_Multi;} }// ?
} } } }
//=============================================================================================================
// C H E C K   F I R S T   A N D   N E X T   B U Y   O R D E R S
//=============================================================================================================
// Letzten NextBuy raus suchen:
if(OrderSelect(TI_NeBuy,SELECT_BY_TICKET)){

//Prüfen, ob NextBuy OpenNextOrder-Dist erreicht hat:
  NeBuyOOP_DONO=NormalizeDouble( OrderOpenPrice() + Dist_ONO *_Point,_Digits);
  if( Ask >= NeBuyOOP_DONO ){

//  Wenn ja, FirstBuy raus suchen.
    if(OrderSelect(TI_FiBuy,SELECT_BY_TICKET)){
    if(OrderSymbol()==Symbol()){

//    Prüfen, ob FirstBuy Gewinn-Distanz erreicht hat.   
      FiBuyOOP_DCAO=NormalizeDouble( OrderOpenPrice() + Dist_CAO *_Point,_Digits);

//    Wenn FirstBuy Gewinn-Distanz nicht erreicht hat...       
      if( Bid < FiBuyOOP_DCAO ){
      
//      weitere Buy-Orders öffnen. 
        for( s=Need_Buy ; s>=1 ; s--){
          if(IsTradeAllowed()==true)TI_NeBuy=OrderSend(Symbol(),OP_BUY,Lots,NULL,Slippage,SL_Buy,TP_Buy,NULL,MN_NeBuy,clrBlue);
          if(IsTradeContextBusy()==true)Sleep(slMS);
          
            Opened_Buy++;
      
            Need_Buy = Opened_Buy * OrdersNeed_Multi;
          
            Need_Sel = Need_Buy * OrdersNeed_Multi;} }
} } } }
//-----------------------------------------------------------------------------------------------------------*/
} }
//=============================================================================================================
// C L O S E   A L L   O R D E R S   B Y   S E L L   D I S T
//=============================================================================================================
// FirstSell raus suchen.
if(OrderSelect(TI_FiSel,SELECT_BY_TICKET)){

//Wenn FirstSell Gewinn-Dist erreicht hat...
  FiSelOOP_DCAO = NormalizeDouble( OrderOpenPrice() - Dist_CAO *_Point,_Digits);
  if( Ask < FiSelOOP_DCAO ){

//  ...Lots erhöhen...
    Lots = OrderLots() + LotsPlus; // ?

//  ...und alle Orders schließen.
    for(u=OrdersTotal()-1;u>=0;u--){
    if(OrderSelect(u,SELECT_BY_POS)){
    if(OrderSymbol()==Symbol()){
      if(OrderMagicNumber()==MN_FiBuy){
        if(IsTradeAllowed()==true)OCbuy=OrderClose(OrderTicket(),OrderLots(),NULL,Slippage,clrRed);
        if(IsTradeContextBusy()==true)Sleep(slMS);}
      if(OrderMagicNumber()==MN_NeBuy){
        if(IsTradeAllowed()==true)OCbuy=OrderClose(OrderTicket(),OrderLots(),NULL,Slippage,clrRed);
        if(IsTradeContextBusy()==true)Sleep(slMS);}
      if(OrderMagicNumber()==MN_FiSel){
        if(IsTradeAllowed()==true)OCsel=OrderClose(OrderTicket(),OrderLots(),NULL,Slippage,clrRed);
        if(IsTradeContextBusy()==true)Sleep(slMS);}
      if(OrderMagicNumber()==MN_NeSel){
        if(IsTradeAllowed()==true)OCsel=OrderClose(OrderTicket(),OrderLots(),NULL,Slippage,clrRed);
        if(IsTradeContextBusy()==true)Sleep(slMS);}
    } } }
//-----------------------------------------------------------------------------------------------------------*/
} }
//=============================================================================================================
// C L O S E   A L L   O R D E R S   B Y   B U Y   D I S T
//=============================================================================================================
//FirstBuy raus suchen.
if(OrderSelect(TI_FiBuy,SELECT_BY_TICKET)){

//Wenn FirstBuy Gewinn-Dist erreicht hat...
  FiBuyOOP_DCAO = NormalizeDouble( OrderOpenPrice() + Dist_CAO *_Point,_Digits);
  if( Bid > FiBuyOOP_DCAO ){
          
//...Lots erhöhen...
    Lots = OrderLots() + LotsPlus; // ?

//...und alle Orders schließen.
    for(w=OrdersTotal()-1;w>=0;w--){
    if(OrderSelect(w,SELECT_BY_POS)){
    if(OrderSymbol()==Symbol()){
      if(OrderMagicNumber()==MN_FiSel){
        if(IsTradeAllowed()==true)OCsel=OrderClose(OrderTicket(),OrderLots(),NULL,Slippage,clrRed);
        if(IsTradeContextBusy()==true)Sleep(slMS);}
      if(OrderMagicNumber()==MN_NeSel){
        if(IsTradeAllowed()==true)OCsel=OrderClose(OrderTicket(),OrderLots(),NULL,Slippage,clrRed);
        if(IsTradeContextBusy()==true)Sleep(slMS);}
      if(OrderMagicNumber()==MN_FiBuy){
        if(IsTradeAllowed()==true)OCbuy=OrderClose(OrderTicket(),OrderLots(),NULL,Slippage,clrRed);
        if(IsTradeContextBusy()==true)Sleep(slMS);}
      if(OrderMagicNumber()==MN_NeBuy){
        if(IsTradeAllowed()==true)OCbuy=OrderClose(OrderTicket(),OrderLots(),NULL,Slippage,clrRed);
        if(IsTradeContextBusy()==true)Sleep(slMS);}
  } } }
//-----------------------------------------------------------------------------------------------------------*/
} }
//-----------------------------------------------------------------------------------------------------------*/
} // Öffnende Klammer nach Hour Check ( ? )
//=============================================================================================================
// E A   F U N K T I O N E N   B E E N D E N
//=============================================================================================================
}//(void OnTick)
  #19 (permalink)  
Alt 25.12.20
Mitglied
 
Registriert seit: Apr 2018
Beiträge: 103
daybyter befindet sich auf einem aufstrebenden Ast
Standard

Ich hab die Orders bei mir in einem Array verwaltet, das in einer Klasse war. Da hab ich dann Methoden eingebaut, um z.B. den aktuellen Profit über alle Orders zu beobachten.

Das wäre auch mein Tipp für Dich. Statt OrderOpenPrice in Relation zu Ask/Bid zu setzen, könntest Du einfach den aktuellen Profit mit OrderProfit checken?

@traderdoc: lass ihn doch lernen. Besser er bleibt dran und lernt schrittweise, wie das alles geht, als das er gleich aufgibt?
  #20 (permalink)  
Alt 26.12.20
Mitglied
 
Registriert seit: Dec 2015
Beiträge: 85
TogoTiger befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von daybyter Beitrag anzeigen
@traderdoc: lass ihn doch lernen. Besser er bleibt dran und lernt schrittweise, wie das alles geht, als das er gleich aufgibt?
MA-EA ist lernresistent. Er macht seit er dabei ist (etwa 5 Jahre) immer die gleichen Fehler. Er hat schon so viel Hilfe gekriegt, dass er Experte sein müsste.

Aber mach halt, wenn du willst. Er wird deine Ratschläge nicht befolgen. (fast) alle hier, die nur ein wenig was drauf haben, ignorieren ihn inzwischen.
Schlimm ist nur, dass er manchmal neuen Usern, die wirklich lernen wollen, völligen Blödsinn erzählt und sie in die Irre führt.
Thema geschlossen

Lesezeichen

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +1. Es ist jetzt 20:22 Uhr.





Suchmaschine - Reisen - Wavesnode - Facebook Forum - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------