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: 4978
Beiträge: 43265
Benutzer: 7.222
Aktive Benutzer: 75
Links: 84
Wir begrüßen unseren neuesten Benutzer: AlbertZiz
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einer Woche
- AlbertZiz
vor einer Woche
- michak
vor 2 Wochen
- Amateur
vor 2 Wochen
- infos1982
vor 2 Wochen
- Thomas75

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

Empfehlungen

Like Tree2Likes
Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #31 (permalink)  
Alt 06.05.20
Mitglied
 
Registriert seit: Feb 2016
Beiträge: 240
RetepM befindet sich auf einem aufstrebenden Ast
Standard

Aber das Tolle ist, @MA-EA findet immer wieder Bugs, entweder in MQ4-Standard-Indikatoren oder wie in diesem Thread beim Brocker. Ich bin mal gespannt, wen er beim nächsten Mal verdächtigt...
TogoTiger likes this.
  #32 (permalink)  
Alt 07.05.20
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Moin.

Im Anhang die neueste Druck-Version. Druckt Manches irgendwie zig mal aus aber na gut.

Das Mathe-Problem mit der neuen Order-Close-Dist scheint gelöst zu sein.

Wegen Spread und Verlust und Gewinn:

Z.B. kosten 0.03 Lots 3mal soviel wie 0.01 , machen aber natürlich auch 3 mal so viel Gewinn. Es kommt aber immer wieder vor, dass die letzte Order mit sagen wir mal 0.04 Lot doch Stunden lang im Verlust-Bereich rum gurkt und dort dann schließlich auch geschlossen wird. Dann sind sagen wir mal 4 x 15 ( = 60 ) P. nur für Spread weg, die natürlich wieder rein geholt werden müssen, dazu soll natürlich noch etwas Gewinn abfallen. Also müssen natürlich mehr Punkte verdient als verloren werden. Die Vers. im Anhang multipliziert einfach die Gewinn-Anforderung mit dem letzten Lot-Wert, wenn es beim Schließen einer Gewinn-Order erhöht wurde.

Allerdings braucht man irgendwann Tausende Pipen, um die immer größer werdenden Spreads wieder rein zu bekommen. So wirklich optimal ist das Alles nicht.

Dazu scheint er eben immer wieder lange zu brauchen, um die nächste Order zu öffnen. Würde das ohne größere Pausen funktionieren, dass er ständig Long und Short gleichzeitig ist...
Angehängte Dateien
Dateityp: mq4 PrintVers_LoSh_AlwInv_Dist_DxL.mq4 (28,6 KB, 0x aufgerufen)
  #33 (permalink)  
Alt 07.05.20
Mitglied
 
Registriert seit: Dec 2015
Beiträge: 85
TogoTiger befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von MA-EA Beitrag anzeigen
Würde das ohne größere Pausen funktionieren, dass er ständig Long und Short gleichzeitig ist...
Dann wärste einfach schneller pleite.
  #34 (permalink)  
Alt 09.05.20
Mitglied
 
Registriert seit: Dec 2015
Beiträge: 85
TogoTiger befindet sich auf einem aufstrebenden Ast
Standard

Habe heute mal ein wenig im Forum rumgestöbert und bin dabei auf diesen Thread vom Januar 2017 gestossen:

http://www.expert-advisor.com/forum/...mierung-8.html

@MA-EA: Merkst was?

Ich kugle mich grad vor Lachen.
  #35 (permalink)  
Alt 11.05.20
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Hallo.

Das Gerät im Anhang hat heute von 7 bis halb 6 etwas über 80 Euro eingebracht.

Aber wie immer gibts immer wieder längere "Pausen". Gleich früh hat er für die nächste Order ungefähr ne halbe Stunde gebraucht. Es gibt keine Fehlermeldungen oder sonst irgendwas. Ich bin mit meinem Latein echt am Ende und weiß wirklich nicht, woran diese Unterbrechungen liegen. Würde immer gleich nach dem Schließen einer Order die Nächste in die jeweilige Richtung geöffnet werden, wär das Ding noch nen gutes Stück profitabler. Vor allem soll er ja auch so funktionieren, wie er eigentlich soll.

Um die "Lücken" zu schließen, oder sie wenigstens weniger schlimm zu machen, könnte man vielleicht versuchen, den selber geproggten "TP" zu erhöhen. Steht derzeit auf 50, vielleicht wär 100 oder noch mehr besser.

Aber es kann ja eigentlich nur am Broker (ActivTrades) liegen. Der hat wohl was gegen Hedgen und Scalpen. Kennt Jemand Forex-Broker, möglichst nen deutschen, bei dem sich Hedger austoben können, wie sie wollen?
Code:
//=============================================================================================================
// E I N S T E L L U N G E N
//=============================================================================================================

//-----------------------------------------------------------------------------------------------------------*/

extern string OPORTY="Open Order Types";
input bool open_Buy=true;
input bool open_Sell=true;

//-----------------------------------------------------------------------------------------------------------*/

extern string MN="Magic Numbers";
extern int Buy_MN=2;
extern int Sell_MN=4;

//-----------------------------------------------------------------------------------------------------------*/

extern string OOO1="Open Orders";
extern string OOO2="from/till";
extern string OOO3="(Server Time)";

extern int Open_From_Hour=7;
extern int Open_From_Min=0;

extern int Open_Till_Hour=17;
extern int Open_Till_Min=26;

//-----------------------------------------------------------------------------------------------------------*/

extern string CAOTOC1="Close all Orders after";
extern string CAOTOC2="(Server Time)";

extern bool Close_all_Orders_after=true;

extern int Close_after_Hour=17;
extern int Close_after_Min=27;

//-----------------------------------------------------------------------------------------------------------*/

extern int Slippage=99999999;

//-----------------------------------------------------------------------------------------------------------*/

extern double LotsBuy=0.01;
extern double LotsSel=0.01;

extern string esLPOCP1="Lots Buy/Lots Sell";
extern string esLPOCP2="+ LotsPlus";
extern string esLPOCP3="if Order close";
extern string esLPOCP4="with Profit";

extern double LotsPlus=0.01; //

//-----------------------------------------------------------------------------------------------------------*/

extern int SL=1800; // 1800 testen

//-----------------------------------------------------------------------------------------------------------*/

extern int TP=2000; // Zum Testen 2000

//-----------------------------------------------------------------------------------------------------------*/

extern string esIITCBSMS1="if IsTradeContexBusy()";
extern string esIITCBSMS2="sleep Milli Seconds";

extern int Sl_MS=20;

//-----------------------------------------------------------------------------------------------------------*/

extern string esDOPtAB1="Distance to";
extern string esDOPtAB2="Order Open Price";
extern string esDOPtAB3="close Win-Order";
extern string esDOPtAB4="If close with Profit";
extern string esDOPtAB5="Lots Buy + Lots Sel /";
extern string esDOPtAB6="Lots Sel + Lots Buy";

extern int Dist = 50; // Zum Testen 50. Weniger ist wahrscheinlich nicht ausreichend?

//-----------------------------------------------------------------------------------------------------------*/


//=============================================================================================================
// I N I T / D E I N I T
//=============================================================================================================
int init(){
  return(NULL);}
int deinit(){
  return(NULL);}
//=============================================================================================================
// E A   F U N K T I O N E N   S T A R T
//=============================================================================================================int 
int start(){
//=============================================================================================================
// L O T S
//=============================================================================================================


double Min_L=MarketInfo(Symbol(),MODE_MINLOT);
double Max_L=MarketInfo(Symbol(),MODE_MAXLOT);

if(LotsBuy<Min_L)LotsBuy=Min_L;
if(LotsSel<Min_L)LotsSel=Min_L;

if(LotsBuy>=Max_L){
  LotsBuy=Max_L;
  LotsPlus=0.0;}

if(LotsSel>=Max_L){
  LotsSel=Max_L;
  LotsPlus=0.0;}


//=============================================================================================================
// S T O P   L O S S
//=============================================================================================================


//SL auf 0 stellen, wenn oben <1,
//um irgendwelche Missverständnisse zu vermeiden.
if(SL<1){
  double Buy_SL=0.0;
  double Sel_SL=0.0;}

  else{
    Buy_SL=NormalizeDouble(Ask-SL*_Point,_Digits);
    Sel_SL=NormalizeDouble(Bid+SL*_Point,_Digits);}

//SL genauso groß wie Minstoplevels machen, wenn er kleiner ist:
double MSL=MarketInfo(Symbol(),MODE_STOPLEVEL);
if(Buy_SL<MSL)Buy_SL=MSL;
if(Sel_SL<MSL)Sel_SL=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){
  double Buy_TP=0.0;
  double Sel_TP=0.0;}

  else{
    Buy_TP=NormalizeDouble(Ask+TP*_Point,_Digits);
    Sel_TP=NormalizeDouble(Bid-TP*_Point,_Digits);}


//=============================================================================================================
// C L O S E   D I S T A N C E   B E R E C H N U N G
//=============================================================================================================


double CLbuy_D = NormalizeDouble( Bid - Dist *_Point,_Digits);

double CLsel_D = NormalizeDouble( Ask + Dist *_Point,_Digits);


//=============================================================================================================
// O P E N   O R D E R S
//=============================================================================================================


if(Hour()>=Open_From_Hour&&Minute()>=Open_From_Min&&Hour()<=Open_Till_Hour&&Minute()<=Open_Till_Min){


//-----------------------------------------------------------------------------------------------------------*/


  if(open_Buy==true){

    bool LO=false;
    
    for(int i=OrdersTotal()-1;i>=0;i--){

      if(OrderSelect(i,SELECT_BY_POS)){
      
        if(OrderType()==OP_BUY&&OrderMagicNumber()==Buy_MN&&OrderSymbol()==Symbol()){
        LO=true;
        Print( "-Open Buy Order Selected:" , "-Long?:",LO , "-OrderTyp:",OrderType() , "-OrderMN:",OrderMagicNumber() , "-BuyMN:",Buy_MN , "-OrderSymbol:",OrderSymbol() , "-Symbol:",Symbol() );}}}

        if(LO==false&&IsTradeAllowed()==true){
        OrderSend(Symbol(),OP_BUY,LotsBuy,Ask,Slippage,Buy_SL,Buy_TP,NULL,Buy_MN,Blue);
        Print( "-Buy Order Sended:" , "-Long?:",LO , "-IsTradeAllowed:",IsTradeAllowed() , "-Symbol:",Symbol() , "Order Typ:",OrderType() , "-LotsBuy:",LotsBuy, "-Ask:",Ask, "-Slippage:",Slippage );}

        if(IsTradeContextBusy()){
        Print( "-Open Buy ITCB:",IsTradeContextBusy() , "-Sleep:",Sl_MS );
        Sleep(Sl_MS);
        Print( "- Open Buy ITCB Long?:",LO );}

}


//-----------------------------------------------------------------------------------------------------------*/


  if( open_Sell==true ){

    bool SH=false;
    
    for(int j=OrdersTotal()-1;j>=0;j--){

      if(OrderSelect(j,SELECT_BY_POS)){

        if(OrderType()==OP_SELL&&OrderMagicNumber()==Sell_MN&&OrderSymbol()==Symbol()){
        SH=true;
        Print( "-Open Sel Order Selected:" , "-Short?:",SH , "-Order Typ:",OrderType() , "-OrderMN:",OrderMagicNumber() , "-Sell MN:",Sell_MN , "-OrderSymbol:",OrderSymbol() , "-Symbol:",Symbol() );}}}

        if(SH==false&&IsTradeAllowed()==true){
        OrderSend(Symbol(),OP_SELL,LotsSel,Bid,Slippage,Sel_SL,Sel_TP,NULL,Sell_MN,Blue);
        Print( "-Sel Order Sended:" , "-Short?:",SH , "-IsTradeAllowed:",IsTradeAllowed() , "-Symbol:",Symbol(), "Order Typ:",OP_SELL , "-LotsSel",LotsSel , "-Bid:",Bid );}

        if(IsTradeContextBusy()){
        Print( "-Open Sel ITCB:",IsTradeContextBusy() , "-Sleep:",Sl_MS );
        Sleep(Sl_MS);
        Print ( "-Open Sel ITCB Short?:",SH );}

}

}


//=============================================================================================================
// C L O S E   O R D E R S
//=============================================================================================================


if(open_Buy==true){

  for(int k=OrdersTotal()-1;k>=0;k--){
  
    if(OrderSelect(k,SELECT_BY_POS)){
    
      if(OrderType()==OP_BUY&&OrderMagicNumber()==Buy_MN&&OrderSymbol()==Symbol()){
      Print( "-Closing Buy Order Selected:" , "-Long?:",LO , "-Order Typ:",OrderType() , "-OrderMN:",OrderMagicNumber() , "-Buy MN:",Buy_MN , "-OrderSymbol:",OrderSymbol() , "-Symbol:",Symbol() );

        if( ( CLbuy_D > OrderOpenPrice() ) ||(Close_all_Orders_after==true&&Hour()>=Close_after_Hour&&Minute()>=Close_after_Min) ){
        Print( "-Closing Buy:" , "-Close Buy Dist:",CLbuy_D , "-Buy Order Open Price:",OrderOpenPrice() );

          if(IsTradeAllowed()==true){
          OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Red);
          Print( "-Closing Buy:" , "-Long?:",LO , "-Symbol:",Symbol(), "-Lots:",OrderLots() , "-Bid:",Bid , "-Slippage:",Slippage );}

          if(IsTradeContextBusy()){
          Print( "-Close Buy ITCB:",IsTradeContextBusy() , "-Sleep:",Sl_MS );
          Sleep(Sl_MS);
          Print( "-Close Buy Long?:",LO );}

          LotsBuy = OrderLots() + LotsPlus;
          Print( "-Closing Buy:" , "-Order Lots Buy=",OrderLots() , "-Lots PLus=",LotsPlus , "-new LotsBuy=",LotsBuy );

          if( LotsBuy <= LotsSel ){
            Print( "-Closed Buy:" , "-(old) Lots Buy=",LotsBuy , "Lots Sel=",LotsSel );
          
            LotsBuy = LotsSel + LotsBuy;
            Print( "-Closed Buy:" , "-Lots Sel=",LotsSel , "-new Lots Buy=",LotsBuy );}

} } } } }


//-----------------------------------------------------------------------------------------------------------*/


if(open_Sell==true){

  for(int l=OrdersTotal()-1;l>=0;l--){
  
    if(OrderSelect(l,SELECT_BY_POS)){
    
      if(OrderType()==OP_SELL&&OrderMagicNumber()==Sell_MN&&OrderSymbol()==Symbol()){
      Print( "-Close Sel Order Select:" , "-Short?:",SH , "-Order Typ:",OrderType() , "-OrderMN:",OrderMagicNumber() , "-Sel MN:",Sell_MN , "-OrderSymbol:",OrderSymbol() , "-Symbol:",Symbol() );
      
        if( ( CLsel_D < OrderOpenPrice() ) ||(Close_all_Orders_after==true&&Hour()>=Close_after_Hour&&Minute()>=Close_after_Min) ){
        Print( "-Close Sel Dist:", CLsel_D , "-Order Open Price:",OrderOpenPrice() );

          if(IsTradeAllowed()==true){
          OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Red);
          Print( "-Close Sel:" , "-Short?:",SH , "-Symbol:",Symbol(), "-Lots:",OrderLots() , "-Ask:",Ask , "-Slippage:",Slippage );}

          if(IsTradeContextBusy()){
          Print( "-Close Sel ITCB:",IsTradeContextBusy() , "-Sleep:",Sl_MS );
          Sleep(Sl_MS);
          Print( "-Short?:",SH );}
        
          LotsSel = OrderLots() + LotsPlus;
          Print( "-Closing Sel:" , "-last Lots Sel=",OrderLots() , "-Lots PLus=",LotsPlus , "-new LotsSel=",LotsSel );


          if( LotsSel <= LotsBuy ){
            Print( "-Closed Sel:" , "-(old) Lots Sel=",LotsSel , "Lots Buy=",LotsBuy );

            LotsSel = LotsBuy + LotsSel;
            Print( "-Closed Sel:" , "-Lots Buy=",LotsBuy , "-new Lots Sel=",LotsSel );}


} } } } }


//=============================================================================================================
// E A   F U N K T I O N E N   B E E N D E N
//=============================================================================================================
return(NULL);}
Angehängte Dateien
Dateityp: mq4 PrintVers_LoSh_AlwInv_Dist_lL.mq4 (28,6 KB, 0x aufgerufen)
  #36 (permalink)  
Alt 12.05.20
Mitglied
 
Registriert seit: Dec 2015
Beiträge: 85
TogoTiger befindet sich auf einem aufstrebenden Ast
Standard

Du kannst doch bei beliebig vielen Brokern ein Demokonto eröffnen.
Ratschläge, wie du deinen Code verbessern könntest, wirst du von mir keine mehr kriegen. Du setzst sie ja doch nicht um.
  #37 (permalink)  
Alt 12.05.20
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Ähm... Ich hatte irgendwie vorhin nen Post geöffnet. Wo ist der?
  #38 (permalink)  
Alt 13.05.20
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Da ist wohl irgendwas schief gegangen.

Muss man diese ganzen Fehlermeldungen extra im EA deklarieren/abfragen? Die erscheinen doch auch so im Journal oder unter Experten. Oder nicht?

Er scheint wieder nicht durchgehend zu öffnen. Liegt das vielleicht an der Schreibweise des EAs? Verhakt der sich da vielleicht irgendwo oder irgendwie? Oder braucht für irgendwas länger, wenn irgendwas nicht optimal geschrieben ist? Liegt das vielleicht irgendwie an IsTradeAllowed() oder so?

Ist hier Jemand bei ActivTrades? Kann er dort Scalpen, vor allem Hedgen wie er will? Oder dauerts bei Ihm teilweise auch lange, bis die nächste Order geöffnet wird?

Kennt hier Jemand nen Forex-Broker, bei dem man ohne Probleme hedgen kann, ohne irgendwelche Unterbrechungen?
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"PrintVers_LoSh_AlwInv_Dist_lL.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 OPORTY="Open Order Types";
input bool open_Buy=true;
input bool open_Sell=true;

//-----------------------------------------------------------------------------------------------------------*/

extern string MN="Magic Numbers";
extern int Buy_MN=2;
extern int Sell_MN=4;

//-----------------------------------------------------------------------------------------------------------*/

extern string OOO1="Open Orders";
extern string OOO2="from/till";
extern string OOO3="(Server Time)";

extern int Open_From_Hour=7;
extern int Open_From_Min=0;

extern int Open_Till_Hour=17;
extern int Open_Till_Min=26;

//-----------------------------------------------------------------------------------------------------------*/

extern string CAOTOC1="Close all Orders after";
extern string CAOTOC2="(Server Time)";

extern bool Close_all_Orders_after=true;

extern int Close_after_Hour=17;
extern int Close_after_Min=27;

//-----------------------------------------------------------------------------------------------------------*/

extern int Slippage=99999999;

//-----------------------------------------------------------------------------------------------------------*/

extern double LotsBuy=0.01;
extern double LotsSel=0.01;

extern string esLPOCP1="Lots Buy/Lots Sell";
extern string esLPOCP2="+ LotsPlus";
extern string esLPOCP3="if Order close";
extern string esLPOCP4="with Profit";

extern double LotsPlus=0.01; //

//-----------------------------------------------------------------------------------------------------------*/

extern int SL=1800; // 1800 testen

//-----------------------------------------------------------------------------------------------------------*/

extern int TP=2000; // Zum Testen 2000

//-----------------------------------------------------------------------------------------------------------*/

extern string esIITCBSMS1="if IsTradeContexBusy()";
extern string esIITCBSMS2="sleep Milli Seconds";

extern int Sl_MS=25;

//-----------------------------------------------------------------------------------------------------------*/

extern string esDOPtAB1="Distance to";
extern string esDOPtAB2="Order Open Price";
extern string esDOPtAB3="close Win-Order";
extern string esDOPtAB4="If close with Profit";
extern string esDOPtAB5="Lots Buy + Lots Sel /";
extern string esDOPtAB6="Lots Sel + Lots Buy";

extern int Dist = 100; // Zum Testen 100. Weniger als 50 ist wahrscheinlich nicht ausreichend?

//-----------------------------------------------------------------------------------------------------------*/


//=============================================================================================================
// I N I T / D E I N I T
//=============================================================================================================
int init(){
  return(NULL);}
int deinit(){
  return(NULL);}
//=============================================================================================================
// E A   F U N K T I O N E N   S T A R T
//=============================================================================================================int 
int start(){
//=============================================================================================================
// L O T S
//=============================================================================================================


double Min_L=MarketInfo(Symbol(),MODE_MINLOT);
double Max_L=MarketInfo(Symbol(),MODE_MAXLOT);

if(LotsBuy<Min_L)LotsBuy=Min_L;
if(LotsSel<Min_L)LotsSel=Min_L;

if(LotsBuy>=Max_L){
  LotsBuy=Max_L;
  LotsPlus=0.0;}

if(LotsSel>=Max_L){
  LotsSel=Max_L;
  LotsPlus=0.0;}


//=============================================================================================================
// S T O P   L O S S
//=============================================================================================================


//SL auf 0 stellen, wenn oben <1,
//um irgendwelche Missverständnisse zu vermeiden.
if(SL<1){
  double Buy_SL=0.0;
  double Sel_SL=0.0;}

  else{
    Buy_SL=NormalizeDouble(Ask-SL*_Point,_Digits);
    Sel_SL=NormalizeDouble(Bid+SL*_Point,_Digits);}

//SL genauso groß wie Minstoplevels machen, wenn er kleiner ist:
double MSL=MarketInfo(Symbol(),MODE_STOPLEVEL);
if(Buy_SL<MSL)Buy_SL=MSL;
if(Sel_SL<MSL)Sel_SL=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){
  double Buy_TP=0.0;
  double Sel_TP=0.0;}

  else{
    Buy_TP=NormalizeDouble(Ask+TP*_Point,_Digits);
    Sel_TP=NormalizeDouble(Bid-TP*_Point,_Digits);}


//=============================================================================================================
// C L O S E   D I S T A N C E   B E R E C H N U N G
//=============================================================================================================


double CLbuy_D = NormalizeDouble( Bid - Dist *_Point,_Digits);

double CLsel_D = NormalizeDouble( Ask + Dist *_Point,_Digits);


//=============================================================================================================
// O P E N   O R D E R S
//=============================================================================================================


if(Hour()>=Open_From_Hour&&Minute()>=Open_From_Min&&Hour()<=Open_Till_Hour&&Minute()<=Open_Till_Min){


//-----------------------------------------------------------------------------------------------------------*/


  if(open_Buy==true){

    bool LO=false;
    
    for(int i=OrdersTotal()-1;i>=0;i--){
      if(OrderSelect(i,SELECT_BY_POS)){
        if(OrderType()==OP_BUY&&OrderMagicNumber()==Buy_MN&&OrderSymbol()==Symbol()){
        LO=true;
        Print( "-Opening Buy Order Selected:" , "-Long?:",LO , "-OrderTyp:",OrderType() , "-OrderMN:",OrderMagicNumber() , "-BuyMN:",Buy_MN , "-OrderSymbol:",OrderSymbol() , "-Symbol:",Symbol() );}}}


        if(LO==false){

          if(IsTradeAllowed()==true){
            OrderSend(Symbol(),OP_BUY,LotsBuy,Ask,Slippage,Buy_SL,Buy_TP,NULL,Buy_MN,Blue);
            Print( "-Opening Buy:" , "-Long?:",LO , "-IsTradeAllowed:",IsTradeAllowed() , "-Symbol:",Symbol() , "Order Typ:",OrderType() , "-LotsBuy:",LotsBuy, "-Ask:",Ask, "-Slippage:",Slippage );}

          if(IsTradeAllowed()==false||IsTradeContextBusy()){
            Print( "-Opening Buy ITCB:",IsTradeContextBusy() , "-Sleep:",Sl_MS );
            Sleep(Sl_MS);
            Print( "-Opening Buy ITCB Long?:",LO );}}

}


//-----------------------------------------------------------------------------------------------------------*/


  if( open_Sell==true ){

    bool SH=false;
    
    for(int j=OrdersTotal()-1;j>=0;j--){
      if(OrderSelect(j,SELECT_BY_POS)){
        if(OrderType()==OP_SELL&&OrderMagicNumber()==Sell_MN&&OrderSymbol()==Symbol()){
        SH=true;
        Print( "-Opening Sell Order Selected:" , "-Short?:",SH , "-Order Typ:",OrderType() , "-OrderMN:",OrderMagicNumber() , "-Sell MN:",Sell_MN , "-OrderSymbol:",OrderSymbol() , "-Symbol:",Symbol() );}}}


        if(SH==false){
        
          if(IsTradeAllowed()==true){
          OrderSend(Symbol(),OP_SELL,LotsSel,Bid,Slippage,Sel_SL,Sel_TP,NULL,Sell_MN,Blue);
          Print( "-Opening Sell:" , "-Short?:",SH , "-IsTradeAllowed:",IsTradeAllowed() , "-Symbol:",Symbol(), "Order Typ:",OP_SELL , "-LotsSel",LotsSel , "-Bid:",Bid );}

          if(IsTradeAllowed()==false||IsTradeContextBusy()){
            Print( "-Opening Sel ITCB:",IsTradeContextBusy() , "-Sleep:",Sl_MS );
            Sleep(Sl_MS);
            Print( "-Opening Sel ITCB Long?:",LO );}}

}

}


//=============================================================================================================
// C L O S E   O R D E R S
//=============================================================================================================


if(open_Buy==true){
  for(int k=OrdersTotal()-1;k>=0;k--){
    if(OrderSelect(k,SELECT_BY_POS)){
      if(OrderType()==OP_BUY&&OrderMagicNumber()==Buy_MN&&OrderSymbol()==Symbol()){
      Print( "-Closing Buy Order Selected:" , "-Long?:",LO , "-Order Typ:",OrderType() , "-OrderMN:",OrderMagicNumber() , "-Buy MN:",Buy_MN , "-OrderSymbol:",OrderSymbol() , "-Symbol:",Symbol() );

        if( ( CLbuy_D > OrderOpenPrice() ) ||(Close_all_Orders_after==true&&Hour()>=Close_after_Hour&&Minute()>=Close_after_Min) ){
        Print( "-Closing Buy:" , "-Close Buy Dist:",CLbuy_D , "-Buy Order Open Price:",OrderOpenPrice() );

          if(IsTradeAllowed()==true){
            OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Red);
            Print( "-Closing Buy:" , "-Long?:",LO , "-Symbol:",Symbol(), "-Lots:",OrderLots() , "-Bid:",Bid , "-Slippage:",Slippage );}

            if(IsTradeAllowed()==false||IsTradeContextBusy()){
            Print( "-Closing Buy ITCB:",IsTradeContextBusy() , "-Sleep:",Sl_MS );
            Sleep(Sl_MS);
            Print( "-Closing Buy Long?:",LO );}

            LotsBuy = OrderLots() + LotsPlus;
            Print( "-Closing Buy:" , "-Order Lots Buy=",OrderLots() , "-Lots PLus=",LotsPlus , "-new LotsBuy=",LotsBuy );

            if( LotsBuy <= LotsSel ){
            Print( "-Closing Buy:" , "-(old) Lots Buy=",LotsBuy , "Lots Sel=",LotsSel );
          
            LotsBuy = LotsSel + LotsBuy;
            Print( "-Closing Buy:" , "-Lots Sel=",LotsSel , "-new Lots Buy=",LotsBuy );}

} } } } }


//-----------------------------------------------------------------------------------------------------------*/


if(open_Sell==true){
  for(int l=OrdersTotal()-1;l>=0;l--){
    if(OrderSelect(l,SELECT_BY_POS)){
      if(OrderType()==OP_SELL&&OrderMagicNumber()==Sell_MN&&OrderSymbol()==Symbol()){
      Print( "-Closing Sel Order Select:" , "-Short?:",SH , "-Order Typ:",OrderType() , "-OrderMN:",OrderMagicNumber() , "-Sel MN:",Sell_MN , "-OrderSymbol:",OrderSymbol() , "-Symbol:",Symbol() );
      
        if( ( CLsel_D < OrderOpenPrice() ) ||(Close_all_Orders_after==true&&Hour()>=Close_after_Hour&&Minute()>=Close_after_Min) ){
        Print( "-Closing Sel Dist:", CLsel_D , "-Order Open Price:",OrderOpenPrice() );

          if(IsTradeAllowed()==true){
            OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Red);
            Print( "-Closing Sel:" , "-Short?:",SH , "-Symbol:",Symbol(), "-Lots:",OrderLots() , "-Ask:",Ask , "-Slippage:",Slippage );}

          if(IsTradeAllowed()==false||IsTradeContextBusy()){
            Print( "-Closing Sel ITCB:",IsTradeContextBusy() , "-Sleep:",Sl_MS );
            Sleep(Sl_MS);
            Print( "-Short?:",SH );}
        
            LotsSel = OrderLots() + LotsPlus;
            Print( "-Closing Sel:" , "-last Lots Sel=",OrderLots() , "-Lots PLus=",LotsPlus , "-new LotsSel=",LotsSel );

            if( LotsSel <= LotsBuy ){
            Print( "-Closing Sel:" , "-(old) Lots Sel=",LotsSel , "Lots Buy=",LotsBuy );

            LotsSel = LotsBuy + LotsSel;
            Print( "-Closing Sel:" , "-Lots Buy=",LotsBuy , "-new Lots Sel=",LotsSel );}


} } } } }


//=============================================================================================================
// E A   F U N K T I O N E N   B E E N D E N
//=============================================================================================================
return(NULL);}
Angehängte Dateien
Dateityp: mq4 PrintVers_LoSh_AlwInv_Dist_lL.mq4 (29,0 KB, 1x aufgerufen)
  #39 (permalink)  
Alt 13.05.20
Mitglied
 
Registriert seit: Dec 2015
Beiträge: 85
TogoTiger befindet sich auf einem aufstrebenden Ast
Standard

[QUOTE=MA-EA;43672]
Muss man diese ganzen Fehlermeldungen extra im EA deklarieren/abfragen? Die erscheinen doch auch so im Journal oder unter Experten. Oder nicht?
/QUOTE]

Aha! Und dein EA soll dann das Journal lesen und entsprechend reagieren? Einfach so, ohne dass du dir was dabei denken musst?
  #40 (permalink)  
Alt 23.06.20
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Hallo.

Anscheinend gibts keinen einzigen Forex Broker, bei dem man ohne größere Unterbrechungen gleichzeitig Long und Short im selben Symbol sein kann. Vielleicht liegts auch am MT4. Also müssen diese "Pausen", in denen im selben Symbol nur die Order ein eine Richtung offen ist, wohl irgendwie ausgeglichen werden. Deswegen soll die Vers. 3, siehe Anhang, die Lots erhöhen, wenn eine Order mit Gewinn geschlossen wird und in der entgegen gesetzten Richtung gerade keine Order offen ist. Aber irgendwie klappt das so nicht.

Ich vermute, dass das irgendwie so nicht mit den Deklarationen und dazu gehörigen Werten funktioniert. Ich weiß es nicht.
Code:
//=============================================================================================================
// O R D E R   C L O S E   B Y   D I S T   ?
//=============================================================================================================


//Feststellen, ob Sell-Order offen ist. Wenn nicht, müssen Lots "ausgeglichen" werden.
bool L_SH=false;
  for(int j=OrdersTotal()-1;j>=0;j--){
    if(OrderSelect(j,SELECT_BY_POS)){
      if(OrderMagicNumber()==MN_Sel&&OrderSymbol()==Symbol())L_SH=true;}}

//Die eigentliche Buy-Order auswählen:
for(int k=OrdersTotal()-1;k>=0;k--){
  if(OrderSelect(k,SELECT_BY_POS)){
    if(OrderMagicNumber()==MN_Buy&&OrderSymbol()==Symbol()){
      if( CLbuy_D > OrderOpenPrice() ){
        

        LotsBuy = OrderLots() + LotsPlus;
        
//                  <= oder < ? Vermutlich Ersteres...
        if( LotsBuy <= LotsSel )LotsBuy = LotsSel + LotsBuy;
        
        
        if(L_SH==false)LotsSel = LotsBuy + LotsSel;
        
        
        if(IsTradeAllowed()==true)OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Red);
        if(IsTradeContextBusy()==true)Sleep(Sl_MS);


} } } }


//////////////////////////////////////////////////////////////////////////////////////////////////////////////


//Feststellen, ob Buy-Order offen ist. Wenn nicht, müssen Lots "ausgeglichen" werden.
bool L_LO=false;
for(int m=OrdersTotal()-1;m>=0;m--){
  if(OrderSelect(m,SELECT_BY_POS)){
    if(OrderMagicNumber()==MN_Buy&&OrderSymbol()==Symbol())L_LO=true;}}

//die eigentliche Sell-Order auswählen:
  for(int n=OrdersTotal()-1;n>=0;n--){
    if(OrderSelect(n,SELECT_BY_POS)){
      if(OrderMagicNumber()==MN_Sel&&OrderSymbol()==Symbol()){
        if( CLsel_D < OrderOpenPrice() ){
        
        
          LotsSel = OrderLots() + LotsPlus;

//                    <= oder < ? Vermutlich Ersteres...
          if( LotsSel <= LotsBuy )LotsSel = LotsBuy + LotsSel;
          
          
          if(L_LO==false)LotsBuy = LotsSel + LotsBuy;
          
        
          if(IsTradeAllowed()==true)OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Red);
          if(IsTradeContextBusy()==true)Sleep(Sl_MS);


} } } }
Angehängte Dateien
Dateityp: mq4 LoSh_AlwInv_Dist_v3.mq4 (25,8 KB, 0x aufgerufen)
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 +2. Es ist jetzt 20:25 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.
-----------------------------------------------------------------------------------------------------------------------------