Thema: Hedge EA
Einzelnen Beitrag anzeigen
  #55 (permalink)  
Alt 27.02.21
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

Hallo.

Im Anhang ne Print-Version. Ist Einiges einfacher und vor Allem der gesamte Code kürzer geworden. Öffnen der ersten paar Orders scheint zu funktionieren. Dann aber öffnet er viel zu Viele Orders. Neulich irgendwie 100 Stück.

Höchstwahrscheinlich liegts an irgendwelchen Schleifen, Welche ja gar nicht mein Fall sind. Vielleicht hängt er sich da irgendwo etliche Male auf und gleichzeitig werden irgendwie zig Orders geöffnet, die gar nicht geöffnet werden sollen.

Vermute, dass hier irgendwo der Fehler ist, vielleicht sind ja auch mehrere Sachen falsch. Vielleicht liegts aber auch an OrderModify() darunter.
Code:
//=============================================================================================================
// ( O C 2 )   O P E N   M O R E   N E X T - S E L   B Y   N E X T - B U Y
//=============================================================================================================

//...wenn nach OC2 schon NextBuy-by-NextSel offen ist...
  if( ne_LO==true ){

//  ...OOP für NextSel-by-NextBuy berechnen:
    if(OrderSelect(TI_NeBuy,SELECT_BY_TICKET)){
    if(OrderType()==OP_BUY){    
    if(OrderSymbol()==Symbol()){

      OOP_Sel_NeBuy = NormalizeDouble( OrderOpenPrice() - D_ONO *Point,Digits);
    
      if( OOP_Sel_NeBuy > TP_FiSel ){

        Need_Sel = Opened_Buy * OrdersNeed_Multi;

        for( j=Need_Sel ; j>0 ; j-- ){// ?
          if(IsTradeAllowed())TI_NeSel = OrderSend(Symbol(),OP_SELLSTOP,Lots,OOP_Sel_NeBuy,Slippage,SL_FiSel,TP_FiSel,NULL,MN_NeSel,0,Blue);
          if(IsTradeContextBusy())Sleep(slMS);
          if(TI_NeSel>=1)Opened_Sel++;


          Print("-Sended NextSel-by-NextBuy:",
                
                "-OrderSymbol():",OrderSymbol(),
                "-Symbol():",Symbol(),
                
                "-OOP_Sel_NeBuy=",DoubleToStr(OOP_Sel_NeBuy,Digits),
                "-D_ONO=",D_ONO,
                
                "-Need_Sel=",Need_Sel,
                "-Opened_Buy=",Opened_Buy,
                "-OrdersNeed_Multi=",OrdersNeed_Multi,
                
                "-j=",j,
                
                "-TI_NeBuy:",TI_NeBuy,
                "-TI_NeSel:",TI_NeSel,
                "-MN_NeSel:",MN_NeSel
                
               );
          
          
          } } } } } }// Nach OC2 NextBuy-by-NextSel offen.

//=============================================================================================================
//  ( O C 2 )   O P E N   M O R E   N E X T - B U Y   B Y   N E X T - S E L
//=============================================================================================================

//...wenn nach OC2 NextSel-by-NextBuy offen ist...
  if( ne_SH==true ){

//  OOP für NextBuy-by-NextSel berechnen:
    if(OrderSelect(TI_NeSel,SELECT_BY_TICKET)){
    if(OrderType()==OP_SELL){
    if(OrderSymbol()==Symbol()){

      OOP_Buy_NeSel = NormalizeDouble( OrderOpenPrice() + D_ONO *Point,Digits);

      if( OOP_Buy_NeSel < TP_FiBuy ){

        Need_Buy = Opened_Sel * OrdersNeed_Multi;

        for( k=Need_Buy ; k>0 ; k-- ){// ?
          if(IsTradeAllowed())TI_NeBuy = OrderSend(Symbol(),OP_BUYSTOP,Lots,OOP_Buy_NeSel,Slippage,SL_FiBuy,TP_FiBuy,NULL,MN_NeBuy,0,Yellow);
          if(IsTradeContextBusy())Sleep(slMS);
          if(TI_NeBuy>=1)Opened_Buy++;
          
          
          Print("-Sended NextBuy-by-NextSel:",
                
                "-OrderSymbol():",OrderSymbol(),
                "-Symbol():",Symbol(),
                
                "-OOP_Buy_NeSel=",DoubleToStr(OOP_Buy_NeSel,Digits),
                "-D_ONO=",D_ONO,
                
                "-Need_Buy=",Need_Buy,
                "-Opened_Sel=",Opened_Sel,
                "-OrdersNeed_Multi=",OrdersNeed_Multi,
                
                "-k=",k,
                
                "-TI_NeBuy:",TI_NeBuy,
                "-TI_NeSel:",TI_NeSel,
                "-MN_NeSel:",MN_NeSel
                
               );
          
          
           } } } } } }// Nach OC2 NextSel-by-NextBuy offen.
Vielleicht ist bei OrderModify() was verkehrt, so dass er OrderSend() irgendwie etliche Male wiederholt. Ich weiß es nicht.
Code:
//=============================================================================================================
//  O R D E R   C H E C K   2
//=============================================================================================================
// Wenn nach OC2 FirstSel und FirstBuy offen sind...
if( fi_SH==true && fi_LO==true ){
//=============================================================================================================
// ( O C 2 )   O R D E R   M O D I F Y   F I R S T S E L / F I R S T B U Y
//=============================================================================================================
//...FirstSel SL und TP genau mit OOP berechnen:
  if(OrderSelect(TI_FiSel,SELECT_BY_TICKET)){
  if(OrderSymbol()==Symbol()){
    SL_FiSel = NormalizeDouble( OrderOpenPrice() + SL *Point,Digits);
    TP_FiSel = NormalizeDouble( OrderOpenPrice() - TP *Point,Digits);
    if(OrderStopLoss()!=SL_FiSel||OrderTakeProfit()!=TP_FiSel){
    if(IsTradeAllowed())OM_Sel=OrderModify(OrderTicket(),OrderOpenPrice(),SL_FiSel,TP_FiSel,Aqua);
    if(IsTradeContextBusy())Sleep(slMS);}


    Print("-OM FirstSel:",
          
          "-TI_FiSel=",TI_FiSel,
          
          "-SL_FiSel=",DoubleToStr(SL_FiSel,Digits),
          "-OrderOpenPrice()=",DoubleToStr(OrderOpenPrice(),Digits),
          "-GV SL=",SL,

          "-TP_FiSel=",DoubleToStr(TP_FiSel,Digits),
          "-GV TP=",TP

         );
    }}
//-----------------------------------------------------------------------------------------------------------*/
//...FirstBuy SL und TP genau mit OOP berechnen:
  if(OrderSelect(TI_FiBuy,SELECT_BY_TICKET)){
  if(OrderSymbol()==Symbol()){
    SL_FiBuy = NormalizeDouble( OrderOpenPrice() - SL *Point,Digits);
    TP_FiBuy = NormalizeDouble( OrderOpenPrice() + TP *Point,Digits);
    if(OrderStopLoss()!=SL_FiBuy||OrderTakeProfit()!=TP_FiBuy){
    if(IsTradeAllowed())OM_Buy=OrderModify(OrderTicket(),OrderOpenPrice(),SL_FiBuy,TP_FiBuy,Aqua);
    if(IsTradeContextBusy())Sleep(slMS);}


    Print("-OM FirstBuy:",
          
          "-TI_FiBuy=",TI_FiBuy,
          
          "-SL_FiBuy=",DoubleToStr(SL_FiBuy,Digits),
          "-OrderOpenPrice()=",DoubleToStr(OrderOpenPrice(),Digits),
          "-GV SL=",SL,

          "-TP_FiBuy=",DoubleToStr(TP_FiBuy,Digits),
          "-GV TP=",TP

         );
    
    } }
Angehängte Dateien
Dateityp: mq4 LoSh_PenOrd_v2c_PRINT.mq4 (38,6 KB, 2x aufgerufen)