Einzelnen Beitrag anzeigen
  #24 (permalink)  
Alt 01.08.18
MA-EA MA-EA ist offline
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Wenn man den Code einfach so hier rein kopiert, braucht man nicht so viel scrollen, aber gut.

Ich versuche zur Zeit, Stop-Orders da öffnen zu lassen, bzw. zu setzen, wo die Market-Order durch den SL gegangen ist. Wenn die Stop-Order dann gültig und zur Market-Order wurde, soll sie geschlossen werden. Bei einem kurzen Test vorhin war die sie die ganze Zeit offen und so wurden immer wieder Markt-Orders geöffnet...

Funktioniert das so, die Stop-Order zu schließen, wenn entsprechend Buy/Sell geöffnet wurde?

Orders zählen bzw. feststellen, ob überhaupt Welche offen sind:
Code:
for(i=OrdersTotal()-1;i>=0;i--){
  if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
    if(OrderType()==OP_BUY&&OrderMagicNumber()==Buy_Market_MN&&OrderSymbol()==Symbol())bool Buy_Mark_inv=true;
    if(OrderType()==OP_BUYSTOP&&OrderMagicNumber()==Buy_Stop_MN&&OrderSymbol()==Symbol())bool Buy_Stop_inv=true;
    if(OrderType()==OP_SELL&&OrderMagicNumber()==Sell_Market_MN&&OrderSymbol()==Symbol())bool Sel_Mark_inv=true;
    if(OrderType()==OP_SELLSTOP&&OrderMagicNumber()==Sell_Stop_MN&&OrderSymbol()==Symbol())bool Sel_Stop_inv=true;}}
Orders öffnen:
Code:
if(Buy_Mark_inv==false&&Buy_Stop_inv==false&&Sel_Mark_inv==false&&Sel_Stop_inv==false&&RT==true&&SPR_AL==true){

  if(Buy_Market==true)OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,B_Mark_SL,B_Mark_TP,Name + " Buy(#" + Buy_Market_MN + ")",Buy_Market_MN,0,MediumBlue);
  if(Buy_Stop==true)OrderSend(Symbol(),OP_BUYSTOP,Lots,B_Stop_OOP,Slippage,B_Stop_SL,B_Stop_TP,Name + " Buy(#" + Buy_Stop_MN + ")",Buy_Stop_MN,0,MediumBlue);

  if(Sell_Market==true)OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,S_Mark_SL,S_Mark_TP,Name + " Sell(#" + Sell_Market_MN + ")",Sell_Market_MN,0,SteelBlue);
  if(Sell_Stop==true)OrderSend(Symbol(),OP_SELLSTOP,Lots,S_Stop_OOP,Slippage,S_Stop_SL,S_Stop_TP,Name + " Sell(#" + Sell_Stop_MN + ")",Sell_Stop_MN,0,SteelBlue);}
Stop-Orders schließen, wenn Market-Order in der selben Richtung offen ist:
Code:
for(i=OrdersTotal()-1;i>=0;i--){
  if(OrderSelect(i,SELECT_BY_POS)){
  
    if(OrderType()==OP_BUY&&OrderMagicNumber()==Buy_Market_MN&&OrderSymbol()==Symbol()){
      if(OrderType()==OP_BUYSTOP&&OrderMagicNumber()==Buy_Stop_MN&&OrderSymbol()==Symbol())OrderDelete(OrderTicket(),SteelBlue);}

    if(OrderType()==OP_SELL&&OrderMagicNumber()==Sell_Market_MN&&OrderSymbol()==Symbol()){
      if(OrderType()==OP_SELLSTOP&&OrderMagicNumber()==Sell_Stop_MN&&OrderSymbol()==Symbol())OrderDelete(OrderTicket(),OrangeRed);}