Einzelnen Beitrag anzeigen
  #12 (permalink)  
Alt 07.10.15
skynat skynat ist offline
Mitglied
 
Registriert seit: Sep 2015
Beiträge: 30
skynat befindet sich auf einem aufstrebenden Ast
Standard

So,

nachdem ich meinen Rechner wieder fit habe und meinen Code aufräumen konnte, stehe ich nur noch vor einem Problem(chen?)

Der EA eröffnet Trades, zieht den SL nach etc. Alles wie es soll.

Allerdings möchte ich nun gern, dass er auch manuell gesetzte Trades modifiziert und den SL für mich nach zieht und entsprechend auch keine neue POS öffnet - da ja schon eine offen ist.

Ich bin beim Googlen zwar über OrdersTotal() gestolpert, allerdings komme ich damit nicht recht weiter.
Aktuell wähle ich ja meine Orders via SELECT_BY_TICKET im OrderSelect aus. Es muss doch aber eine Möglichkeit geben dort über eine Oder-Verknüpfung eine gewisse Halbautomatik hinzubekommen.

Code:
  //Shortsignale umsetzen in Deals
     if(Shortsignal==true)
      {
         //Eventuelle LongOrder schliessen
         if (LongOrder>0)
            {
               if(OrderSelect(LongOrder,SELECT_BY_TICKET)==true)
               {
               bool LongOrderClosed = OrderClose(LongOrder,OrderLots(),Bid,10,Orange);
               if (LongOrderClosed == true) LongOrder = 0;
               }
            }
         
         //ShortOrder eröffnen
         while(ShortOrder<=0)
            {
               ShortOrder = OrderSend(Symbol(),OP_SELL,Lots,Bid,10,0,0,"ShortOrder",MagicNumber,0,Red);
            }
      }
      
//+------------------------------------------------------------------+
//|                                                                  |
//|                         SL bzw TP setzen                         |
//|                                                                  |
//+------------------------------------------------------------------+     

      //StopLoss Longdeals setzen
      if(NeuePeriodeBegonnen==true)
      {
      if(OrderSelect(LongOrder,SELECT_BY_TICKET)==true)
         {
            if(OrderCloseTime()==0&&OrderStopLoss()==0)
               {
                  double StopLoss=NormalizeDouble((MA3),Digits);
                  bool OrderAngepasst = OrderModify(OrderTicket(),OrderOpenPrice(),StopLoss,OrderTakeProfit(),0,Yellow);
               }
         }

Und hier dann noch das Nachziehen des SL
Code:
//+------------------------------------------------------------------+
//|                                                                  |
//|                    Ticketnummer zurücksetzen                     |
//|                                                                  |
//+------------------------------------------------------------------+     

      //Ticketnummer nach SL oder TP 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;
         }
     
     
//+------------------------------------------------------------------+
//|                                                                  |
//|                    Stops nachziehen auf MA3_1d                   |
//|                                                                  |
//+------------------------------------------------------------------+     
     
     //LongOrder Stop nachziehen
     if (LongOrder>0 && OrderType() == OP_BUY&&NeuePeriodeBegonnen==true)
      {
         Print ("SL wird nachgezogen");
         bool result=false;
         result=OrderSelect(LongOrder,SELECT_BY_TICKET);
         bool result1=false;
         result1=OrderModify(OrderTicket(),OrderOpenPrice(),MA3,0,1);
         Print ("SL ",OrderTicket()," nachgezogen!");
      }