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

Hab ich vorhin gemacht. Sieht so aus, als ob das mit den Tickets nicht hin haut. Er scheint da was durcheinander zu bringen. Liegts vielleicht daran, dass an einigen Stellen die ersten Tickets aufgerufen, mit der Order Berechnungen/Vergleiche gemacht werden, und gleich darauf andere Order(s) über ihr Ticket aufgerufen werden, wieder Berechnungen/Vergleiche gemacht werden? Wenn beide Orders bestimmte Bedingungen erfüllen/nicht erfüllen, sollen entweder weitere Orders geöffnet oder Alle geschlossen werden.

Das gefiel mir aber sowieso nicht wirklich mit den Tickets. Er soll immer wieder die zuletzt geöffnete Order raus suchen und mit der dann halt Berechnungen/Vergleiche machen. Um dann eben entweder Weitere zu öffnen oder Alle zu schließen.

Zu meiner Verteidigung: Wie soll ich wissen, dass das Ding anscheinend nicht richtig mit (4) Tickets umgehn kann? Dachte immer, irgendwas Anderes wär falsch.

Die ersten 2 OrderSend-Geschichten scheinen zu funktionieren. Danach scheint er irgendwie die Tickets durcheinander zu bringen oder zu vergessen. Wenn ers nicht schon vorher tut.
Code:
//  ...FirstSell öffnen:
    if(IsTradeAllowed()==true){
      TI_FiSel=OrderSend(Symbol(),OP_SELL,Lots,NULL,Slippage,SL_Sel,TP_Sel,NULL,MN_FiSel,clrBlue);
      if(IsTradeContextBusy()==true)Sleep(slMS);
      Opened_Sel++;
      Need_Sel = OrdersNeed_Multi * Opened_Sel;
      Need_Buy = OrdersNeed_Multi * Need_Sel;}

//  ...FirstBuy öffnen:
    if(IsTradeAllowed()==true){
      TI_FiBuy=OrderSend(Symbol(),OP_BUY,Lots,NULL,Slippage,SL_Buy,TP_Buy,NULL,MN_FiBuy,clrBlue);
      if(IsTradeContextBusy()==true)Sleep(slMS);
      Opened_Buy++;
      Need_Buy = OrdersNeed_Multi * Opened_Buy;
      Need_Sel = OrdersNeed_Multi * Need_Buy;}


...



// Wenn FirstSell Bedingungen erfüllt, next Sell öffnen.
if(OrderSelect(TI_FiSel,SELECT_BY_TICKET)){
  FiSelOOP_DistONO=NormalizeDouble( OrderOpenPrice() - Dist_ONO *_Point,_Digits);
  if( Bid <= FiSelOOP_DistONO ){
    for( l=Need_Sel ; l>=1 ; l-- ){
      if(IsTradeAllowed()==true)TI_NeSel=OrderSend(Symbol(),OP_SELL,Lots,NULL,Slippage,SL_Sel,TP_Sel,NULL,MN_NeSel,clrBlue);
      if(IsTradeContextBusy()==true)Sleep(slMS);
      Opened_Sel++;
      Need_Sel = OrdersNeed_Multi * Opened_Sel;
      Need_Buy = OrdersNeed_Multi * Need_Sel;} }
}
//=============================================================================================================
// O P E N   F I R S T   N E X T   B U Y
//=============================================================================================================// FirstBuy auswählen...
// Wenn FirstBuy Bedingungen erfüllt,next Buy öffnen.       
if(OrderSelect(TI_FiBuy,SELECT_BY_TICKET)){
  FiBuyOOP_DistONO=NormalizeDouble( OrderOpenPrice() + Dist_ONO *_Point,_Digits);
  if( Ask >= FiBuyOOP_DistONO ){
    for( m=Need_Buy ; m>=1 ; m-- ){
      if(IsTradeAllowed()==true)TI_NeBuy=OrderSend(Symbol(),OP_BUY,Lots,NULL,Slippage,SL_Buy,TP_Buy,NULL,MN_NeBuy,clrBlue);
      if(IsTradeContextBusy()==true)Sleep(slMS);
      Opened_Buy++;
      Need_Buy = OrdersNeed_Multi * Opened_Buy;
      Need_Sel = OrdersNeed_Multi * Need_Buy;} }


...


//=============================================================================================================
// C H E C K   F I R S T   A N D   N E X T   S E L L   O R D E R S
//=============================================================================================================//
//Prüfen, ob letzter NextSell OpenNextOrder-Dist erreicht hat.
if(OrderSelect(TI_NeSel,SELECT_BY_TICKET)){
  NeSelOOP_DONO=NormalizeDouble( OrderOpenPrice() - Dist_ONO *_Point,_Digits);
  if( Bid <= NeSelOOP_DONO ){

//  Wenn ja, FirstSell raussuchen.
    if(OrderSelect(TI_FiSel,SELECT_BY_TICKET)){
    
//    Wenn FirstSell Gewinn-Distanz nicht erreicht hat... 
      FiSelOOP_DCAO = NormalizeDouble( OrderOpenPrice() - Dist_CAO *_Point,_Digits);
      if( Ask > FiSelOOP_DCAO ){

//      ...weitere Sell_Orders öffnen.
        for( l=Need_Sel ; l>=1 ; l-- ){
          if(IsTradeAllowed()==true)TI_NeSel=OrderSend(Symbol(),OP_SELL,Lots,NULL,Slippage,SL_Sel,TP_Sel,NULL,MN_NeSel,clrBlue);
          if(IsTradeContextBusy()==true)Sleep(slMS);
          Opened_Sel++;
          Need_Sel = OrdersNeed_Multi * Opened_Sel;
          Need_Buy = OrdersNeed_Multi * Need_Sel;} }// ?
} } }
//=============================================================================================================
// C H E C K   F I R S T   A N D   N E X T   B U Y   O R D E R S
//=============================================================================================================
//Prüfen, ob letzter NextBuy OpenNextOrder-Dist erreicht hat:
if(OrderSelect(TI_NeBuy,SELECT_BY_TICKET)){
  NeBuyOOP_DONO=NormalizeDouble( OrderOpenPrice() + Dist_ONO *_Point,_Digits);
  if( Ask >= NeBuyOOP_DONO ){

//  Wenn ja, FirstBuy raus suchen.
    if(OrderSelect(TI_FiBuy,SELECT_BY_TICKET)){

//    Prüfen, ob FirstBuy Gewinn-Distanz erreicht hat.   
      FiBuyOOP_DCAO=NormalizeDouble( OrderOpenPrice() + Dist_CAO *_Point,_Digits);

//    Wenn FirstBuy Gewinn-Distanz nicht erreicht hat...       
      if( Bid < FiBuyOOP_DCAO ){
      
//      weitere Buy-Orders öffnen. 
        for( s=Need_Buy ; s>=1 ; s-- ){
          if(IsTradeAllowed()==true)TI_NeBuy=OrderSend(Symbol(),OP_BUY,Lots,NULL,Slippage,SL_Buy,TP_Buy,NULL,MN_NeBuy,clrBlue);
          if(IsTradeContextBusy()==true)Sleep(slMS);
          Opened_Buy++;
          Need_Buy = OrdersNeed_Multi * Opened_Buy;
          Need_Sel = OrdersNeed_Multi * Need_Buy;} }
} } }


...


//=============================================================================================================
// C L O S E   A L L   O R D E R S   B Y   S E L L   D I S T
//=============================================================================================================
//Prüfen, ob letzter NextSell ONO-Dist erreicht hat.
if(OrderSelect(TI_NeSel,SELECT_BY_TICKET)){
  NeSelOOP_DONO=NormalizeDouble( OrderOpenPrice() - Dist_ONO *_Point,_Digits);
  if( Bid <= NeSelOOP_DONO ){

//  Wenn letzter NextSell ONO-Dist erreicht hat, FirstSell raus suchen.
    if(OrderSelect(TI_FiSel,SELECT_BY_TICKET)){

//    Wenn FirstSell Gewinn-Dist erreicht hat...
      FiSelOOP_DCAO = NormalizeDouble( OrderOpenPrice() - Dist_CAO *_Point,_Digits);
      if( Ask < FiSelOOP_DCAO ){

//      ...CloseAll_"by_Short" auf true setzen...
        caSH=true;

//      ...Lots erhöhen...
        Lots = OrderLots() + LotsPlus; // ? 
} } } } 

//...und alle Orders schließen.
if(caSH==true){
for(u=OrdersTotal()-1;u>=0;u--){
if(OrderSelect(u,SELECT_BY_POS)){
if(OrderSymbol()==Symbol()){
if(OrderMagicNumber()==MN_FiBuy){
if(IsTradeAllowed()==true)OCsel=OrderClose(OrderTicket(),OrderLots(),NULL,Slippage,clrRed);
if(IsTradeContextBusy()==true)Sleep(slMS);}
if(OrderMagicNumber()==MN_NeBuy){
if(IsTradeAllowed()==true)OCsel=OrderClose(OrderTicket(),OrderLots(),NULL,Slippage,clrRed);
if(IsTradeContextBusy()==true)Sleep(slMS);}
if(OrderMagicNumber()==MN_NeSel){
if(IsTradeAllowed()==true)OCsel=OrderClose(OrderTicket(),OrderLots(),NULL,Slippage,clrRed);
if(IsTradeContextBusy()==true)Sleep(slMS);}
if(OrderMagicNumber()==MN_FiSel){
if(IsTradeAllowed()==true)OCsel=OrderClose(OrderTicket(),OrderLots(),NULL,Slippage,clrRed);
if(IsTradeContextBusy()==true)Sleep(slMS);}
} } } }
//=============================================================================================================
// C L O S E   A L L   O R D E R S   B Y   B U Y   D I S T
//=============================================================================================================
//Prüfen, ob letzter NextBuy OpenNextOrder-Dist erreicht hat:
if(OrderSelect(TI_NeBuy,SELECT_BY_TICKET)){

  NeBuyOOP_DONO=NormalizeDouble( OrderOpenPrice() + Dist_ONO *_Point,_Digits);
  if( Ask >= NeBuyOOP_DONO ){

//  Wenn ja, FirstBuy raus suchen.
    if(OrderSelect(TI_FiBuy,SELECT_BY_TICKET)){

//    Wenn FirstBuy Gewinn-Dist erreicht hat...
      FiBuyOOP_DCAO = NormalizeDouble( OrderOpenPrice() + Dist_CAO *_Point,_Digits);
      if( Bid > FiBuyOOP_DCAO ){

        caLO=true;

//      ...Lots erhöhen...
        Lots = OrderLots() + LotsPlus; // ?
} } } }

//...und alle Orders schließen.
if(caLO==true){
for(w=OrdersTotal()-1;w>=0;w--){
if(OrderSelect(w,SELECT_BY_POS)){
if(OrderSymbol()==Symbol()){
if(OrderMagicNumber()==MN_FiSel){
if(IsTradeAllowed()==true)OCbuy=OrderClose(OrderTicket(),OrderLots(),NULL,Slippage,clrRed);
if(IsTradeContextBusy()==true)Sleep(slMS);}
if(OrderMagicNumber()==MN_NeSel){
if(IsTradeAllowed()==true)OCbuy=OrderClose(OrderTicket(),OrderLots(),NULL,Slippage,clrRed);
if(IsTradeContextBusy()==true)Sleep(slMS);}
if(OrderMagicNumber()==MN_FiBuy){
if(IsTradeAllowed()==true)OCbuy=OrderClose(OrderTicket(),OrderLots(),NULL,Slippage,clrRed);
if(IsTradeContextBusy()==true)Sleep(slMS);}
if(OrderMagicNumber()==MN_NeBuy){
if(IsTradeAllowed()==true)OCbuy=OrderClose(OrderTicket(),OrderLots(),NULL,Slippage,clrRed);
if(IsTradeContextBusy()==true)Sleep(slMS);}
} } } }
Angehängte Dateien
Dateityp: mq4 LoShDistV3.mq4 (32,0 KB, 1x aufgerufen)