@piptrade, Du kannst einen schon beschäftigen.
Code:
extern string LastDays = "Today=0, Yesterday=1 aso.";
extern int Shift = 0;
//+------------------------------------------------------------------+
// 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() {
//+--- 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(); //hier fehlt laut Deklaration der Funktion ein int-Parameter in den Klammern!
}
//+------------------------------------------------------------------+
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(); //Zeile korrigiert
Summe += x;
}
}
}
Print("Summe", Summe);
}
return(Summe);
}
void paintProf(double prof) {
}
void paintLoss(double prof) {
}
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 -------------------------------------------------------------------------------------------------------------+
So nun habe ich den Code so umgeschrieben, wie vorher beschrieben, die Funktion Profit wurde extern deklariert.
Deklarierungen von Funktionen dürfen in keinen anderen Funktioen stehen.
Auch diese Zeile kann der Compiler nicht bearbeiten:
x = OrderProfit()
Da fehlt nicht viel, aber etwas Entscheidendes, nämlich das ;
Beim Programmieren wird der kleinste Syntaxfehler geahndet.
Diese Funktionen waren immer noch nicht deklariert und müssen mit Leben erfüllt werden.
paintsumme(); //hier fehlt laut Deklaration der Funktion ein int-Parameter in den Klammern!
(das ist in diesem Code jetzt noch der einzige Syntaxfehler!!)
Die init()-Funktion funktioniert auich nur so richtig:
int init() {
initGraph();
if (IsConnected()) main();
return(0);
}
Und alles noch etwas aufgehübscht.
So, nu is aber gut.
traderdoc