Einzelnen Beitrag anzeigen
  #23 (permalink)  
Alt 01.02.17
piptrade piptrade ist offline
Mitglied
 
Registriert seit: Sep 2012
Beiträge: 157
piptrade befindet sich auf einem aufstrebenden Ast
Standard

Lieber traderdoc,

ich mühe mich redlich, - und das seit Stunden !
Im Allgemeinen hast Du schon recht, alle wollen sich einen EA "basteln" aber keiner will dessen Sprache verstehen.
Im Besonderen gibt es aber auch User, welche die Sprache erlernen und richtig anwenden wollen. - Und das versuche ich seit nunmehr einem Jahr (Stück für Stück - und immer, wenn es die Zeit erlaubt). Momentan muss ich mich aber mit "no body is perfect" zufrieden geben !
Was meine aktuellen Bemühungen angeht, bin ich jetzt HIER angelangt:

Code:
extern string LastDays = "Today=0, Yesterday=1 aso.";
extern int       Shift = 0;

double Profit();
int Line();
int Text();

//+------------------------------------------------------------------+
//     CustomIndicator initialization function                       |       
//+------------------------------------------------------------------+
int init()     {
   initGraph();
      {
      if (IsConnected()) main();
      }
   return(0);  }
//+------------------------------------------------------------------+
//     CustomIndicator deinitialization function                     |       
//+------------------------------------------------------------------+
int deinit()   {
   ObjectsDeleteAll(0,OBJ_LABEL);
   return(0);  }
//+------------------------------------------------------------------+
//     CustomIndicator start function                                |       
//+------------------------------------------------------------------+
int start()    {
   if (IsConnected()) main();
   return(0);  }
//+------------------------------------------------------------------+
//     CustomIndicator function                                      |       
//+------------------------------------------------------------------+    
void main()    {   
//+--- get Profit() global scope ------------------------------------+
  double Profit()
  {
    double x  = 0;
    double Summe = 0;

    for(int i = OrdersHistoryTotal() - 1 ; i >= 0; i--) 
       { 
       if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
          {
          if (OrderSymbol() == Symbol())
             {
             if (OrderCloseTime() >= iTime(NULL, PERIOD_D1, Shift) &&
                 OrderCloseTime() <  iTime(NULL, PERIOD_D1, Shift-1))
                {
                x = OrderProfit()
                Summe += x; 
                }
             }
          }
          Print("Summe", Summe);
       }
       return(Summe); 
    }
    
//+--- Unterscheidg. Prof/Loss bzw. CLRgreen_up/CLRred_down
  double prof = Profit();
                                       //   Rückgabewerte für Variablen  
  if(prof >= 0)   paintProf(prof);     //  (prof) für Weiterverarbtg. unter paintProf
  if(prof <  0)   paintLoss(prof);     //  (prof) für Weiterverarbtg. unter paintLoss 

//+--- paint-Bereich ------------------------------------------------+
  paintLine();
  paintSign();
  paintsumme();  
}
//+------------------------------------------------------------------+    
void initGraph()   {
  ObjectsDeleteAll(0,OBJ_LABEL);
  objectCreate("Line",10,17,"-----------------------------------",10,"Arial",LightSlateGray);  //  Line
  objectCreate("Sign",10,7,"PROFIT(euro):",9,"Arial Narrow",LightSlateGray);                   //  Text
  objectCreate("Summe",134,25,DoubleToStr(9,1),10,"Arial Narrow",Silver);                      //  Wert / DoubleToStr(9,1) (value,digits)
  objectCreate("Prof",130,67);                                                                 //  Rectangle 1 green
  objectCreate("Loss",130,61);                                                                 //  Rectangle 2 red   
  WindowRedraw();
  }  
//+--- Label, Positionierg., Hintergrundfarbe und Textvorgaben ----------------------------------------------------------------+
void objectCreate(string name,int x,int y,string text="-",int size=12,
                  string font="Arial",color colour=CLR_NONE)   {
   ObjectCreate(name,OBJ_LABEL,0,0,0);
   ObjectSet(name,OBJPROP_CORNER,3); 
   ObjectSet(name,OBJPROP_COLOR,colour);
   ObjectSet(name,OBJPROP_XDISTANCE,x);
   ObjectSet(name,OBJPROP_YDISTANCE,y);
   ObjectSetText(name,text,size,font,colour);
   }
//+--- Zuordnung Farb-Eigenschaften --------------------------------------------------------------------------------------------+  
void paintLine()   {
   ObjectSet("ZeroLine",OBJPROP_COLOR,LightSlateGray);
   }
void paintSign()   {
   ObjectSet("Sign",OBJPROP_COLOR,LightSlateGray);   
   }
void paintsumme(int value)   {
   if(value >= 0)
   ObjectSetText("Summe",DoubleToStr(value,0),10,"Arial Black",Green);    //  für sich ändernde Wert-Angabe + summe in EUR
   if(value <  0)
   ObjectSetText("Summe",DoubleToStr(value,0),10,"Arial Black",Maroon);   //  für sich ändernde Wert-Angabe - summe in EUR   
   }
void paintM1(double value)   {
   if (value >= 0) 
   ObjectSet("Prof",OBJPROP_COLOR,Green);                                 //  Rectangle Prof
//   ObjectSetText("...",DoubleToStr(value,0),8,"Arial Narrow",Green);    //  Part 2: für sich ändernde Wert-Angabe in Point/pip
   }
void paintM5(double value)   {
   if (value <  0) 
   ObjectSet("Loss",OBJPROP_COLOR,Maroon);                                //  Rectangle Loss
//   ObjectSetText("...",DoubleToStr(value,0),8,"Arial Narrow",Maroon);   //  Part 2: für sich ändernde Wert-Angabe in Point/pip
   }
//+--- The PRG-End -------------------------------------------------------------------------------------------------------------+
Sieht für den Laien vielleicht recht gut aus, ist aber mit 4 Fehlern behaftet:
1. "Profit"-function can be declared only in the globalscope
2. "paintProf" - function not defined
3. "paintLoss" - function not defined und
4. "PaintSumme" - wrong parameters count
Ursprünglich waren es 23 errors und ?? warnings, welche ich ausräumen konnte, - jetzt komme ich aber einfach nicht weiter.
Vielleicht kannst Du nochmals einen Blick darüber werfen und mir mit Deinen Hinweisen zur Seite stehen ?
Wäre richtig toll.

LG. piptrade

PS.: Auf dem angehängten JPG werden die abgeschlossenen Trades (EA arbeitet momentan OHNE Filter!) bereits dargestellt - die programm-technische Umsetzung der manuell eingefügten Grafik ist das Ziel des obigen Codes. So hat man vielleicht eine bessere Vorstellung.
Angehängte Grafiken
Dateityp: jpg ANALYTIC_03.jpg (124,9 KB, 9x aufgerufen)