Zum Inhalt springen
View in the app

A better way to browse. Learn more.

#T/N/X/T

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Hilfe bei einem Expert Advisor

Geschrieben
MQL 4 (Metatrader) Code

int MagicNumber = 1231231232;
double LotSize = 0.01;
extern int Risk_Enable_1_ON_0_OFF = 1;
extern int Risk_Percent = 10;
extern int MaxOpenTrades = 7;
extern int EntryDistance = 20;
extern int TakeProfit = 10;

int i, LimitAction, BuyAction;

int start()
{
int TotalBuy=0;
if(OrdersTotal()>0){
for(int a=1; a<=OrdersTotal(); a++)
{if (OrderSelect(a-1,SELECT_BY_POS)==true)
{if(OrderMagicNumber()==MagicNumber && OrderType()==OP_BUY)
TotalBuy++;
}}}


if (Open[i+1]>Close[i+1] && Open[i+2]>Close[i+2] && Open[i+3]>Close[i+3])
{OrderSend(Symbol(),OP_BUYLIMIT,LotsOptimized(),Ask-(EntryDistance*0.0001),0,Ask-(100*0.0001),(Ask-(EntryDistance*0.0001)+(TakeProfit*0.0001)),"",MagicNumber,0);
}
}


void ClosePendingOrder() {
int total = OrdersTotal();
for(int i=total-1;i>=5;i--)
{
OrderSelect(i, SELECT_BY_POS);
int type = OrderType();

bool result = false;

switch(type)
{
case OP_BUYLIMIT :
case OP_BUYSTOP :
case OP_SELLLIMIT :
case OP_SELLSTOP : result = OrderDelete( OrderTicket() );
}

if(result == false)
{
Alert("Order " , OrderTicket() , " failed to close. Error:" , GetLastError() );
Sleep(3000);
}
}

return(0);
}
double LotsOptimized()
{
double lot=LotSize;
if (Risk_Enable_1_ON_0_OFF==1)
{double risk=NormalizeDouble(Risk_Percent/100.0,2);
//---- select lot size
lot=NormalizeDouble(AccountFreeMargin()*risk/1250.0,2);
//---- return lot size
if(lot<0.01) lot=LotSize;
if(lot>50.00) lot=50.00;}

return(lot);
}


Ich weiß ist nicht die beste Programmierung aber funzt soweit.
Also es wird ja alles so gemacht wie es soll aber ich möchte das er nicht jedes BUYLIMIT Kauft, kann man eine begrenzung machen das zum beispiel nur max 70% des Kontostandes in Trades umgesetzt wird? nach dem ein trad einen t/p hat kann ja ein andere trade geöffnet werden


also ich habe das schon mal mit einem buystop probiert aber es hat nicht geklappt

Bearbeitet von BASCH86A

Featured Replies

Geschrieben

Hallo erstmal und willkommen bei Tom-Next :wacko1:

 

Gehörst du zu zufällig zu den Leuten, die in einen kleinen Laden reinstürmen, nicht guten Tag sagen und dann freundlich bedient werden möchten ? :no: :laugh:

 

Also nochmal von vorne.

 

Hallo BASCH86A :Howdy:

Freut mich das du zu Tom-Next gefunden hast, wir haben hier ne´Menge guten Content und noch mehr sehr nette und hilfsbereite User an Bord.

 

Für deine Frage findet sich sicherlich ein Programmierer der dir darauf antwortet.

Deinen Code in mql einzubetten war schon eine sehr gute Idee, noch besser ist in Code Tags, ist dann noch leichter zu lesen.

 

bullet_go.png

int MagicNumber = 1231231232;
double LotSize = 0.01;
extern int Risk_Enable_1_ON_0_OFF = 1;
extern int Risk_Percent = 10;
extern int MaxOpenTrades = 7;
extern int EntryDistance = 20;
extern int TakeProfit = 10;

int i, LimitAction, BuyAction;

int start() 
{
int TotalBuy=0;
if(OrdersTotal()>0){
 for(int a=1; a<=OrdersTotal(); a++)         
    {if (OrderSelect(a-1,SELECT_BY_POS)==true)
    {if(OrderMagicNumber()==MagicNumber && OrderType()==OP_BUY)
     TotalBuy++;
     }}}


if (Open[i+1]>Close[i+1] && Open[i+2]>Close[i+2] && Open[i+3]>Close[i+3])
{OrderSend(Symbol(),OP_BUYLIMIT,LotsOptimized(),Ask-(EntryDistance*0.0001),0,Ask-(100*0.0001),(Ask-(EntryDistance*0.0001)+(TakeProfit*0.0001)),"",MagicNumber,0);
}
}


void ClosePendingOrder() {
int total = OrdersTotal();
 for(int i=total-1;i>=5;i--)
 {
   OrderSelect(i, SELECT_BY_POS);
   int type   = OrderType();

   bool result = false;
   
   switch(type)
   {
     case OP_BUYLIMIT  :
     case OP_BUYSTOP   :
     case OP_SELLLIMIT :
     case OP_SELLSTOP  : result = OrderDelete( OrderTicket() );
   }
   
   if(result == false)
   {
     Alert("Order " , OrderTicket() , " failed to close. Error:" , GetLastError() );
     Sleep(3000);
   }  
 }
 
 return(0);
}
double LotsOptimized()
  {
  double lot=LotSize;
  if (Risk_Enable_1_ON_0_OFF==1)
  {double risk=NormalizeDouble(Risk_Percent/100.0,2);
//---- select lot size
  lot=NormalizeDouble(AccountFreeMargin()*risk/1250.0,2);
//---- return lot size
  if(lot<0.01) lot=LotSize;
  if(lot>50.00) lot=50.00;}
  
  return(lot);
  }

 

Ich wünsche dir viel Spaß bei uns !

Geschrieben

... kann man eine begrenzung machen das zum beispiel nur max 70% des Kontostandes in Trades umgesetzt wird?

Hallo erstmal, und herzlich willkommen. :Howdy:

 

Schau dir mal dieses Script aus der MQL-Codebase an:

 

//+------------------------------------------------------------------+

//| RiskAdvisor.mq4 |

//| Copyright © 2006, Arunas Pranckevicius (T-1000), Lithuania |

//| irc://irc.omnitel.net |

//+------------------------------------------------------------------+

#property copyright "Copyright © 2006, Arunas Pranckevicius (T-1000), Lithuania"

#property link "irc://irc.omnitel.net/forex"

 

http://codebase.mql4.com/1775

 

Du mußt das unter {dein Mql4-Verzeichnis}/experts/scripts kopieren.

 

In diesem Script sind alleFunktionen, die Du brauchst.

Damit kannst Du erstmal experimentieren - also Prozentsatz setzen, paar Orders händisch eröffnen, ein Comment zeigt an wieviel Lot's du dann eröffnen darfst.

Danach kannst Du probieren, die entsprechenden Funktionen in Deinen EA eizubauen.

 

Viel Erfolg !

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

Account

Navigation

Suche

Suche

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.