Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   Fehler im Code ... finde keine Lösung (http://www.expert-advisor.com/forum/showthread.php?t=4025)

markusrgb 21.01.15 22:13

Fehler im Code ... finde keine Lösung
 
hallo zusammen, :)

Evtl könnt ihr mir ja weiter helfen ...

ich versuche mich jetzt seit ein paar wochen auch mal im Programmieren mit denn EA´s

hab vor kurzen im Netz mal ne Anleitung für einen Code gefunden und hab denn auch gleich mal ausprobieren wollen .... dort scheint er auch gut zu funktioneren
nur leider bei mir nicht :confused:

Benutze denn MetaTrader 4
Version 4.00 Build 765 (12Dez 2014)
mit dem MetaEditor
Version 5.00 Build 1035 (11Dez 2014)

bin mir sicher das ich alles richtig geschrieben hab, habs auch mehrmals kontrolliert und auch selber schon ein bishen dran rumgebastelt
aber bekomm es einfach nicht zum laufen

könnte mir vieleicht jemad einen Hinweis geben was daran nicht stimmt?

habe 5 FehlerMeldungen und 2 Warnungen:

'StoppLoss' - undeclared identifier dax test 1.mq4 175 7
possible loss of data due to type conversion dax test 1.mq4 175 17
'OrderAngepasst' - undeclared identifier dax test 1.mq4 176 7
'OrderAngepasst' - undeclared identifier dax test 1.mq4 186 7
'TakeProfit' - undeclared identifier dax test 1.mq4 195 7
possible loss of data due to type conversion dax test 1.mq4 195 18
'OrderAngepasst' - undeclared identifier dax test 1.mq4 196 7
5 error(s), 2 warning(s)



Code:

//+------------------------------------------------------------------+
//|                                                  Signal Dax.mq4 |
//|                                                              xxx |
//|                                            https://www.mql4.com |
//+------------------------------------------------------------------+
#property copyright "xxx"
#property link      "https://www.mql4.com"
#property version  "1.00"
#property strict

//+------------------------------------------------------------------+
// --- Variablen vom Benutzer Festlegen: (Global)
//+------------------------------------------------------------------+
extern double HandelsLots = 0.1; // Größe der Handels Lots
extern double SL_Prozent = 0.5; // StopLoos in Prozent
extern double TP_Prozent = 1.5; // TakeProfit in Prozent
extern int MagicNummer = 12345;
//+------------------------------------------------------------------+
// --- Variablen fest Festlegen: (Global)
//+------------------------------------------------------------------+
datetime PeriondenStartZeit; // zum feststellen einer neuen Perionde
bool NeuePeriodeBegonnen;
bool LongSignal;
bool ShortSignal;
int LongOrder;
int ShortOrder;


// --- String für Dax30 festlegen
string syDax = "EUREX.FDX";

//+------------------------------------------------------------------+
//| Expert initialization function                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
  PeriondenStartZeit = Time[0];
 
//---
  return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function - Ausführen beim Ende von EA    |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
 
 
  }
//+------------------------------------------------------------------+
//| Expert tick function  (StartZeit                                          |
//+------------------------------------------------------------------+
void OnTick()
{
//---

// Überprüfen ob ein neuer Periodenbeginn vorliegt
if (PeriondenStartZeit != Time[0])
{
NeuePeriodeBegonnen = true;
PeriondenStartZeit = Time[0];
}
else NeuePeriodeBegonnen = false;

 
// --- MA20 für Dax Abfragen
double maDAX = iMA(syDax,0,20,0,MODE_SMA,PRICE_CLOSE,0);


// ---Aktuellen BID Kurs für Dax Abfragen (letzter Kurs?)
double bidDax  = MarketInfo(syDax, MODE_BID);



// Anzeige auf Bildschirm
Print("DAX 30 MA Kurve =",maDAX); 


//+------------------------------------------------------------------+
//| HandelsSignale ermitteln                                        |
//+------------------------------------------------------------------+ 


if (NeuePeriodeBegonnen == true)
{

    //  --- Kauf Signal ---

    if (bidDax>maDAX)
    {
    LongSignal = true;
    }
    else LongSignal = false;

    // --- Verkauf Signal ---

    if (bidDax<maDAX)
    {
    ShortSignal = true;
    }
    else ShortSignal = false;
}
else
{
LongSignal = false;
ShortSignal = false;
}


//+------------------------------------------------------------------+
//| Kauf / Verkauf Signal umsetzen                                  |
//+------------------------------------------------------------------+ 
 
// Kaufen
if(LongSignal == true)
{
      // Evtl Short Order vorher Schließen
      if(ShortOrder>0)
          {
            if(OrderSelect(ShortOrder,SELECT_BY_TICKET)==true)
            {
            bool ShortOrderGeschlossen = OrderClose(ShortOrder,OrderLots(),Ask,10,Blue);
            if (ShortOrderGeschlossen==true) ShortOrder=0;
            }
          }
      // Jetzt erst Long Order eröffnen
      while(LongOrder<=0)
          {
          LongOrder = OrderSend(syDax,OP_BUY,HandelsLots,Ask,10,0,0,"Dax30 LONG",MagicNummer,0,Green);
          }
}

// Verkaufen
if (ShortSignal == true)
{
      // Evtl Long Order vorher Schließen
    if (LongOrder>0)
        {
          if(OrderSelect(LongOrder,SELECT_BY_TICKET)==true)
          {
          bool LongOrderGeschlossen = OrderClose(LongOrder,OrderLots(),Bid,10,Blue);
          if (LongOrderGeschlossen==true) LongOrder=0;
          }
        }
      // Verkaufs Order jetzt eröffnen
      while(ShortOrder<=0)
        {
        ShortOrder = OrderSend(syDax,OP_SELL,HandelsLots,Bid,10,0,0,"Dax30 SHORT",MagicNummer,0,Red);
        }
}

//+------------------------------------------------------------------+
//|StopLoos und TakeProfit setzen                                  |
//+------------------------------------------------------------------+ 
 


// SL bei Long Deals setzen
if (OrderSelect(LongOrder,SELECT_BY_TICKET)==true)
{
    if(OrderCloseTime()==0 && OrderStopLoss()==0)
      {
      double StoppLoss = NormalizeDouble(OrderOpenPrice()/(1+(SL_Prozent/100)),Digits);
      bool OrderAngepasst = OrderModify(OrderTicket(),OrderOpenPrice(),StoppLoss,OrderTakeProfit(),0,Yellow);
      }
}

// SL bei Short Deals setzen
if (OrderSelect(ShortOrder,SELECT_BY_TICKET)==true)
{
    if(OrderCloseTime()==0 && OrderStopLoss()==0)
      {
      StoppLoss = NormalizeDouble(OrderOpenPrice()*(1+(SL_Prozent/100)),Digits);
      OrderAngepasst = OrderModify(OrderTicket(),OrderOpenPrice(),StoppLoss,OrderTakeProfit(),0,Yellow);
      }
}

// TP bei Long Deals setzen
if (OrderSelect(LongOrder,SELECT_BY_TICKET)==true)
{
    if(OrderCloseTime()==0 && OrderTakeProfit()==0)
      {
      double TakeProfit = NormalizeDouble(OrderOpenPrice()*(1+(TP_Prozent/100)),Digits);
      OrderAngepasst = OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),TakeProfit,0,Orange);
      }
}

// TP bei Short Deals setzen
if (OrderSelect(ShortOrder,SELECT_BY_TICKET)==true)
{
    if(OrderCloseTime()==0 && OrderTakeProfit()==0)
      {
      TakeProfit = NormalizeDouble(OrderOpenPrice()/(1+(TP_Prozent/100)),Digits);
      OrderAngepasst = OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),TakeProfit,0,Orange);
      }
}

// Ticketnummern nach schließen auf 0 zurücksetzen
if(OrderSelect(LongOrder,SELECT_BY_TICKET)==true)
{
  if(OrderTicket()>0 && OrderCloseTime()>0) LongOrder=0;
}

if(OrderSelect(ShortOrder,SELECT_BY_TICKET)==true)
{
  if(OrderTicket()>0 && OrderCloseTime()>0) ShortOrder=0;
}


//+------------------------------------------------------------------+
}

für Hilfe währ ich dankbar

:D

markusrgb 22.01.15 21:35

link
 
denn Code hab ich übrigens hier gefunden:


https://www.youtube.com/watch?v=nQFB...ghzenyeOw_Y68T

bin mir nicht ganz sicher ob das Problem evtl an meiner
MetaEditor Version 5.00 Build 1035 liegt :confused:

mich würde auch mal Interessieren ob der Code bei jemand anderem Funktioniert
möchte das Problem schon gerne gelöst haben ... würde nämlich gerne damit weiter arbeiten und ihn dann noch weiter ausbauen

:D

traderdoc 22.01.15 23:20

Code:

//+------------------------------------------------------------------+
//|                                                  Signal Dax.mq4 |
//|                                                              xxx |
//|                                            https://www.mql4.com |
//+------------------------------------------------------------------+
#property copyright "xxx"
#property link      "https://www.mql4.com"
#property version  "1.00"
#property strict

//+------------------------------------------------------------------+
// --- Variablen vom Benutzer Festlegen: (Global)
//+------------------------------------------------------------------+
extern double HandelsLots = 0.1; // Größe der Handels Lots
extern double SL_Prozent = 0.5; // StopLoos in Prozent
extern double TP_Prozent = 1.5; // TakeProfit in Prozent
extern int MagicNummer = 12345;
//+------------------------------------------------------------------+
// --- Variablen fest Festlegen: (Global)
//+------------------------------------------------------------------+
datetime PeriondenStartZeit; // zum feststellen einer neuen Perionde
bool NeuePeriodeBegonnen;
bool LongSignal;
bool ShortSignal;
int LongOrder;
int ShortOrder;


// --- String für Dax30 festlegen
string syDax = "EUREX.FDX";

//+------------------------------------------------------------------+
//| Expert initialization function                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
  PeriondenStartZeit = Time[0];
 
//---
  return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function - Ausführen beim Ende von EA    |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
 
 
  }
//+------------------------------------------------------------------+
//| Expert tick function  (StartZeit                                          |
//+------------------------------------------------------------------+
void OnTick()
{
//---

double StoppLoss;
double TakeProfit;
bool OrderAngepasst;

// Überprüfen ob ein neuer Periodenbeginn vorliegt
if (PeriondenStartZeit != Time[0])
{
NeuePeriodeBegonnen = true;
PeriondenStartZeit = Time[0];
}
else NeuePeriodeBegonnen = false;

 
// --- MA20 für Dax Abfragen
double maDAX = iMA(syDax,0,20,0,MODE_SMA,PRICE_CLOSE,0);


// ---Aktuellen BID Kurs für Dax Abfragen (letzter Kurs?)
double bidDax  = MarketInfo(syDax, MODE_BID);



// Anzeige auf Bildschirm
Print("DAX 30 MA Kurve =",maDAX); 


//+------------------------------------------------------------------+
//| HandelsSignale ermitteln                                        |
//+------------------------------------------------------------------+ 


if (NeuePeriodeBegonnen == true)
{

    //  --- Kauf Signal ---

    if (bidDax>maDAX)
    {
    LongSignal = true;
    }
    else LongSignal = false;

    // --- Verkauf Signal ---

    if (bidDax<maDAX)
    {
    ShortSignal = true;
    }
    else ShortSignal = false;
}
else
{
LongSignal = false;
ShortSignal = false;
}


//+------------------------------------------------------------------+
//| Kauf / Verkauf Signal umsetzen                                  |
//+------------------------------------------------------------------+ 
 
// Kaufen
if(LongSignal == true)
{
      // Evtl Short Order vorher Schließen
      if(ShortOrder>0)
          {
            if(OrderSelect(ShortOrder,SELECT_BY_TICKET)==true)
            {
            bool ShortOrderGeschlossen = OrderClose(ShortOrder,OrderLots(),Ask,10,Blue);
            if (ShortOrderGeschlossen==true) ShortOrder=0;
            }
          }
      // Jetzt erst Long Order eröffnen
      while(LongOrder<=0)
          {
          LongOrder = OrderSend(syDax,OP_BUY,HandelsLots,Ask,10,0,0,"Dax30 LONG",MagicNummer,0,Green);
          }
}

// Verkaufen
if (ShortSignal == true)
{
      // Evtl Long Order vorher Schließen
    if (LongOrder>0)
        {
          if(OrderSelect(LongOrder,SELECT_BY_TICKET)==true)
          {
          bool LongOrderGeschlossen = OrderClose(LongOrder,OrderLots(),Bid,10,Blue);
          if (LongOrderGeschlossen==true) LongOrder=0;
          }
        }
      // Verkaufs Order jetzt eröffnen
      while(ShortOrder<=0)
        {
        ShortOrder = OrderSend(syDax,OP_SELL,HandelsLots,Bid,10,0,0,"Dax30 SHORT",MagicNummer,0,Red);
        }
}

//+------------------------------------------------------------------+
//|StopLoos und TakeProfit setzen                                  |
//+------------------------------------------------------------------+ 
 


// SL bei Long Deals setzen
if (OrderSelect(LongOrder,SELECT_BY_TICKET)==true)
{
    if(OrderCloseTime()==0 && OrderStopLoss()==0)
      {
      StoppLoss = NormalizeDouble(OrderOpenPrice()/(1+(SL_Prozent/100)),Digits);
      OrderAngepasst = OrderModify(OrderTicket(),OrderOpenPrice(),StoppLoss,OrderTakeProfit(),0,Yellow);
      }
}

// SL bei Short Deals setzen
if (OrderSelect(ShortOrder,SELECT_BY_TICKET)==true)
{
    if(OrderCloseTime()==0 && OrderStopLoss()==0)
      {
      StoppLoss = NormalizeDouble(OrderOpenPrice()*(1+(SL_Prozent/100)),Digits);
      OrderAngepasst = OrderModify(OrderTicket(),OrderOpenPrice(),StoppLoss,OrderTakeProfit(),0,Yellow);
      }
}

// TP bei Long Deals setzen
if (OrderSelect(LongOrder,SELECT_BY_TICKET)==true)
{
    if(OrderCloseTime()==0 && OrderTakeProfit()==0)
      {
      TakeProfit = NormalizeDouble(OrderOpenPrice()*(1+(TP_Prozent/100)),Digits);
      OrderAngepasst = OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),TakeProfit,0,Orange);
      }
}

// TP bei Short Deals setzen
if (OrderSelect(ShortOrder,SELECT_BY_TICKET)==true)
{
    if(OrderCloseTime()==0 && OrderTakeProfit()==0)
      {
      TakeProfit = NormalizeDouble(OrderOpenPrice()/(1+(TP_Prozent/100)),Digits);
      OrderAngepasst = OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),TakeProfit,0,Orange);
      }
}

// Ticketnummern nach schließen auf 0 zurücksetzen
if(OrderSelect(LongOrder,SELECT_BY_TICKET)==true)
{
  if(OrderTicket()>0 && OrderCloseTime()>0) LongOrder=0;
}

if(OrderSelect(ShortOrder,SELECT_BY_TICKET)==true)
{
  if(OrderTicket()>0 && OrderCloseTime()>0) ShortOrder=0;
}


//+------------------------------------------------------------------+
}


traderdoc 22.01.15 23:25

Dann nimm das hier:

Code:

//+------------------------------------------------------------------+
//|                                                  Signal Dax.mq4 |
//|                                                              xxx |
//|                                            https://www.mql4.com |
//+------------------------------------------------------------------+
#property copyright "xxx"
#property link      "https://www.mql4.com"
#property version  "1.00"
#property strict

//+------------------------------------------------------------------+
// --- Variablen vom Benutzer Festlegen: (Global)
//+------------------------------------------------------------------+
extern double HandelsLots = 0.1; // Größe der Handels Lots
extern double SL_Prozent = 0.5; // StopLoos in Prozent
extern double TP_Prozent = 1.5; // TakeProfit in Prozent
extern int MagicNummer = 12345;
//+------------------------------------------------------------------+
// --- Variablen fest Festlegen: (Global)
//+------------------------------------------------------------------+
datetime PeriondenStartZeit; // zum feststellen einer neuen Perionde
bool NeuePeriodeBegonnen;
bool LongSignal;
bool ShortSignal;
int LongOrder;
int ShortOrder;


// --- String für Dax30 festlegen
string syDax = "EUREX.FDX";

//+------------------------------------------------------------------+
//| Expert initialization function                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
  PeriondenStartZeit = Time[0];
 
//---
  return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function - Ausführen beim Ende von EA    |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
 
 
  }
//+------------------------------------------------------------------+
//| Expert tick function  (StartZeit                                          |
//+------------------------------------------------------------------+
void OnTick()
{
//---
double StoppLoss;
double TakeProfit;
bool OrderAngepasst;


// Überprüfen ob ein neuer Periodenbeginn vorliegt
if (PeriondenStartZeit != Time[0])
{
NeuePeriodeBegonnen = true;
PeriondenStartZeit = Time[0];
}
else NeuePeriodeBegonnen = false;

 
// --- MA20 für Dax Abfragen
double maDAX = iMA(syDax,0,20,0,MODE_SMA,PRICE_CLOSE,0);


// ---Aktuellen BID Kurs für Dax Abfragen (letzter Kurs?)
double bidDax  = MarketInfo(syDax, MODE_BID);



// Anzeige auf Bildschirm
Print("DAX 30 MA Kurve =",maDAX); 


//+------------------------------------------------------------------+
//| HandelsSignale ermitteln                                        |
//+------------------------------------------------------------------+ 


if (NeuePeriodeBegonnen == true)
{

    //  --- Kauf Signal ---

    if (bidDax>maDAX)
    {
    LongSignal = true;
    }
    else LongSignal = false;

    // --- Verkauf Signal ---

    if (bidDax<maDAX)
    {
    ShortSignal = true;
    }
    else ShortSignal = false;
}
else
{
LongSignal = false;
ShortSignal = false;
}


//+------------------------------------------------------------------+
//| Kauf / Verkauf Signal umsetzen                                  |
//+------------------------------------------------------------------+ 
 
// Kaufen
if(LongSignal == true)
{
      // Evtl Short Order vorher Schließen
      if(ShortOrder>0)
          {
            if(OrderSelect(ShortOrder,SELECT_BY_TICKET)==true)
            {
            bool ShortOrderGeschlossen = OrderClose(ShortOrder,OrderLots(),Ask,10,Blue);
            if (ShortOrderGeschlossen==true) ShortOrder=0;
            }
          }
      // Jetzt erst Long Order eröffnen
      while(LongOrder<=0)
          {
          LongOrder = OrderSend(syDax,OP_BUY,HandelsLots,Ask,10,0,0,"Dax30 LONG",MagicNummer,0,Green);
          }
}

// Verkaufen
if (ShortSignal == true)
{
      // Evtl Long Order vorher Schließen
    if (LongOrder>0)
        {
          if(OrderSelect(LongOrder,SELECT_BY_TICKET)==true)
          {
          bool LongOrderGeschlossen = OrderClose(LongOrder,OrderLots(),Bid,10,Blue);
          if (LongOrderGeschlossen==true) LongOrder=0;
          }
        }
      // Verkaufs Order jetzt eröffnen
      while(ShortOrder<=0)
        {
        ShortOrder = OrderSend(syDax,OP_SELL,HandelsLots,Bid,10,0,0,"Dax30 SHORT",MagicNummer,0,Red);
        }
}

//+------------------------------------------------------------------+
//|StopLoos und TakeProfit setzen                                  |
//+------------------------------------------------------------------+ 
 


// SL bei Long Deals setzen
if (OrderSelect(LongOrder,SELECT_BY_TICKET)==true)
{
    if(OrderCloseTime()==0 && OrderStopLoss()==0)
      {
      StoppLoss = NormalizeDouble(OrderOpenPrice()/(1+(SL_Prozent/100)),Digits);
      OrderAngepasst = OrderModify(OrderTicket(),OrderOpenPrice(),StoppLoss,OrderTakeProfit(),0,Yellow);
      }
}

// SL bei Short Deals setzen
if (OrderSelect(ShortOrder,SELECT_BY_TICKET)==true)
{
    if(OrderCloseTime()==0 && OrderStopLoss()==0)
      {
      StoppLoss = NormalizeDouble(OrderOpenPrice()*(1+(SL_Prozent/100)),Digits);
      OrderAngepasst = OrderModify(OrderTicket(),OrderOpenPrice(),StoppLoss,OrderTakeProfit(),0,Yellow);
      }
}

// TP bei Long Deals setzen
if (OrderSelect(LongOrder,SELECT_BY_TICKET)==true)
{
    if(OrderCloseTime()==0 && OrderTakeProfit()==0)
      {
      TakeProfit = NormalizeDouble(OrderOpenPrice()*(1+(TP_Prozent/100)),Digits);
      OrderAngepasst = OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),TakeProfit,0,Orange);
      }
}

// TP bei Short Deals setzen
if (OrderSelect(ShortOrder,SELECT_BY_TICKET)==true)
{
    if(OrderCloseTime()==0 && OrderTakeProfit()==0)
      {
      TakeProfit = NormalizeDouble(OrderOpenPrice()/(1+(TP_Prozent/100)),Digits);
      OrderAngepasst = OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),TakeProfit,0,Orange);
      }
}

// Ticketnummern nach schließen auf 0 zurücksetzen
if(OrderSelect(LongOrder,SELECT_BY_TICKET)==true)
{
  if(OrderTicket()>0 && OrderCloseTime()>0) LongOrder=0;
}

if(OrderSelect(ShortOrder,SELECT_BY_TICKET)==true)
{
  if(OrderTicket()>0 && OrderCloseTime()>0) ShortOrder=0;
}


//+------------------------------------------------------------------+
}

traderdoc

markusrgb 23.01.15 22:38

Super danke, hat funktioniert - jetzt weis ich auch woran es wohl lag

Mich würde aber schon noch interessieren ob es MetaEditor Versionen gibt bei denen der ursprüngliche Code so funktioniert hätte

Hatte sowas schon mal

Zb. Find ich manchmal folgende Schreibweise vor:

Double variable1; variable2; variable3

das Funktioniert so bei meiner Version allerdings nicht

Double variable1;
Double variable2;
Double variable3;

Hingegen schon :confused:

traderdoc 23.01.15 23:18

Double variable1; variable2; variable3

funtioniert schon deshalb nicht, weil Double double und das ; ein , sein muß. Und wenn, dann würde diese Schreibweise funktionieren:

double variable1, variable2, variable3;

Das:

Double variable1;
Double variable2;
Double variable3;

geht auch nicht, s.o., sondern:

double variable1;
double variable2;
double variable3;


traderdoc

markusrgb 26.01.15 10:32

ok, Komma anstatt Semicolon ...;)

das mit der Kleinschreibung war mir eigentlich klar ... nur die Autokorrektur am Handy macht halt immer was sie will :rolleyes:


Hab meinen EA jetzt mal auf dem DemoKonto im Testbetrieb laufen
dabei fällt mir auf dass das mit dem TP/SL setzen nicht funktioniert

bekomm bei jedem Tick folgende Fehlermeldung:

2015.01.26 10:17:02.387 '2715450': modification of order #21925852 sell 0.10 EUREX.FDX at 10691.00 sl: 0.00 tp: 10533.00 -> sl: 10744.46 tp: 10533.00 failed [Invalid S/L or T/P] :confused:

woran könnte das liegen?

Hab das Demokonto bei VarenGold ... könnte es sein das die das nachträgliche anpassen des TP/SL nicht zulassen?

oderkönnte evtl was im Code nicht stimmen?

markusrgb 26.01.15 11:52

Zitat:

Zitat von markusrgb (Beitrag 28387)
bekomm bei jedem Tick folgende Fehlermeldung:

2015.01.26 10:17:02.387 '2715450': modification of order #21925852 sell 0.10 EUREX.FDX at 10691.00 sl: 0.00 tp: 10533.00 -> sl: 10744.46 tp: 10533.00 failed [Invalid S/L or T/P] :confused:

woran könnte das liegen?

Hab das Demokonto bei VarenGold ... könnte es sein das die das nachträgliche anpassen des TP/SL nicht zulassen?

oder könnte evtl was im Code nicht stimmen?

Nochmal kurz ein Nachtrag ... an VarenGold liegt es wohl nicht (laut Kundenberater)

ein TP wird gesetzt (bei 10533.00) sind ca 1,5% von 10691.00
(erkenne ich auch im Chart an einer Roten Linie mit "OrderNummer TP"

allerdings scheint es Probleme mit dem SL zu geben obwohl er das ja wohl offensichtlich richtig errechnet "-> sl: 10744.46" sind 0,5% von 10691.00 :confused:

wenn ich mir aber die laufende Order ansehe, steht da bei SL 0,00

markusrgb 26.01.15 13:30

ok, ich glaub ich hab das Problem schon mal eingekreist ... :D

mit hilfe dieses Forum Artikels
http://www.expert-advisor.com/forum/...treikt-er.html

kommt wohl darauf an wie der Broker die Dax-Werte (Kommastellen) liefert, deswegen tritt wohl der invalid SL bzw. TP auf (denn in der regel liefert der Broker Daten als 9120 oder 9120,0 0der 9120,5).
Als SL oder TP werden aber sicherlich häufig Werte errechnet, die als Nachkommastelle keine 0 oder 5 haben und das akzeptiert der Broker nicht und verweigert das OrderModify().

in meinem Fall hatte ich beim Take Profit wohl nur Glück das er bei xxxxx,00
lag
mein Broker liefert die Daten in 0,25er Schritten ... (0,25 - 0,5 - 0,75 - 0,00)
deswegen akzeptiert er auch meinen sl: 10744.46 nicht :o

Dachte eigentlich das NachkommaStellen Problem währe mit dem Befehl:
"Digits" erledigt .... das is aber dann wohl leider doch nicht das gelbe vom Ei :eek:

Jetzt steh ich also vor dem Problem wie ich das ganze auf 0,25 oder gerne auch auf 0,5 Werte nach dem Komma bekomme :confused:

markusrgb 26.01.15 17:58

Zu dem speziellen Problem wie ich das ganze auf 0,25 oder auf 0,5 Werte nach dem Komma bekomme erstelle ich mal ein neues Thema ....

Hab Spezifisch dazu leider nichts im Netz gefunden ... Aber evtl ist es ja auch für andere Interesant :D


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:17 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum