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: 43363
Benutzer: 7.221
Aktive Benutzer: 81
Links: 84
Wir begrüßen unseren neuesten Benutzer: Thomas75
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 4 Stunden
- Thomas75
vor 18 Stunden
- JosephTK
vor 2 Tagen
- Hopfen&Mal...
vor 3 Tagen
- frankmicha...
vor einer Woche
- DFeck

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

Empfehlungen

Like Tree2Likes
Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #11 (permalink)  
Alt 29.04.20
Mitglied
 
Registriert seit: Dec 2015
Beiträge: 85
TogoTiger befindet sich auf einem aufstrebenden Ast
Standard

Du musst dir schon die Mühe geben, meine Antworten zu lesen und den Code zu verstehen oder in deinen EA zu kopieren. Der Code macht genau das, was du willst.
  #12 (permalink)  
Alt 29.04.20
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Hallo.

Danke für die Hilfe.

Aber jetzt komm ich wirklich nicht mehr weiter. Hab ausserhalb des OrderSend-Blocks die Tickets mit Print ausgeben lassen. Da kommt immer nur 0! Nur wenn sie zwischen Ti... = OrderSend(...) und dem dazu gehörigen return ausgegeben werden sollen, nur dann funktioniert Print(tralala ticket)... Ist ja kein Wunder, dass er nie die geschlossenen Orders findet. Jedenfalls nicht so:
Code:
  for(int j=0;j<OrdersHistoryTotal();j++){
    if(OrderSelect(j,SELECT_BY_POS,MODE_HISTORY)){
  
      if( OrderTicket()==TiBuy ){

...


Gibts noch nen anderen Weg, die zuletzt geschlossene Order mit Gewinn zu finden, ohne nach dem Ticket zu suchen?
Angehängte Dateien
Dateityp: mq4 LoSh_AlwInv_SLTP_LP.mq4 (21,1 KB, 0x aufgerufen)
  #13 (permalink)  
Alt 29.04.20
Mitglied
 
Registriert seit: Dec 2015
Beiträge: 85
TogoTiger befindet sich auf einem aufstrebenden Ast
Standard

Schau meinen Code an. Der speichert die Ticket-Nummer nach der Ordereröffnung in LastBuy und LastSel.
Wenn du einmal abgefragt hast, wird das gelöscht und gut ist.

So, das wars. Mehr schreib ich nicht mehr zu dem Thema. Hier der ganze Code, der macht, was du willst. Ein paar Dinge könnte man noch weglassen und es würde trotzdem gehen. SL setzen und TP setzten geht so, wie du das codiert hast nicht immer. Ich mache immer erst die Order auf und setze danach SL und TP. Warum das so ist, habe ich nicht gesucht. Wenn du das nicht verstehst, und das ist wirklich einfach gehalten, dann kann ich dir nicht helfen.
Aber was solls, deine Strategie macht nur Verluste:

Code:
/*=============================================================================================================
// N O T I Z E N   U N D   I N F O S
//=============================================================================================================



Öffnen der Orders dauert allgemein etwas lange.
Er scheint immer erst zu Minuten-Beginn zu öffnen?

Lag vielleicht an Dist? Mit SL und TP testen.
Mit SL und TP scheints zu funktionieren.


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



//=============================================================================================================
// 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"LoSh_AlwInv_SLTP_LP.mq4"
#property copyright"daniel-rudloff@web.de"

#include <stderror.mqh>
#include <stdlib.mqh>


//=============================================================================================================
// 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 MN="Magic Numbers";
extern int Buy_MN=2;
extern int Sell_MN=4;

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

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

input bool Open_Only_From_Till=true; //

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 IOOFTF1="if";
extern string IOOFTF2="Open_Only_From_Till = false";
extern string IOOFTF3="Close_all_Orders_after";
extern string IOOFTF4="= false too";

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/Sell";
extern string esLPOCP2="+ LotsPlus";
extern string esLPOCP3="if Order close";
extern string esLPOCP4="with Profit";

extern double LotsPlus=0.01;


extern string esOLLPOLP1="OrderLots of";
extern string esOLLPOLP2="last Profit Order";
extern string esOLLPOLP3="+ LotsPlus?";

extern bool OLPO_LP=false; // Zum Testen aus


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

extern int SL=10; // 1600 testen

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

extern int TP=20; // Zum Testen 50

//=============================================================================================================
// D E K L A R A T I O N E N
//=============================================================================================================

bool OMbuy,OMsel,OCbuy,OCsel;

double Buy_SL,Sel_SL,Buy_TP,Sel_TP;

int i,j,TiBuy,TiSel;
int LastBuy = 0;
int LastSel = 0;
int History_index = 0;
int LastHistory_index = 0;

int      Fehlercode;
string   Fehlerbeschreibung;
string   Fehlerausgabe;


//=============================================================================================================
// I N I T / D E I N I T
//=============================================================================================================
int OnInit(){
  return(0);}
void OnDeinit(const int reason){
  return;}
//=============================================================================================================
// E A   F U N K T I O N E N   S T A R T
//=============================================================================================================
void OnTick(){
//=============================================================================================================
// O P E N   T I M E
//=============================================================================================================


bool RT=false; // RT = Right Time
if( (Open_Only_From_Till==false) || (Open_Only_From_Till==true&&Hour()>=Open_From_Hour&&Minute()>=Open_From_Min&&Hour()<=Open_Till_Hour&&Minute()<=Open_Till_Min) )RT=true;

RT = true;

//=============================================================================================================
// 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;
if(LotsSel>Max_L)LotsSel=Max_L;


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


//SL auf 0 stellen, wenn oben <1,
//um irgendwelche Missverständnisse zu vermeiden.
if(SL<1){
  Buy_SL=0.0;
  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){
  Buy_TP=0.0;
  Sel_TP=0.0;}

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


//=============================================================================================================
// P R U E F E N   O B   O R D E R S   G E O E F F N E T   S I N D
//=============================================================================================================


bool BuyInv=false;
bool SelInv=false;

for(i=OrdersTotal()-1;i>=0;i--)
{
   if(OrderSelect(i,SELECT_BY_POS))
   {
      if(OrderType()==OP_BUY &&OrderMagicNumber()==Buy_MN &&OrderSymbol()==Symbol()) BuyInv=true;
      if(OrderType()==OP_SELL&&OrderMagicNumber()==Sell_MN&&OrderSymbol()==Symbol()) SelInv=true;
   }
}


//------------------------------
// OrderLots für Buy erhöhen
//----------------------------

History_index = OrdersHistoryTotal();
if (LastHistory_index != History_index)
{
   if (LastBuy > 0)
   {
      //Print ("Gewinn LastBuy fragen: ",LastBuy);
      for(i=History_index;i>=0;i--)
      {
         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
         {
            if(OrderTicket() == LastBuy)
            {
               Print ("OrderProfit LastBy: ",LastBuy," ",DoubleToString(OrderProfit(),2));
               if (OrderProfit()>0.0)
               {
                  if(OLPO_LP==false)LotsBuy = LotsBuy + LotsPlus;    
                  if(OLPO_LP==true)LotsBuy = OrderLots() + LotsPlus;
               }
               Print ("LotBuy: ",LotsBuy); 
               LastBuy = 0;
            }
         }
      }
   }
// --------------------------
// OrderLots für Sell erhöhen
// --------------------------
   if (LastSel > 0)
   {
      //Print ("Gewinn LastSeL fragen: ",LastSel);
      for(i=History_index;i>=0;i--)
      {
         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
         {
            if(OrderTicket() == LastSel)
            {
               Print ("OrderProfit LastSel: ",LastSel," ",DoubleToString(OrderProfit(),2));
               if (OrderProfit()>0.0)
               {
                  if(OLPO_LP==false)LotsSel = LotsSel + LotsPlus;
                  if(OLPO_LP==true)LotsSel = OrderLots() + LotsPlus;
               }
               Print (" LotsSel: ",LotsSel);
               LastSel = 0;
            }
         }
      }
   }
}
LastHistory_index = History_index;

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


if( RT==true )
{
   if( BuyInv==false && IsTradeAllowed()==true )
   {
      while(IsTradeContextBusy())
         Sleep(10);
      TiBuy=OrderSend(Symbol(),OP_BUY,LotsBuy,Ask,Slippage,Buy_SL,Buy_TP,NULL,Buy_MN,0,Blue);
     // Print ("Open buy ",TiBuy," LotsBuy: ",LotsBuy);

      if(TiBuy == -1)
      {
         Fehlercode = GetLastError();
         Fehlerbeschreibung = ErrorDescription(Fehlercode);
         Fehlerausgabe = StringConcatenate("Eröffnung Kauf-Order:",Fehlercode,": ",Fehlerbeschreibung);
         Print(Fehlerausgabe);
      }
      LastBuy = TiBuy;
      return(TiBuy);
   }

   if( SelInv==false && IsTradeAllowed()==true )
   {
      while(IsTradeContextBusy()) Sleep(10);
     
      TiSel=OrderSend(Symbol(),OP_SELL,LotsSel,Bid,Slippage,Sel_SL,Sel_TP,NULL,Sell_MN,0,Red);
      // Print ("Open Sell ",TiSel," LotsSel: ",LotsSel);

      if(TiSel == -1)
      {
         Fehlercode = GetLastError();
         Fehlerbeschreibung = ErrorDescription(Fehlercode);
         Fehlerausgabe = StringConcatenate("Eröffnung Kauf-Order:",Fehlercode,": ",Fehlerbeschreibung);
         Print(Fehlerausgabe);
      }
      LastSel = TiSel;
      return(TiSel);
   }
}




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


for(j=OrdersTotal()-1;j>=0;j--){
  if(OrderSelect(j,SELECT_BY_POS)){


    if(OrderType()==OP_BUY&&OrderMagicNumber()==Buy_MN&&OrderSymbol()==Symbol()){
      
      if(Close_all_Orders_after==true&&Hour()>=Close_after_Hour&&Minute()>=Close_after_Min){
      
        if(IsTradeAllowed()==true)OCbuy=OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Black);}}



    if(OrderType()==OP_SELL&&OrderMagicNumber()==Sell_MN&&OrderSymbol()==Symbol()){
      
      if(Close_all_Orders_after==true&&Hour()>=Close_after_Hour&&Minute()>=Close_after_Min){

        if(IsTradeAllowed()==true)OCsel=OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Orange);}}

}}


//=============================================================================================================
// E A   F U N K T I O N E N   B E E N D E N
//=============================================================================================================
return(0);}
  #14 (permalink)  
Alt 30.04.20
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Danke vielmals für die Hilfe. Werd ich mir wohl Alles noch mal anschaun müssen.

Das Problem war wohl, dass OrderSend nie das Ticket zurück geliefert hat. Kam immer bloß 0. Aber dann les ich die geschlossenen Orders eben nicht aus. Geht auch ohne.

Die Lots werden jetzt erhöht, wenn ne entsprechende Order vom EA selber geschlossen wird. SL und TP sind nur noch zur Sicherheit drin, falls der PC kaputt geht oder der Server oder die Verbindung abbricht oder was auch immer schief geht.

Jedenfalls scheint der EA allgemein etwas langsam zu arbeiten. Schien irgendwie schon mal schneller zu sein. Woran kann das liegen? Wie kann man allgemein dafür sorgen, dass MT4 und EA möglichst schnell und effizient funktionieren?




#property copyright"LoSh_AlwInv_Dist_LP.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
//================================================== ================================================== =========


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

input ENUM_TIMEFRAMES Timeframe=1;

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

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 Only";
extern string OOO2="from/till?";
extern string OOO3="(Server Time)";

input bool Open_Only_From_Till=true; //

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

extern int Open_Till_Hour=23; // Zum Testen
extern int Open_Till_Min=26; //

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

extern string IOOFTF1="if";
extern string IOOFTF2="Open_Only_From_Till = false";
extern string IOOFTF3="Close_all_Orders_after";
extern string IOOFTF4="= false too";

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

extern bool Close_all_Orders_after=true;

extern int Close_after_Hour=23; // Zum Testen
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=1600; // 1600 testen

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

extern int TP=1800; // Zum Testen 1800

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

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

extern int Sl_MS=10;

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

extern string DOPtAB1="Distance to";
extern string DOPtAB2="Order Open Price";
extern string DOPtAB3="close Win-Order";

extern int Dist = 50; // Zum Testen 50

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


//================================================== ================================================== =========
// I N I T / D E I N I T
//================================================== ================================================== =========
int OnInit(){
ChartSetSymbolPeriod(0,Symbol(),Timeframe);
return(0);}
void OnDeinit(const int reason){
return;}
//================================================== ================================================== =========
// E A F U N K T I O N E N S T A R T
//================================================== ================================================== =========
int start(){
//================================================== ================================================== =========
// O P E N T I M E
//================================================== ================================================== =========


bool RT=false; // RT = Right Time
if( (Open_Only_From_Till==false) || (Open_Only_From_Till==true&&Hour()>=Open_From_Hour &&Minute()>=Open_From_Min&&Hour()<=Open_Till_Hour& &Minute()<=Open_Till_Min) )RT=true;


//================================================== ================================================== =========
// L O T S ?
//================================================== ================================================== =========


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


//================================================== ================================================== =========
// 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);


//================================================== ================================================== =========
// P R U E F E N O B O R D E R S G E O E F F N E T S I N D
//================================================== ================================================== =========


bool BuyInv=false;
for(int i=OrdersTotal()-1;i>=0;i--){
if(OrderSelect(i,SELECT_BY_POS)){
if(OrderType()==OP_BUY&&OrderMagicNumber()==Buy_MN &&OrderSymbol()==Symbol())BuyInv=true;}}


bool SelInv=false;
for(int j=OrdersTotal()-1;j>=0;j--){
if(OrderSelect(j,SELECT_BY_POS)){
if(OrderType()==OP_SELL&&OrderMagicNumber()==Sell_ MN&&OrderSymbol()==Symbol())SelInv=true;}}


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


if(RT==true){



if(open_Buy==true){

if(BuyInv==false){

if(IsTradeAllowed()==true)int TiBuy=OrderSend(Symbol(),OP_BUY,LotsBuy,Ask,Slippa ge,Buy_SL,Buy_TP,NULL,Buy_MN,NULL,Blue);

if( IsTradeContextBusy()==true )Sleep(Sl_MS);}}



if(open_Sell==true){

if(SelInv==false){

if(IsTradeAllowed()==true)int TiSel=OrderSend(Symbol(),OP_SELL,LotsSel,Bid,Slipp age,Sel_SL,Sel_TP,NULL,Sell_MN,NULL,Red);

if( IsTradeContextBusy()==true )Sleep(Sl_MS);}}

}


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


for(i=OrdersTotal()-1;i>=0;i--){
if(OrderSelect(i,SELECT_BY_POS)){


if(OrderType()==OP_BUY&&OrderMagicNumber()==Buy_MN &&OrderSymbol()==Symbol()){

if( ( CLbuy_D > OrderOpenPrice() ) ||(Close_all_Orders_after==true&&Hour()>=Close_aft er_Hour&&Minute()>=Close_after_Min) ){

if(IsTradeAllowed()==true)bool OCbuy=OrderClose(OrderTicket(),OrderLots(),Bid,Sli ppage,Red);

if( IsTradeContextBusy()==true )Sleep(Sl_MS);

LotsBuy = OrderLots() + LotsPlus;}}




if(OrderType()==OP_SELL&&OrderMagicNumber()==Sell_ MN&&OrderSymbol()==Symbol()){

if( ( CLsel_D < OrderOpenPrice() ) ||(Close_all_Orders_after==true&&Hour()>=Close_aft er_Hour&&Minute()>=Close_after_Min) ){

if(IsTradeAllowed()==true)bool OCsel=OrderClose(OrderTicket(),OrderLots(),Ask,Sli ppage,Red);

if( IsTradeContextBusy()==true )Sleep(Sl_MS);

LotsSel = OrderLots() + LotsPlus;}}


}}


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

Ich geb's auf. Wenn du das nicht kapierst, wärs besser, du suchst dir ein anderes Hobby.
  #16 (permalink)  
Alt 01.05.20
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Die geschlossenen Orders auszulesen war eigentlich eh nicht nötig. Hab das bloß versucht, weil ich dachte, der EA würde mit SL/TP besser funktionieren. Scheint aber egal zu sein. In der Version im Anhang wird, wie in der Ursprungs-Version, ne Gewinn-Order geschlossen, wenn nen einstellbarer Abstand zum OrderOpenPrice über/unterschritten wurde. So scheint das Ganze auch zu funktionieren. Ausser dass er immer wieder lange braucht, um die nächste Order zu öffnen, wenn die davor mit Gewinn geschlossen wurde. Das kann doch eigentlich nur an irgendwelchen Einschränkungen bei ActivTrades liegen. Wär schön, wenn das Teil mal Jemand in nem Demo-Konto nen paar Stunden lang testen könnte.
Angehängte Dateien
Dateityp: mq4 LoSh_AlwInv_Dist_LP.mq4 (21,4 KB, 1x aufgerufen)
  #17 (permalink)  
Alt 01.05.20
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

So wirklich aussichtslos scheints nicht zu sein. Würde natürlich bessser laufen, wenn er nicht immer wieder Pausen machen würde.
Zitat:
Zitat von LoSh_LP_EA
Gross Profit: 223.08
Gross Loss: 120.52
Total Net Profit: 102.56
Profit Factor: 1.85
Expected Payoff: 0.92
Absolute Drawdown: 0.00
Maximal Drawdown: 120.52 (0.07%)
Relative Drawdown: 0.07% (120.52)
Total Trades: 112
Short Positions (won %): 53 (81.13%)
Long Positions (won %): 59 (84.75%)
Profit Trades (% of total): 93 (83.04%)
Loss trades (% of total): 19 (16.96%)
Largest profit trade: 6.50
loss trade: -20.03
Average profit trade: 2.40 loss trade: -6.34
Maximum consecutive wins ($): 92 (223.08)
consecutive losses ($): 10 (-60.49)
Maximal consecutive profit (count): 223.08 (92)
consecutive loss (count): -60.49 (10)
Average consecutive wins: 47
consecutive losses: 10
Angehängte Dateien
Dateityp: mq4 LoSh_AlwInv_Dist_LP.mq4 (21,4 KB, 0x aufgerufen)
  #18 (permalink)  
Alt 02.05.20
Mitglied
 
Registriert seit: Dec 2015
Beiträge: 85
TogoTiger befindet sich auf einem aufstrebenden Ast
Standard

Dann lass ihn doch auf einem Echtgeldkonto laufen. Viel Glück.
  #19 (permalink)  
Alt 02.05.20
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Erst mal nicht, Danke.

Im Anhang sozusagen die Version 2.0. Hab versucht, Alles kompakter und eindeutiger zu schreiben. Bloß noch ein bool drin, der im Durchlauf nicht verändert wird. Mit bools hab ich so meine Geschichten erlebt.

Nicht mehr void OnTick. Wenn der gesamte Code bei jedem Tick gestartet wird, dann weiß ich nicht, ob er so optimal läuft...

Es wird immer gewarnt, weil ausser bei Start / return(NULL) keine return Werte zurück geliefert, bzw. erst gar keine deklariert werden. Sind doch aber eigentlich unnötig oder nicht?

Hoffe mal, das ist nicht zu viel Zeugs im OrderSend Bereich...
Code:
//=============================================================================================================
// 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 ){
  
    for(int i=OrdersTotal()-1;i>=0;i--)
    
      if(OrderSelect(i,SELECT_BY_POS))
      
        if(OrderType()==OP_BUY&&OrderMagicNumber()==Buy_MN&&OrderSymbol()==Symbol())Print( "buy" , i );


        else if(IsTradeAllowed())OrderSend(Symbol(),OP_BUY,LotsBuy,Ask,Slippage,Buy_SL,Buy_TP,NULL,Buy_MN,NULL,Blue);

        if(IsTradeContextBusy())Sleep(Sl_MS);}




  if( open_Sell==true ){

    for(int j=OrdersTotal()-1;j>=0;j--)

      if(OrderSelect(j,SELECT_BY_POS))

        if(OrderType()==OP_SELL&&OrderMagicNumber()==Sell_MN&&OrderSymbol()==Symbol())Print( "sell" , i );

      
        else if(IsTradeAllowed())OrderSend(Symbol(),OP_SELL,LotsSel,Bid,Slippage,Sel_SL,Sel_TP,NULL,Sell_MN,NULL,Blue);

        if(IsTradeContextBusy())Sleep(Sl_MS);}

}
Und auch nicht im OrderClose Bereich...
Code:
//=============================================================================================================
// C L O S E   O R D E R S
//=============================================================================================================


for(int k=OrdersTotal()-1;k>=0;k--){
  if(OrderSelect(k,SELECT_BY_POS)){
    if(OrderType()==OP_BUY&&OrderMagicNumber()==Buy_MN&&OrderSymbol()==Symbol()){
      
      if( ( CLbuy_D > OrderOpenPrice() ) ||(Close_all_Orders_after==true&&Hour()>=Close_after_Hour&&Minute()>=Close_after_Min) ){
      
        if(IsTradeAllowed())OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Red);
          
        if(IsTradeContextBusy())Sleep(Sl_MS);
          
        LotsBuy = OrderLots() + LotsPlus;

} } } }




for(int l=OrdersTotal()-1;l>=0;l--){
  if(OrderSelect(l,SELECT_BY_POS)){
    if(OrderType()==OP_SELL&&OrderMagicNumber()==Sell_MN&&OrderSymbol()==Symbol()){
      
      if( ( CLsel_D < OrderOpenPrice() ) ||(Close_all_Orders_after==true&&Hour()>=Close_after_Hour&&Minute()>=Close_after_Min) ){

        if(IsTradeAllowed())OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Red);
        
        if(IsTradeContextBusy())Sleep(Sl_MS);
        
        LotsSel = OrderLots() + LotsPlus;

} } } }
Angehängte Dateien
Dateityp: mq4 LoSh_AlwInv_Dist_LP_v2.mq4 (20,0 KB, 0x aufgerufen)
  #20 (permalink)  
Alt 02.05.20
Mitglied
 
Registriert seit: Dec 2015
Beiträge: 85
TogoTiger befindet sich auf einem aufstrebenden Ast
Standard

Ich habe das jetzt nochmals durch den Backtest geschickt mit EURUSD über den Monat April und dabei keine Einstellung gefunden, die auch nur annähernd dein Resultat gebracht hat. Alle Durchläufe haben den Monat mit Verlust abgeschlossen, selbst ohne Spread.
Dann habe ich noch eingebaut, dass Lotsize zurückgesetzt wird, sobald eine Order mit Verlust schliesst. Dann beginnt es wieder bei 0.01. Wenn du das nicht machst, wir Lotsize immer grösser und grösser (mit jedem Trade im Gewinn) und dein Konto ist nach 2 Tagen platt.
Was hast du als SL und TP genommen?

Geändert von TogoTiger (02.05.20 um 15:06 Uhr)
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 16:14 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.
-----------------------------------------------------------------------------------------------------------------------------