Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4
Startseite Registrieren Hilfe Community Kalender Heutige Beiträge Suchen

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4978
Beiträge: 43310
Benutzer: 7.223
Aktive Benutzer: 75
Links: 84
Wir begrüßen unseren neuesten Benutzer: Sundaytrader
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 5 Tagen
- Sundaytrad...
vor 6 Tagen
- TS_6
vor einer Woche
- Mane
vor 3 Wochen
- AlbertZiz
vor 3 Wochen
- michak

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

Empfehlungen

Like Tree5Likes
Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #41 (permalink)  
Alt 03.02.21
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.735
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von MA-EA Beitrag anzeigen
Die Strategie ansich scheint funktionieren zu können. Nur der EA macht oft nicht, was er soll. So dass ich die ganzen Orders eben selber schließen durfte.
Ja dann scheint die Strategie also doch nicht zu funktionierem.

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

Doch, aber der blöde EA nicht. Wenn er doch irgendwann mal richtig läuft, dürfte er die reinste Forex-Goldgrube sein. Zumindest bei niedrigem Spread.

Aber er tut immer wieder nicht, was er soll. Mal funktioniert er, mal nicht.

Liegt das vielleicht an mehreren, ineinander verschachtelten Order-Abfragen?

Oder vielleicht daran, dass viele Variablen global deklariert sind, und sich zum Teil nicht mehr ändern lassen?

Oder ist mit meinem PC vielleicht was nicht in Ordnung? Probiert das Ding mal bei Euch. Ist ja nicht viel Mühe.
Angehängte Dateien
Dateityp: mq4 LoShD_Ti_v2-PRINT.mq4 (46,7 KB, 1x aufgerufen)
  #43 (permalink)  
Alt 07.02.21
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Wer Zweifel an der Strategie hat kanns ja mal manuell probieren:

Bei einem beliebigen ForexSymbol (möglichst kleiner Spread, USD-JPY oder EUR-USD z.B.) per Hand eine Sell- und eine Buy-Order öffnen. So dass wir also eine Sell- und eine Buy-Order im Markt haben. Geht jetzt z.B. mal die Sell-Order 10 - 15 Pips in den Gewinn, öffnen wir eine oder zwei weitere Sell-Orders. Haben die jede auch wieder 10 - 15 Pips + erreicht, machen wir alle Sell- und Buy-Orders zu. Wir haben dann alle 3 - 4 Spreads, Verluste der (in diesem Bsp.) Buy-Order und etwas Gewinn gemacht.

Ist eigentlich wie MartinGale, nur dass man nicht versucht, die Verluste wieder rein zu bekommen, sondern den Einsatz sozusagen in Trend-Richtung immer wieder erhöht.

Man könnte einige Variablen ändern. z.B. jedes Mal 5 oder noch mehr Orders in Gewinn-Richtung öffnen. Oder auch nur 1 Weitere. Oder weitere Orders erst nach 20 Pips oder nach 50 oder was weiß ich öffnen. Oder versuchen, alles ganz schnell wieder reinzubekommen, in dem 20 neue Orders in Trendrichtung öffnet und Alle bei 3 oder 4 Pips Gewinn schon schließt. Da gäbe es einige Möglichkeiten. Jedenfalls wenn das Gerät irgendwann mal funktioniert, wie es soll.

Derzeit berechnet er Abstände zwischen OrderOpenPrice() und Ask/Bid. Je nach dem sollen dann weitere Orders in die verherrschende Richtung geöffnet oder Alle dicht gemacht werden. Vermute, dass die Berechnung irgendwie Probleme macht, ich weiß es nicht. Weiß aber auch nicht, wie man das sonst ausrechnen könnte, wann er weitere Orders öffnen oder Alle schließen soll. Vielleicht ist aber auch was ganz Anderes falsch, ich weiß es nicht.

Probierts einfach mal per Hand aus. Kostet Euch vielleicht 10 - 20 Min.

Die neueste Vers. im Anhang ist noch nicht fertig. Muss noch Einiges überarbeitet werden. Aber hab schon sonst was Alles probiert, mal macht der EA was er soll, mal nicht. Aber obwohl er noch nicht fertig ist, macht er manchmal schon ordentliche Gewinne im Demo-Konto. Einmal hat er an einem Tag über 200 € gemacht. Neulich irgendwie in nen paar Stunden über 100 €, Gewinn-Orders-Anteil um 90%. Aber derzeit muss ich leider Alles selber schließen, jedenfalls wenn er vorher auch Orders geöffnet hat, wie er eigentlich soll. Aber wenn er (hoffentlich irgendwann ) mal macht, was er soll, dann ist das nen Geld-Drucker für Zuhause.
Angehängte Dateien
Dateityp: mq4 LoShD_Ti_v2-PRINT.mq4 (48,8 KB, 1x aufgerufen)
  #44 (permalink)  
Alt 07.02.21
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Eben noch mal durch geguckt. Wenn das Gerät jetzt nicht funktioniert, kanns eigentlich bloß ein paar Gründe haben:

1.
Ich hab Ask und Bid bei den Berechnungen durcheinander gebracht.

2.
Irgendwas mit Suchen / Zählen / Öffnen / Schließen der Orders ist falsch. Bzw. mit den Tickets oder MagicNumbers stimmt was nicht.

3.
Irgendwas läuft mit den bools, was für Orders offen sind, nicht richtig.

4.
Der MT4 oder mein PC spinnt. Oder Beide.

Ansonsten wüsste ich wirklich nicht, was falsch ist. Aber hab ja vielleicht doch irgendwas übersehn...
Code:
/*=============================================================================================================
// N O T I Z E N   U N D   I N F O S
//=============================================================================================================


P R I N T   V E R S I O N


Hat  n i c h t  richtig funktioniert mit:

USD-JPY



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

In dieser Vers. werden neue Orders geöffnet,
wenn die vorherigen im Gewinn-Bereich sind.

Umgekehrt ist vermutlich nicht so gut...

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

In dieser Vers.2 werden auch Orders geöffnet,
wenn die entgegen Gesetzten im Verlust sind.

//=============================================================================================================
// P R O P E R T Y
//============================================================================================================*/
//#property strict
//#ps sorgt anscheinend dafür, dass Kommentare im Konfig-Fenster im MT4 sichtbar sind.
#property copyright"LoShD_Ti_v2-PRINT.mq4"
#property copyright"daniel-rudloff@web.de"
//=============================================================================================================
// B E S C H R E I B U N G
//=============================================================================================================
extern string esTOY="true  = on / yes";
extern string esFON="false = off / no";
//-----------------------------------------------------------------------------------------------------------*/
extern string esB01="Open 1.Sell & 1.Buy.";



extern string esB02="If (last) Sell <=";
extern string esB03="( OrderOpenPrice()";
extern string esB04="- D_ONO )";
extern string esB05="open more Sell";
extern string esB06="till";
extern string esB07="1.Sell <=";
extern string esB08="( OrderOpenPrice() - D_CAO ).";



extern string esB09="If (last) Buy >=";
extern string esB10="( OrderOpenPrice()";
extern string esB11="+ D_ONO )";
extern string esB12="open more Buy";
extern string esB13="till";
extern string esB14="1.Buy >=";
extern string esB15="( OrderOpenPrice()";
extern string esB16="+ D_CAO )";



//=============================================================================================================
// 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 esOOFT1="Open Orders";
extern string esOOFT2="from/till Hour";
extern string esOOFT3="(Server Time)";
extern int FromH=5;//  Vor 5 Uhr starten scheint sich nicht zu lohnen.
extern int TillH=21;// Zum Testen bis einschließlich 21 Uhr öffnen lassen.
//-----------------------------------------------------------------------------------------------------------*/
extern string esTF="TimeFrame";
input ENUM_TIMEFRAMES TF=5;// Zum Testen M5
//-----------------------------------------------------------------------------------------------------------*/
extern int Slippage=12345;
//-----------------------------------------------------------------------------------------------------------*/
extern int SL=375;// ?
//-----------------------------------------------------------------------------------------------------------*/
extern int TP=275;// ?
//-----------------------------------------------------------------------------------------------------------*/
extern string esIITCBSMS1="if IsTradeContexBusy()";
extern string esIITCBSMS2="sleep MS";
extern int slMS=20;// Zum Testen 20ms
//-----------------------------------------------------------------------------------------------------------*/
extern string esDOONO1="Dist to OrderOpenPrice()";
extern string esDOONO2="open next Order";
extern int D_ONO=25;// Zum Testen 25
//-----------------------------------------------------------------------------------------------------------*/
extern string esDOCAO1="Dist to OrderOpenPrice()";
extern string esDOCAO2="close all Orders";
extern int D_CAO=50;// Zum Testen 50
//-----------------------------------------------------------------------------------------------------------*/
extern int OrdersNeed_Multi=2;// Zum Testen 2. 1-4?
//-----------------------------------------------------------------------------------------------------------*/
extern double Lots=0.01;
//=============================================================================================================
// G L O B A L E   D E K L A R A T I O N E N
//=============================================================================================================
bool
fiSH,neSH,fiLO,neLO,
OC
;
//-----------------------------------------------------------------------------------------------------------*/
double

SL_Sel,SL_Buy,TP_Sel,TP_Buy,MSL,

FiSel_DON_Sel,FiBuy_DON_Buy,

NeSel_DON_Sel,NeSel_DON_Buy,

NeBuy_DON_Sel,NeBuy_DON_Buy,

FiSel_DCAO,FiBuy_DCAO
;
//-----------------------------------------------------------------------------------------------------------*/
int
MI_DIG,
TI_FiSel,TI_FiBuy,TI_NeSel,TI_NeBuy,
Opened_Sel,Opened_Buy,
Need_Sel,Need_Buy
;
//=============================================================================================================
// I N I T
//=============================================================================================================
void OnInit(){ChartSetSymbolPeriod(0,NULL,TF);}
//=============================================================================================================
// E A   F U N K T I O N E N   S T A R T
//=============================================================================================================
void OnTick(){
//=============================================================================================================
// M A R K E T   I N F O
//=============================================================================================================

MI_DIG=MarketInfo(Symbol(),MODE_DIGITS);

//=============================================================================================================
// 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);}
//=============================================================================================================
// O R D E R   S E A R C H   1
//=============================================================================================================
fiSH=false;
neSH=false;
fiLO=false;
neLO=false;
for(int 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;}}}
//=============================================================================================================
// 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
//=============================================================================================================
//Wenn gar keine Orders offen sind...
if(fiSH==false&&fiLO==false&&neSH==false&&neLO==false){
//...alle Zähler auf 0 setzen...
  Opened_Sel=0;
  Opened_Buy=0;
  Need_Sel=0;
  Need_Buy=0;
//...und wenn zur Zeit Orders geöffnet werden dürfen, FirstSel und FirstBuy öffnen.
  if(Hour()>=FromH&&Hour()<=TillH){
    if(IsTradeAllowed()==true)TI_FiSel=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,SL_Sel,TP_Sel,NULL,MN_FiSel,Blue);
    if(IsTradeContextBusy()==true)Sleep(slMS);
    if(IsTradeAllowed()==true)TI_FiBuy=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,SL_Buy,TP_Buy,NULL,MN_FiBuy,Blue);
    if(IsTradeContextBusy()==true)Sleep(slMS);


    Print("Open FiSel & FiBuy:",
         
          "-fiSH:",fiSH,
          "-fiLO:",fiLO,
          "-neSH:",neSH,
          "-neLO:",neLO,
          
          "-Opened_Sel:",Opened_Sel,
          "-Opened_Buy:",Opened_Buy,
          "-Need_Sel:",Need_Sel,
          "-Need_Buy:",Need_Buy,
         
          "-Ask=",Ask,
          "-Bid=",Bid
         
         );
    
    
    }}// Gar keine Orders offen.
//=============================================================================================================
// O R D E R   S E A R C H   2
//=============================================================================================================
fiSH=false;
neSH=false;
fiLO=false;
neLO=false;
for(int 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;}}}
//-----------------------------------------------------------------------------------------------------------*/
// Wenn nur FirstSel und FirstBuy offen sind...
if(fiSH==true&&fiLO==true){
//=============================================================================================================
//O P E N   N E X T   S E L   B Y   F I R S T   S E L
//=============================================================================================================
//...wenn noch kein NextSel offen ist...
  if(neSH==false){

//  ...prüfen, ob FiSel unter D_ONO ist:
    if(OrderSelect(TI_FiSel,SELECT_BY_TICKET)){
      if(OrderSymbol()==Symbol()){
        FiSel_DON_Sel=NormalizeDouble(OrderOpenPrice()-D_ONO*Point,Digits);}}

//  Wenn FirstSel unter D_ON_Sel ist... 
    if(Bid<=FiSel_DON_Sel){

//    ...erste NextSels öffnen.
      for(int k=OrdersNeed_Multi;k>0;k--){// ?
        if(IsTradeAllowed()==true)TI_NeSel=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,SL_Sel,TP_Sel,NULL,MN_NeSel,Blue);
        if(IsTradeContextBusy()==true)Sleep(slMS);
 
        Opened_Sel++;
          
        Need_Buy=OrdersNeed_Multi*Opened_Sel;
          
        Need_Sel=OrdersNeed_Multi*Need_Buy;
          
          
        Print("-Open NeSel by FiSel:",
          
              "-neSH:",neSH,

              "-TI_FiSel:",TI_FiSel,
              "-OOP=",OrderOpenPrice(),
              "-D_ONO=",D_ONO,
              "-FiSel_DON_Sel=",FiSel_DON_Sel,
              "-Bid=",Bid,
                
              "-TI_NeSel=",TI_NeSel,

              "-Opened_Sel=",Opened_Sel,
              "-OrdersNeed_Multi=",OrdersNeed_Multi,
              "-Need_Buy=",Need_Buy,
              "-Need_Sel=",Need_Sel
                
             );} }

  }// noch kein NextSel offen.
//=============================================================================================================
//O P E N   N E X T   B U Y   B Y   F I R S T   B U Y
//=============================================================================================================
//...wenn noch kein NextBuy offen ist...
  if(neLO==false){

//  ...prüfen, ob FirstBuy über D_ON_Buy ist:
    if(OrderSelect(TI_FiBuy,SELECT_BY_TICKET)){
      if(OrderSymbol()==Symbol()){
        FiBuy_DON_Buy=NormalizeDouble(OrderOpenPrice()+D_ONO*Point,Digits);}}

//  Wenn FirstBuy über D_ON_Buy ist...
    if(Ask>=FiBuy_DON_Buy){

//    ...erste NextBuys öffnen.
      for(int l=OrdersNeed_Multi;l>0;l--){// ?
        if(IsTradeAllowed()==true)TI_NeBuy=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,SL_Buy,TP_Buy,NULL,MN_NeBuy,Blue);
        if(IsTradeContextBusy()==true)Sleep(slMS);
        
        Opened_Buy++;
          
        Need_Sel=OrdersNeed_Multi*Opened_Buy;
          
        Need_Buy=OrdersNeed_Multi*Need_Sel;
          
          
        Print("Open NeBuy by FiBuy:",
          
              "-neLO=",neLO,

              "-TI_FiBuy=",TI_FiBuy,
              "-OOP=",OrderOpenPrice(),
              "-D_ONO=",D_ONO,
              "-FiBuy_DON_Buy=",FiBuy_DON_Buy,
              "-Ask=",Ask,
                
              "-TI_NeBuy=",TI_NeBuy,
              "-Opened_Buy=",Opened_Buy,
              "-Need_Sel=",Need_Sel,
              "-Need_Buy=",Need_Buy
               
               
             );} }

  }// Noch kein NextBuy offen.
//-----------------------------------------------------------------------------------------------------------*/
}// FirstSel und FirstBuy offen nach Order Search 2
//=============================================================================================================
// O R D E R   S E A R C H   3
//=============================================================================================================
fiSH=false;
neSH=false;
fiLO=false;
neLO=false;
for(int m=OrdersTotal()-1;m>=0;m--){
  if(OrderSelect(m,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;}}}
//-----------------------------------------------------------------------------------------------------------*/
//Wenn FirstSel und FirstBuy offen sind...
if(fiSH==true&&fiLO==true){
//=============================================================================================================
//  O P E N   M O R E   B U Y   B Y   N E X T   S E L
//=============================================================================================================
//...und NextSel offen ist...
  if(neSH==true){

//  ...prüfen, ob NeSel über D_ON_Buy ist:
    if(OrderSelect(TI_NeSel,SELECT_BY_TICKET)){
      if(OrderSymbol()==Symbol()){
        NeSel_DON_Buy=NormalizeDouble(OrderOpenPrice()+D_ONO*Point,Digits);}}

//  Wenn NextSel über D_ON_Buy ist...      
    if(Ask>=NeSel_DON_Buy){// Ask oder Bid ?

//    ...prüfen, ob FirstBuy D_CAO erreicht hat:
      if(OrderSelect(TI_FiBuy,SELECT_BY_TICKET)){
        if(OrderSymbol()==Symbol()){
          FiBuy_DCAO=NormalizeDouble(OrderOpenPrice()+D_CAO*Point,Digits);}}

//    Wenn FirstBuy Gewinn-Dist nicht erreicht hat...
      if(Bid<FiBuy_DCAO){

//      ...weitere Buy-Orders by NextSel öffnen:
        for(int n=Need_Buy;n>0;n--){
          if(IsTradeAllowed()==true)TI_NeBuy=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,SL_Buy,TP_Buy,NULL,MN_NeBuy,Blue);
          if(IsTradeContextBusy()==true)Sleep(slMS);
          
          Opened_Buy++;
              
          Need_Sel=OrdersNeed_Multi*Opened_Buy;
              
          Need_Buy=OrdersNeed_Multi*Need_Sel;
              
              
          Print("Open NeBuy by NeSel:",
                    
                "-TI_NeSel:",TI_NeSel,

                "-OrderOpenPrice()=",OrderOpenPrice(),
                "-D_ONO=",D_ONO,
                "-NeSel_DON_Buy=",NeSel_DON_Buy,
                "-Ask=",Ask,
                    
                "-TI_FiBuy=",TI_FiBuy,
                    
                "-OrderOpenPrice()=",OrderOpenPrice(),
                "-D_CAO=",D_CAO,
                "-FiBuy_DCAO=",FiBuy_DCAO,
                "-Bid=",Bid,
                    
                "-TI_NeBuy=",TI_NeBuy,
                    
                "-Opened_Buy=",Opened_Buy,
                "-OrdersNeed_Multi=",OrdersNeed_Multi,
                "-Need_Sel=",Need_Sel,
                "-Need_Buy=",Need_Buy
                    
                    
               );
//-----------------------------------------------------------------------------------------------------------*/
      } }// FiBuy hat CAO_Dist nicht erreicht. Open more Buy by NeSel.
//-----------------------------------------------------------------------------------------------------------*/
    }//NeSel über D_ON_Buy.
//=============================================================================================================
//    O P E N   M O R E   S E L    B Y   N E X T   S E L
//=============================================================================================================
//  ...prüfen, ob letzter NeSel unter D_ON_Sel ist:
    if(OrderSelect(TI_NeSel,SELECT_BY_TICKET)){
      if(OrderSymbol()==Symbol()){
        NeSel_DON_Sel=NormalizeDouble(OrderOpenPrice()-D_ONO*Point,Digits);}}

//   Wenn letzter NextSel unter D_ON_Sel ist...
     if(Bid<=NeSel_DON_Sel){

//      ...prüfen ob FirstSel unter D_CAO ist:
        if(OrderSelect(TI_FiSel,SELECT_BY_TICKET)){
          if(OrderSymbol()==Symbol()){
            FiSel_DCAO=NormalizeDouble(OrderOpenPrice()-D_CAO*Point,Digits);}}

//      Wenn FirstSel über D_CAO ist...
        if(Ask>FiSel_DCAO){

//        ...weitere SelOrders öffnen.
          for(int o=Need_Sel;o>0;o--){// ?
            if(IsTradeAllowed()==true)TI_NeSel=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,SL_Sel,TP_Sel,NULL,MN_NeSel,Blue);
            if(IsTradeContextBusy()==true)Sleep(slMS);
            
            Opened_Sel++;
              
            Need_Buy=OrdersNeed_Multi*Opened_Sel;
              
            Need_Sel=OrdersNeed_Multi*Need_Buy;
              
              
            Print("Open more NeSel by NeSel:",
              
                  "-NeSel_DON_Sel=",NeSel_DON_Sel,
                  "-OrderOpenPrice=",OrderOpenPrice(),
                  "-D_ONO=",D_ONO,
                  "-TI_FiSel=",TI_FiSel,
                    
                  "-FiSel_DCAO=",FiSel_DCAO,
                  "-OrderOpenPrice=",OrderOpenPrice(),
                  "-D_CAO=",D_CAO,
                  "-Ask=",Ask,
                    
                  "-TI_NeSel=",TI_NeSel,
                  "-Opened_Sel=",Opened_Sel,
                  "-Need_Buy=",Need_Buy,
                  "-OrdersNeed_Multi=",OrdersNeed_Multi,
                  "-Need_Sel=",Need_Sel
                    
                 );
//-----------------------------------------------------------------------------------------------------------*/
        } }// FirstSel hat Gewinn-Dist nicht erreicht. Weitere Sel öffnen.
//-----------------------------------------------------------------------------------------------------------*/
      }// Letzter NeSel unter D_ON_Sel.
//-----------------------------------------------------------------------------------------------------------*/
  }// Nach Order Search 3 NextSel offen.
//=============================================================================================================
//    O P E N   M O R E   S E L   B Y   L A S T   B U Y
//=============================================================================================================
//...wenn NextBuy offen ist...
  if(neLO==true){

//  ...prüfen, ob NeBuy unter D_ON_Sel ist:
    if(OrderSelect(TI_NeBuy,SELECT_BY_TICKET)){
      if(OrderSymbol()==Symbol()){
        NeBuy_DON_Sel=NormalizeDouble(OrderOpenPrice()-D_ONO*Point,Digits);}}

//  Wenn letzter NextBuy unter D_ON_Sel ist... 
    if(Bid<=NeBuy_DON_Sel){

//    ...prüfen, ob FiSel D_CAO erreicht hat:
      if(OrderSelect(TI_FiSel,SELECT_BY_TICKET)){
        if(OrderSymbol()==Symbol()){
          FiSel_DCAO=NormalizeDouble(OrderOpenPrice()-D_CAO*Point,Digits);}}

//    Wenn FirstSel Gewinn-Dist nicht erreicht hat...
      if(Ask>FiSel_DCAO){

//      ...weitere SelOrders öffnen.
        for(int q=Need_Sel;q>0;q--){// ?
          if(IsTradeAllowed()==true)TI_NeSel=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,SL_Sel,TP_Sel,NULL,MN_NeSel,Blue);
          if(IsTradeContextBusy()==true)Sleep(slMS);
          
          Opened_Sel++;
              
          Need_Buy=OrdersNeed_Multi*Opened_Sel;
              
          Need_Sel=OrdersNeed_Multi*Need_Buy;
              
      } }// FiSel über DCAO. Weitere NeSel by Buy öffnen. ?
//-----------------------------------------------------------------------------------------------------------*/
    }// Letzter NeBuy unter D_ON_Sel
//=============================================================================================================
//    O P E N   M O R E   B U Y   B Y   L A S T   B U Y
//=============================================================================================================
//  ...prüfen, ob NextBuy DON_Buy erreicht hat:
    if(OrderSelect(TI_NeBuy,SELECT_BY_TICKET)){
      if(OrderSymbol()==Symbol()){
        NeBuy_DON_Buy=NormalizeDouble(OrderOpenPrice()+D_ONO*Point,Digits);}}

//  Wenn letzter NextBuy über D_ONO ist...
    if(Ask>=NeBuy_DON_Buy){

//    Prüfen, ob FirstBuy Gewinn-Dist erreicht hat:
      if(OrderSelect(TI_FiBuy,SELECT_BY_TICKET)){
        if(OrderSymbol()==Symbol()){
          FiBuy_DCAO=NormalizeDouble(OrderOpenPrice()+D_CAO*Point,Digits);}}

//    Wenn FirstBuy unter D_CAO ist...
      if(Bid<FiBuy_DCAO){

//      ...weitere Buy-Orders öffnen:
        for(int r=Need_Buy;r>0;r--){// ?
          if(IsTradeAllowed()==true)TI_NeBuy=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,SL_Buy,TP_Buy,NULL,MN_NeBuy,Blue);
          if(IsTradeContextBusy()==true)Sleep(slMS);
              
          Opened_Buy++;

          Need_Sel=OrdersNeed_Multi*Opened_Buy;

          Need_Buy=OrdersNeed_Multi*Need_Sel;

      } }// FirstBuy hat Gewinn-Dist nicht erreicht. Weitere Buy-Orders öffnen.
//-----------------------------------------------------------------------------------------------------------*/
    }// NeBuy über D_ON_Buy
//-----------------------------------------------------------------------------------------------------------*/
  }// Nach OrderSearch 3 NextBuy offen.
//-----------------------------------------------------------------------------------------------------------*/
}// Nach OrderSearch 3 FirstSel und FirstBuy offen.
//=============================================================================================================
// C L O S E   A L L   B Y   F I R S T   S E L
//=============================================================================================================
//Wenn FirstSel Gewinn-Dist doch erreicht hat alle Orders schließen.
if(Ask<=FiSel_DCAO){
for(int p=OrdersTotal()-1;p>=0;p--){
if(OrderSelect(p,SELECT_BY_POS)){
if(OrderSymbol()==Symbol()){
if(OrderMagicNumber()==MN_FiBuy||OrderMagicNumber()==MN_NeBuy){
if(IsTradeAllowed()==true)OC=OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Red);
if(IsTradeContextBusy()==true)Sleep(slMS);}
if(OrderMagicNumber()==MN_FiSel||OrderMagicNumber()==MN_NeSel){
if(IsTradeAllowed()==true)OC=OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Red);
if(IsTradeContextBusy()==true)Sleep(slMS);}
          
          
Print("CAO by FiSel:",
          
      "-FiSel_DCAO",FiSel_DCAO,
      "-Ask=",Ask
      
      
     );
          
} } } }// FiSel hat CAO-Dist erreicht.
//=============================================================================================================
// C L O S E   A L L   B Y   F I R S T   B U Y
//=============================================================================================================
//Wenn FirstBuy Gewinn-Dist doch erreicht hat alle Orders schließen.
if(Bid>=FiBuy_DCAO){
for(int s=OrdersTotal()-1;s>=0;s--){
if(OrderSelect(s,SELECT_BY_POS)){
if(OrderSymbol()==Symbol()){
if(OrderMagicNumber()==MN_FiSel||OrderMagicNumber()==MN_NeSel){
if(IsTradeAllowed()==true)OC=OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Red);
if(IsTradeContextBusy()==true)Sleep(slMS);}
if(OrderMagicNumber()==MN_FiBuy||OrderMagicNumber()==MN_NeBuy){
if(IsTradeAllowed()==true)OC=OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Red);
if(IsTradeContextBusy()==true)Sleep(slMS);}


Print("CAO by FiBuy:",
               
      "-Bid=",Bid,
      "-FiBuy_DCAO=",FiBuy_DCAO,
      "-OOP=",OrderOpenPrice()
                
                
     );


} } } }// FirstBuy hat Gewinn-Dist erreicht
//=============================================================================================================
// E A   F U N K T I O N E N   B E E N D E N
//=============================================================================================================
}// void OnTick()
Angehängte Dateien
Dateityp: mq4 LoShD_Ti_v2-PRINT.mq4 (49,9 KB, 2x aufgerufen)
  #45 (permalink)  
Alt 07.02.21
Mitglied
 
Registriert seit: Apr 2018
Beiträge: 103
daybyter befindet sich auf einem aufstrebenden Ast
Standard

Warum checkst Du nicht einfach den OrderProfit aller offenen Orders? Wenn eine Order einen Profit > x hat, machst Du ne weitere Order in der Richtung auf.
  #46 (permalink)  
Alt 08.02.21
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Weil der bei jedem WP anders ist. Vor allem gibts wieder etliche Missverständnisse, wenn man z.B. 0.02 Lot von Punkten in z.B. Euro oder USD umrechnen muss.

Wahrscheinlich funktioniert das Ding, wenn überhaupt, nur mit Pending Orders und TakeProfit. Schätze, die eigenen Dist-Berechnungen sind nicht optimal. Aber bei PendingOrders und so kommen dann wieder etliche Unklarheiten und Probleme und Fehler.

Die Vers. von gestern war überhaupt nix. Hat die 1.Sel- und Buy-Order geöffnet, wie er sollte. Hat die dann aber sofort geschlossen. So gings stundenlang. Da hat irgendwie ausser dem 1. OrderSend und Alle-Orders-schließen überhaupt nix funktioniert.
  #47 (permalink)  
Alt 08.02.21
Mitglied
 
Registriert seit: Apr 2018
Beiträge: 103
daybyter befindet sich auf einem aufstrebenden Ast
Standard

Zur Not hinterlegst Du halt den Profit für jedes Paar in einem Array. Bringst das Ding erstmal in einem Markt ans Laufen und tust es dann Markt für Markt erweitern.
  #48 (permalink)  
Alt 14.02.21
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Im Anhang die neueste Version. Wurde Einiges verändert/überarbeitet.

Dass er oft nicht gemacht hat, was er soll, lag wahrscheinlich an einigen falschen bools, bzw. ihrer Abfrage. Die Vers. im Anhang müsste jedenfalls eher machen, was sie soll. Wobei sie immer noch gravierende Fehler haben könnte!

Ziel der "Strategie" ist, in kurzer Zeit möglichst viele kleine Gewinne zu machen. Allerdings soll das Risko auch wieder einigermaßen klein gehalten werden. Also versuch ich, mit jeder Order wenigstens doppelt so viel Gewinn zu machen, wie sie Spread kostet. Also ist z.B. der Spread 10, sollte jede Order frühestens nach 20P in Trend-Richtung geschlossen werden.

Aber vielleicht ist es ja doch besser, 5 Orders auf einmal in Trend-Richtung zu öffnen, dann müsste jede Einzelne davon nur ca. 3 - 5 P Gewinn machen, um alle Spreads, einschließlich ihrer eigenen, und etwas Gewinn wieder rein zu holen. Aber da wirds schon wieder etwas komplizierter.

Eines ist mir irgendwie gar nicht klar. Er öffnet zuerst gleichzeitig eine Sell- und eine Buy-Order. Je nachdem, wie Ask/Bid sich bewegen, werden in Verlierer-Richtung weitere Orders der Gegenrichtung geöffnet. Also geht z.B. der Buy um ca. 20P nach unten, werden 2 Sell-Orders geöffnet. Aber was, wenn der Kurs plötzlich doch wieder nach oben geht. Ensteht dann ein "Bereich", der nicht mit Gegen-Orders abgedeckt ist? Würde man weitere Orders in die Richtung öffnen, wo es ins + geht, und der Kurs würde dann plötzlich doch in die andere Richtung laufen, dann wär das glaub ich so, dass irgendwie die 20P der letzten Orders nicht abgesichert wären. Aber ist das auch so, wenn die ersten Orders in Verlust-Richtung gehn, man Orders in Gegenrichtung öffnet, dann der Kurs aber dreht und somit die letzten Orders Verlust machen? Vermutlich schlecht erklärt, aber ich versteh das selber nicht so richtig.
Angehängte Dateien
Dateityp: mq4 LoShDTi_v4.mq4 (36,2 KB, 1x aufgerufen)
  #49 (permalink)  
Alt 15.02.21
Mitglied
 
Registriert seit: Apr 2018
Beiträge: 103
daybyter befindet sich auf einem aufstrebenden Ast
Standard

Es gibt da mehrere Probleme. Genau bei dem Kursgewackel, was Du beschreibst wirst Du Probleme bekommen.
Tatsächlich wirst Du aber sogar Probleme bekommen, wenn alles funktioniert. Dann wird der Broker Dir plötzlich schlechtere Preise geben. Genau deshalb hab ich bisher wenig mt4 Systeme mit kleinen Gewinnen gesehen, die dauerhaft funktionieren. Der Broker kann sich einfach zu schlecht dagegen absichern.
Ganz anders sieht es natürlich auf einem Markt aus, wo Du wirklich gegen andere Händler tradest. Da können solche Systeme durchaus recht gut dauerhaft arbeiten. Aber da wird der Zugang recht schnell sehr teuer.
Du müsstest auf längere Wege setzen und die Orders länger im Markt liegen lassen.
  #50 (permalink)  
Alt 18.02.21
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Im Anhang die neueste Version. Nach dem mit der Zeit irgendwie jede Zeile 5 mal umgeschrieben und irgendwie 3 mal zur Ursprungs-Version zurück gearbeitet und Alles irgendwie 8 mal geändert wurde, hab ich keine Ahnung, was das Ding eigentlich macht. Vielleicht tuts, was es soll. Vermutlich aber eher nicht.

Die letzte Vers. hat eigentlich gemacht, was sie soll, allerdings viel zu viele Orders geöffnet. Mit dem Schließen hats irgendwie auch nicht geklappt, wie es sollte.
Angehängte Dateien
Dateityp: mq4 LoShDTi_v4.mq4 (46,8 KB, 1x aufgerufen)
Indikator-Trading likes this.
Thema geschlossen

Lesezeichen


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 +2. Es ist jetzt 13:48 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.
-----------------------------------------------------------------------------------------------------------------------------