Einzelnen Beitrag anzeigen
  #19 (permalink)  
Alt 28.01.15
Benutzerbild von markusrgb
markusrgb markusrgb ist offline
Mitglied
 
Registriert seit: Jan 2015
Beiträge: 34
markusrgb befindet sich auf einem aufstrebenden Ast
Standard

hmmm ich hab jetzt mal versucht das einzubauen ....
aber irgendwo liegt in meinem Code noch der Hund begraben
es wurde kein einziger SL/TP gesetzt

hier mal das Journal seit heute morgen:
2015.01.28 16:17:00.724 '2715450': order #21939548 sell 0.10 EUREX.FDX at 10616.25 sl: 0.00 tp: 0.00 closed at price 10691.75
2015.01.28 16:17:00.665 '2715450': close order #21939548 sell 0.10 EUREX.FDX at 10616.25 sl: 0.00 tp: 0.00 at price 0.00
2015.01.28 12:11:03.993 '2715450': order was opened : #21939548 sell 0.10 EUREX.FDX at 10616.25 sl: 0.00 tp: 0.00
2015.01.28 12:11:03.929 '2715450': order sell market 0.10 EUREX.FDX sl: 0.00 tp: 0.00
2015.01.28 12:11:03.929 '2715450': order #21939177 buy 0.10 EUREX.FDX at 10629.25 sl: 0.00 tp: 0.00 closed at price 10616.25
2015.01.28 12:11:03.871 '2715450': close order #21939177 buy 0.10 EUREX.FDX at 10629.25 sl: 0.00 tp: 0.00 at price 0.00
2015.01.28 11:08:03.220 '2715450': order was opened : #21939177 buy 0.10 EUREX.FDX at 10629.25 sl: 0.00 tp: 0.00
2015.01.28 11:08:03.160 '2715450': order buy market 0.10 EUREX.FDX sl: 0.00 tp: 0.00
2015.01.28 11:08:03.159 '2715450': order #21938400 sell 0.10 EUREX.FDX at 10717.50 sl: 0.00 tp: 0.00 closed at price 10629.25
2015.01.28 11:08:01.973 '2715450': close order #21938400 sell 0.10 EUREX.FDX at 10717.50 sl: 0.00 tp: 0.00 at price 0.00
2015.01.28 09:04:02.332 '2715450': order was opened : #21938400 sell 0.10 EUREX.FDX at 10717.50 sl: 0.00 tp: 0.00
2015.01.28 09:04:02.276 '2715450': order sell market 0.10 EUREX.FDX sl: 0.00 tp: 0.00
2015.01.28 07:20:53.117 Automated trading enabled

bin mir jetzt nicht sicher ob ich die umrechnung in 0,25er Schritten falsch eingebunden habe oder ob das Problem auch noch an anderer Stelle liegen könnte


Code:
void OnTick()
{
//---

double StoppLoss;
double TakeProfit;
bool OrderAngepasst;
int TP;
int SL;
double NachkommaTP;
double NachkommaSL;

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


...
……für Forum Ausgeblendetete Berechnungen - sonst wird der code zu unübersichtlich ......
...



//+------------------------------------------------------------------+
//| 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;
             Print("Short Order geschlossen bei ",AnzahlMA20);
             } 
          }
       // Jetzt erst Long Order eröffnen
       while(LongOrder<=0)
           {
           LongOrder = OrderSend("EUREX.FDX",OP_BUY,HandelsLots,Ask,10,0,0,"Dax30 LONG",MagicNummer,0,Green);
           Print("Long Order geöffnet bei ",AnzahlMA20);
           }
}

// 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;
           Print("Long Order geschlossen bei ",AnzahlMA20);
           }
        }
      // Verkaufs Order jetzt eröffnen
      while(ShortOrder<=0)
         {
         ShortOrder = OrderSend("EUREX.FDX",OP_SELL,HandelsLots,Bid,10,0,0,"Dax30 SHORT",MagicNummer,0,Red);
         Print("Short Order geöffnet bei ",AnzahlMA20);
         }
}

//+------------------------------------------------------------------+
//|StopLoos und TakeProfit setzen                                   |
//+------------------------------------------------------------------+  
 
// SL bei Long Deals setzen - Erst aber umrechnung für 0,25 Schritt Broker
// Umrechnung SL_Prozent in 0,25er Schritten
StoppLoss = NormalizeDouble(OrderOpenPrice()/(1+(SL_Prozent/100.0)),2);  
SL = (int)StoppLoss;  //zur Sicherheit!
NachkommaSL = StoppLoss - SL;
if (NachkommaSL <= 0.12) StoppLoss = SL;
if (NachkommaSL > 0.12 && NachkommaSL <= 0.37) StoppLoss = SL + 0.25;
if (NachkommaSL > 0.37 && NachkommaSL <= 0.62) StoppLoss = SL + 0.5;
if (NachkommaSL > 0.62 && NachkommaSL <= 0.87) StoppLoss = SL + 0.75;
if (NachkommaSL > 0.87) StoppLoss = SL + 1.0;

// SL bei Long Deals setzen
if (OrderSelect(LongOrder,SELECT_BY_TICKET)==true)
{
    if(OrderCloseTime()==0 && OrderStopLoss()==0)
      {
      OrderAngepasst = OrderModify(OrderTicket(),OrderOpenPrice(),StoppLoss,OrderTakeProfit(),0,Yellow);
      Print("SL für Long Order gesetzt bei = ",StoppLoss);
      }
}

// SL bei Short Deals setzen - Erst aber umrechnung für 0,25 Schritt Broker
// Umrechnung SL_Prozent in 0,25er Schritten
StoppLoss = NormalizeDouble(OrderOpenPrice()*(1+(SL_Prozent/100.0)),2);  
SL = (int)StoppLoss;  //zur Sicherheit!
NachkommaSL = StoppLoss - SL;
if (NachkommaSL <= 0.12) StoppLoss = SL;
if (NachkommaSL > 0.12 && NachkommaSL <= 0.37) StoppLoss = SL + 0.25;
if (NachkommaSL > 0.37 && NachkommaSL <= 0.62) StoppLoss = SL + 0.5;
if (NachkommaSL > 0.62 && NachkommaSL <= 0.87) StoppLoss = SL + 0.75;
if (NachkommaSL > 0.87) StoppLoss = SL + 1.0;

// SL bei Short Deals setzen
if (OrderSelect(ShortOrder,SELECT_BY_TICKET)==true)
{
    if(OrderCloseTime()==0 && OrderStopLoss()==0)
      {
      OrderAngepasst = OrderModify(OrderTicket(),OrderOpenPrice(),StoppLoss,OrderTakeProfit(),0,Yellow);
      Print("SL für Short Order gesetzt bei = ",StoppLoss);
      }
}



// TP bei Long Deals setzen - Erst aber umrechnung für 0,25 Schritt Broker
// Umrechnung TP_Prozent in 0,25er Schritten

TakeProfit = NormalizeDouble(OrderOpenPrice()*(1+(TP_Prozent/100.0)),2);   
TP = (int)TakeProfit;  //zur Sicherheit!
NachkommaTP = TakeProfit - TP;
if (NachkommaTP <= 0.12) TakeProfit = TP;
if (NachkommaTP > 0.12 && NachkommaTP <= 0.37) TakeProfit = TP + 0.25;
if (NachkommaTP > 0.37 && NachkommaTP <= 0.62) TakeProfit = TP + 0.5;
if (NachkommaTP > 0.62 && NachkommaTP <= 0.87) TakeProfit = TP + 0.75;
if (NachkommaTP > 0.87) TakeProfit = TP + 1.0;

// TP bei Long Deals setzen
if (OrderSelect(LongOrder,SELECT_BY_TICKET)==true)
{
    if(OrderCloseTime()==0 && OrderTakeProfit()==0)
      {
      OrderAngepasst = OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),TakeProfit,0,Orange);
      Print("TP für Long Order gesetzt bei = ",TakeProfit);
      }
}


// TP bei Short Deals setzen - Erst aber umrechnung für 0,25 Schritt Broker
// Umrechnung TP_Prozent in 0,25er Schritten

TakeProfit = NormalizeDouble(OrderOpenPrice()/(1+(TP_Prozent/100.0)),2);   
TP = (int)TakeProfit;  //zur Sicherheit!
NachkommaTP = TakeProfit - TP;
if (NachkommaTP <= 0.12) TakeProfit = TP;
if (NachkommaTP > 0.12 && NachkommaTP <= 0.37) TakeProfit = TP + 0.25;
if (NachkommaTP > 0.37 && NachkommaTP <= 0.62) TakeProfit = TP + 0.5;
if (NachkommaTP > 0.62 && NachkommaTP <= 0.87) TakeProfit = TP + 0.75;
if (NachkommaTP > 0.87) TakeProfit = TP + 1.0;

// TP bei Short Deals setzen
if (OrderSelect(ShortOrder,SELECT_BY_TICKET)==true)
{
    if(OrderCloseTime()==0 && OrderTakeProfit()==0)
      {
      OrderAngepasst = OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),TakeProfit,0,Orange);
      Print("TP für Short Order gesetzt bei = ",TakeProfit);
      }
}



// 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;
}