Hilfe bei der Codierung - Seite 629

 
traderduke:

mladen & mrtools

Ich habe einen EA, der sich selbst mit Trades sprengt. Ich benötige Hilfe bei der Erstellung eines Void oder einer Funktion, die zu einem bestehenden EA hinzugefügt werden kann. Diese Funktion muss adressieren:

input bool doBasketExit = true; // Prüfung auf Basket Exit Bedingungen
input double BasketTP = 250.0; // Basket Take Profit (Kontowährung) Das Chart-Paar
input double BasketSL = -100.0; // Basket Stop Loss (Kontowährung) Das Chart-Paar

Ich betreibe 9 Paare/Charts mit aggressivem EA auf dem H1 und möchte auf jedem der 9 Charts ein paar-spezifisches Basket Trading.
Hier ist, was mir gerade passiert ist. 9 Charts laufen, 3 Charts sind im Handel mit, natürlich, 3 separate Paare, die jeweils mit 15 Trades, ja 45 Trades offen, 2 sind im Gewinn & eine ist schlecht verlieren. Ich suche nach einer Möglichkeit, jede Gruppe/jedes Paar der 15 separat zu addieren und jede Gruppe gegen einen Basket SL & TP Grenzen zu reiben. Ich fand einen Korb eingerichtet, aber natürlich braucht es Verfeinerung. Der Trick ist, das gleiche Paar aus der Spalte Order Profit Trade zu addieren. Indem ich auf einem Chart mit einem bestimmten Paar bin, dachte ich, ich hätte eine Lücke gefunden, aber es ist ziemlich kompliziert. Die Funktion muss irgendwie lesen die OrderProfit von Pair???

Siehe meinen Code als ein schlechtes Beispiel;

void closeTrades( CURRENCY* &currencies[] ) {
// Prüfung auf Basket Exit
if ( doBasketExit ) {
double basketProfit = getBasketProfit();
if ( ( ( BasketTP > 0.0 ) && ( basketProfit > BasketTP ) ) ||
( BasketSL < 0.0 ) && ( basketProfit < BasketSL ) ) ) {
closeAll();
}
}
double getBasketProfit() {
double basketProfit = 0.0;
for (int iOrder=OrdersTotal()-1; iOrder >= 0; iOrder--) {
if (OrderSelect(iBestellung,SELECT_BY_POS,M ODE_TRADES)) {
if ( OrderMagicNumber() == MagicNumber ) {
wenn ( (OrderType() == OP_BUY) || (OrderType() == OP_SELL) ) {
basketProfit += OrderProfit() + OrderSwap() + OrderCommission();
}
}
}
}
return(basketProfit);
}

void closeAll() {
double closePreis;
string symbolName;
int Ergebnis;
for (int iOrder=OrdersTotal()-1; iOrder >= 0; iOrder--) {
if (OrderSelect(iOrder,SELECT_BY_POS,M ODE_TRADES)) {
if ( OrderMagicNumber() == MagicNumber ) {
wenn ( (OrderType() == OP_BUY) || (OrderType() == OP_SELL) ) {
symbolName = OrderSymbol();
closePrice = ( OrderType() == OP_BUY ) ? MarketInfo( symbolName, MODE_BID ) : MarketInfo( symbolName, MODE_ASK );
Ergebnis = OrderCloseReliable(OrderTicket(), OrderLots(), closePrice, 50 );
}
}



Ich wäre Ihnen sehr dankbar, wenn Sie sich das ansehen würden.

Danke
Ray

Ray


Sie brauchen eine Art "Mutter-EA", der alle magischen Zahlen kennt, die von anderen EAs gehandhabt werden, und der dann die von Ihnen benötigten "On-Group"-Operationen durchführt

 
Herr MLADEN, bitte überprüfen Sie Ihren Posteingang, Sir
 
mladen:

Versuchen Sie, Folgendes zu tun:

Anstelle von

Danke Mladen, ich habe den Code etwas angepasst und es funktioniert jetzt.
 
mladen:

Ray


Sie brauchen eine Art "Mutter-EA", der alle magischen Zahlen kennt, die von anderen EAs gehandhabt werden, und der dann die von Ihnen benötigten Operationen "auf der Gruppe" ausführt

mladen

danke für Ihre Gedanken zu diesem Thema. Also NEIN.

Nochmals vielen Dank


Ray

 

Ich habe versucht, den Pfeil nach dem Schließen der Signalkerze erscheinen zu lassen, um ein erneutes Malen zu vermeiden, aber alles ohne Erfolg.bitte helfen Sie mir MR. TOOLS und MLADEN, unten ist der Code.

//+------------------------------------------------------------------+
//|                                              signalindicator.mq4 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 4
#property  indicator_color1 Blue
#property  indicator_color2 Yellow
#property  indicator_color3 Aqua
#property  indicator_color4 Red

extern int FastEMA = 5;
extern int SlowEMA = 6;
extern int RSIPeriod = 7;
extern bool Alerts = TRUE;
double buffer_1[];
double buffer_2[];
double arrow_1[];
double arrow_2[];
int a = 0;
int b = 0;
double x = 0.0;
double y = 0.0;

int init() {
   SetIndexStyle(0, DRAW_LINE);
   SetIndexBuffer(0, buffer_1);
   SetIndexStyle(1, DRAW_LINE);
   SetIndexBuffer(1, buffer_2);
   SetIndexStyle(2, DRAW_ARROW, 0,4);
   SetIndexArrow(2, 217);
   SetIndexBuffer(2, arrow_1);
   SetIndexEmptyValue(2, 0.0);
   SetIndexStyle(3, DRAW_ARROW, 0,4);
   SetIndexArrow(3, 218);
   SetIndexBuffer(3, arrow_2);
   SetIndexEmptyValue(3, 0.0);
   return (0);
}

int deinit() {
   return (0);
}

int start() {
   int counted_bars = IndicatorCounted();
   double irsi_1 = 0;
   bool c = FALSE;
   double price_10 = 0;
   if (counted_bars < 0) return (-1);
   if (counted_bars > 0) counted_bars--;
   int li_0 = Bars - counted_bars;
   for (int i = 0; i < li_0; i++) {
      buffer_1[i] = iMA(NULL, 0, FastEMA, 0, MODE_EMA, PRICE_CLOSE, i);
      buffer_2[i] = iMA(NULL, 0, SlowEMA, 0, MODE_EMA, PRICE_CLOSE, i);
      irsi_1 = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, i);
      x = buffer_1[i] - buffer_2[i];
      if (x > 0.0 && irsi_1 > 50.0) a = 1;
      else
         if (x < 0.0 && irsi_1 < 50.0) a = 2;
      if (a == 1 && b == 2) {
         arrow_2[i - 1] = High[i - 1] - 5.0 * Point;
         c= TRUE;
         price_10 = Ask;
      } else {
         if (a == 2 && b == 1) {
            arrow_1[i - 1] = Low[i - 1] - 5.0 * Point;
            c = TRUE;
            price_10 = Bid;
         }
      }
      b = a;
      y = x;
   }
   if (Alerts && c) {
      PlaySound("alert.wav");
      if (b == 2) Alert(Symbol(),"  M",Period(),"Buy at " + price_10 + "!!", "Entry Point", 0);
      else
         if (b == 1) Alert(Symbol(),"  M",Period(),"Sell at " + price_10 + "!!", "Entry Point", 0);
      c= FALSE;
   }
   return (0);
}
 
hallo

Hallo mladen

Ich brauche ITM X-Gen Daily Scalper Indicator.mq4

Helfen Sie mir

Danke

 
alozard:

Hallo mladen

Ich brauche ITM X-Gen Daily Scalper Indicator.mq4

Helfen Sie mir

Danke

alozard

Dieser Indikator ist ein umbenannter Indikator meiner Centered TMA Bands. Sie können ihn hier finden: https: //www.mql5.com/en/forum/181241

 
Herr mladen, bitte helfen Sie mir mit der Version der obigen Codes.
 

Herr Mladen, bitte schauen Sie sich die unten stehenden Codes an, der Pfeil erscheint erst in der Live-Ansicht, wenn ich den Zeitrahmen gewechselt habe.


//+------------------------------------------------------------------+
//|                                              signalindicator.mq4 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 4
#property  indicator_color1 Blue
#property  indicator_color2 Yellow
#property  indicator_color3 Aqua
#property  indicator_color4 Red

#property  indicator_color4 Red

extern int FastEMA = 5;
extern int SlowEMA = 6;
extern int RSIPeriod = 7;
extern bool Alerts = TRUE;
double buffer_1[];
double buffer_2[];
double arrow_1[];
double arrow_2[];
int a = 0;
int b = 0;
double x = 0.0;
double y = 0.0;
 double alertshow;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   SetIndexStyle(0, DRAW_NONE);
   SetIndexBuffer(0, buffer_1);
   SetIndexStyle(1, DRAW_NONE);
   SetIndexBuffer(1, buffer_2);
   SetIndexStyle(2, DRAW_ARROW, 0,4);
   SetIndexArrow(2, 241);
   SetIndexBuffer(2, arrow_1);
   SetIndexEmptyValue(2, 0.0);
   SetIndexStyle(3, DRAW_ARROW, 0,4);
   SetIndexArrow(3, 242);
   SetIndexBuffer(3, arrow_2);
   SetIndexEmptyValue(3, 0.0);

   return (0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit()
  {
   return (0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   int counted_bars = IndicatorCounted();
   double irsi_1 = 0;
   int li_0;
   bool c = FALSE;
   double price_10 = 0;
   if (counted_bars < 0) return (-1);
   if (counted_bars > 0) counted_bars--;
   if(counted_bars==0)
      li_0=MathMin(Bars-10-1,Bars-MathMax(FastEMA,SlowEMA)-1);
   else
      li_0=Bars-counted_bars;
   for (int i = 0; i < li_0; i++) {
      buffer_1[i] = iMA(NULL, 0, FastEMA, 0, MODE_EMA, PRICE_CLOSE, i);
      buffer_2[i] = iMA(NULL, 0, SlowEMA, 0, MODE_EMA, PRICE_CLOSE, i);
      irsi_1 = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, i);
      x = buffer_1[i] - buffer_2[i];
      if (x > 0.0 && irsi_1 > 50.0) a = 1;
      else
         if (x < 0.0 && irsi_1 < 50.0) a = 2;
      if (a == 1 && b == 2) {
         arrow_2[i - 1] = High[i - 1] - 5.0 * Point;
         c= TRUE;
         price_10 = Ask;
      } else {
         if (a == 2 && b == 1) {
            arrow_1[i - 1] = Low[i - 1] - 5.0 * Point;
            c = TRUE;
            price_10 = Bid;
         }
      }
      b = a;
      y = x;
   }
   if (Alerts && c) {
      PlaySound("alert.wav");
      if (b == 2)  
      
         if(alertshow<Time[1] && counted_bars!=0)
           {
            PlaySound("news.wav");// buy wav
            Alert(Symbol()," buy signal");
            alertshow=Time[1];
           }
      else
         if (b == 1) if(alertshow<Time[1] && counted_bars!=0)
           {
            PlaySound("news.wav");// buy wav
            Alert(Symbol(),"  sell signal");
            alertshow=Time[1];
           }
   }
//----
   return(prev_calculated);
  }
//+------------------------------------------------------------------+
 
kapoo:

Herr Mladen, bitte schauen Sie sich die unten stehenden Codes an, der Pfeil erscheint erst in der Live-Ansicht, wenn ich den Zeitrahmen gewechselt habe.


kapoo

Wie ich Ihnen schon mehrfach gesagt habe: dieser Indikator ist ein schlechter Repainter und deshalb macht er, was er macht. Mein bester Rat ist, dass Sie ihn vergessen.