Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 21.06.17
Traderole Traderole ist offline
Neues Mitglied
 
Registriert seit: Sep 2014
Beiträge: 18
Traderole befindet sich auf einem aufstrebenden Ast
Standard falsche Object-preise

Hallo,
ich habe mir einen EA erstellt, der von einem Indikator erstellte Linien mit einbindet. Um die Preislevels der Objekte zubekommen, loope ich mit einer for-schleife durch die Objekte und lasse mir die Preise wieder geben. Komischerweise werde Objektpreise ausgegeben, die es laut Chart gar nicht an den Stellen gibt! Deswegen werden Orders geöffnet an Stellen die ich nicht nachvollziehen kann.

[IMG]
[/IMG]

Die pinken/lilanen Linien sind die Res/Sup Linien.
Ich bin über jede Hilfe dankbar.
Hier der Code:

PHP-Code:
extern int magicnumber 111;
extern double lotsize 0.1;
extern int ATR_multiplier 3;
extern int starttime 6;
extern int endtime 20

datetime timestamp 0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   
//---
   
return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  
}
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   
//---_Indicator_Call-----
   
int ATR_timeframe 0;
   
int ATR_periode 10;
   
double ATR_value iATR(NULL,ATR_timeframe,ATR_periode,1);
   
   
int CCI_timeframe 0;
   
int CCI_periode 14;
   
double CCI_value iCCI(NULL,CCI_timeframe,CCI_periode,PRICE_CLOSE,1);
    
   
   
//---Stoploss-----

   
double stopplossshort Close[1] + ATR_value ATR_multiplier;
   
double stopplosslong Close[1] - ATR_value ATR_multiplier;
   
   
//---TakeProfit-----
   
   
double takeprofitshort 0;
   
double takeprofitlong 0;
   
   
//---Check_for_objects-----
 
   
if(ObjectsTotal(0,0,OBJ_TREND) == 0)
      {
Alert("No objects available");}
      
   
//---Variable_definition-----
   
double object_price;
   
string object_name;
   
   
//---OrderSend-----  
   
for(int i 0<= ObjectsTotal(0,0,OBJ_TREND) - 1i++)
      {
      
object_name ObjectName(i);
      
object_price ObjectGetDouble(0,object_name,OBJPROP_PRICE1);
       
//---Sell_Order-----         
      
if((High[1] - object_price) > (Point/2)  &&      //High[1] > object_price     
         
(object_price Close[1]) > (Point/2) &&      //Close[1]< object_price    
         
check_price_in_MA() == true &&
         
CCI_value >= 100            && 
         
trading_hour() == true      &&
         
check_newbar() == true      &&
         
Volume[0] == 1
            {
            
Alert("Close = ",Close[1]," objectprice = ",object_price," High = "High[1]);      
            if(!
OrderSend(Symbol(),OP_SELL,lotsize,Bid,5,stopplossshort,takeprofitshort,"",magicnumber,0,Red))
               {
               
Alert("failed to send Sell order = ",GetLastError());
               }
            }               
      
//---Buy_Order-----       
      
if((object_price Low[1]) > (Point/2) &&         // object_price > Low[1]    
         
(Close[1] - object_price) > (Point/2) &&      // Close[1] >= object_price    
         
check_price_in_MA() == true &&
         
CCI_value <= -100           &&
         
trading_hour() == true      &&
         
check_newbar() == true      &&
         
Volume[0] == 1)   
            {
            
Alert("Close = ",Close[1]," objectprice = ",object_price," Low = "Low[1]);             
            if(!
OrderSend(Symbol(),OP_BUY,lotsize,Ask,5,stopplosslong,takeprofitlong,"",magicnumber,0,Blue))
               {
               
Alert("failed to send Sell order = ",GetLastError());
               }
            }
       }     

   
//---TSL-----

      
double trailingSLrange Close[1] + ATR_value *ATR_multiplier Close[1];
      for(
int i 0<= OrdersTotal(); i++)
         {
         
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
          
//---Check_trailing_SL_short--
         
if(OrderType() == OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == magicnumber && (((OrderStopLoss() - Bid) - trailingSLrange) > Point/2)) 
            {
            
double newstopploss_short Bid trailingSLrange;
            if(!
OrderModify(OrderTicket(),OrderOpenPrice(),newstopploss_short,0,0,Red))
               {
               
Alert("Ordermodify short failed ",Symbol()," "GetLastError());
               } 
            }
             
//---Check_trailing_SL_long--
          
if(OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == magicnumber && (((Ask OrderStopLoss()) - trailingSLrange) > Point/2))
            {
            
double newstopploss_long Ask trailingSLrange
            if(!
OrderModify(OrderTicket(),OrderOpenPrice(),newstopploss_long,0,0,Blue))
               {
               
Alert("Ordermodify short failed ",Symbol()," "GetLastError());
               } 
            }         
         }
   
   
//---Comment---
   
Comment"MN = ",magicnumber,
            
"\nTradinghours = ",trading_hour(),
            
"\nObjectstotal = ",ObjectsTotal(0,0,OBJ_TREND),
            
"\nSpread = ",MarketInfo(Symbol(),MODE_SPREAD),
            
"\nATR_multiplier = ",ATR_multiplier);
      
  }
//+------------------------------------------------------------------+


//---Check_Tradinghours--------------------------------------------------------------------- 
bool trading_hour()
   {
   if(
starttime TimeHour(TimeCurrent()) && TimeHour(TimeCurrent()) < endtime)
      {
      return (
true);
      }
      else return(
false);
   }
//---Check_MA--------------------------------------------------------------------- 
bool check_price_in_MA()
   {
      
//---MA_5min-----
   
int SMA200_5_timeframe 5;
   
int SMA200_5_periode 200;
   
double SMA200_5_value iMA(NULL,SMA200_5_timeframe,SMA200_5_periode,0,MODE_SMA,PRICE_CLOSE,1);   
   
   
int EMA100_5_timeframe 5;
   
int EMA100_5_periode 100;
   
double EMA100_5_value iMA(NULL,EMA100_5_timeframe,EMA100_5_periode,0,MODE_EMA,PRICE_CLOSE,1); 
   
   
int EMA50_5_timeframe 5;
   
int EMA50_5_periode 50;
   
double EMA50_5_value iMA(NULL,EMA50_5_timeframe,EMA50_5_periode,0,MODE_EMA,PRICE_CLOSE,1);  
      
//---MA 15min-----
   
int SMA200_15_timeframe 15;
   
int SMA200_15_periode 200;
   
double SMA200_15_value iMA(NULL,SMA200_15_timeframe,SMA200_15_periode,0,MODE_SMA,PRICE_CLOSE,1);   
   
   
int EMA100_15_timeframe 15;
   
int EMA100_15_periode 100;
   
double EMA100_15_value iMA(NULL,EMA100_15_timeframe,EMA100_15_periode,0,MODE_EMA,PRICE_CLOSE,1); 
   
   
int EMA50_15_timeframe 15;
   
int EMA50_15_periode 50;
   
double EMA50_15_value iMA(NULL,EMA50_15_timeframe,EMA50_15_periode,0,MODE_EMA,PRICE_CLOSE,1);  
   
//---MA_60min-----
   
int SMA200_60_timeframe 60;
   
int SMA200_60_periode 200;
   
double SMA200_60_value iMA(NULL,SMA200_60_timeframe,SMA200_60_periode,0,MODE_SMA,PRICE_CLOSE,1);   
   
   
int EMA100_60_timeframe 60;
   
int EMA100_60_periode 100;
   
double EMA100_60_value iMA(NULL,EMA100_60_timeframe,EMA100_60_periode,0,MODE_EMA,PRICE_CLOSE,1); 
   
   
int EMA50_60_timeframe 60;
   
int EMA50_60_periode 50;
   
double EMA50_60_value iMA(NULL,EMA50_60_timeframe,EMA50_60_periode,0,MODE_EMA,PRICE_CLOSE,1);  

   
   if((
High[1] >= SMA200_5_value  && Low[1] <=  SMA200_5_value )|| 
      (
High[1] >= SMA200_15_value && Low[1] <=  SMA200_15_value)||
      (
High[1] >= SMA200_60_value && Low[1] <=  SMA200_60_value)||
      (
High[1] >= EMA100_5_value  && Low[1] <=  EMA100_5_value )||
      (
High[1] >= EMA100_15_value && Low[1] <=  EMA100_15_value)||
      (
High[1] >= EMA100_60_value && Low[1] <=  EMA100_60_value)||
      (
High[1] >= EMA50_5_value   && Low[1] <=  EMA50_5_value  )||
      (
High[1] >= EMA50_15_value  && Low[1] <=  EMA50_15_value )||
      (
High[1] >= EMA50_60_value  && Low[1] <=  EMA50_60_value ))
         {
         return (
true);
         }
         else return(
false);
   }
   
//---Check_Tradinghours---------------------------------------------------------------------
 
bool check_newbar()
   {
   
datetime current_bartime iTime(Symbol(),PERIOD_M5,0);
   if(
current_bartime != timestamp)
      {
      
timestamp current_bartime;
      return (
true);
      } 
      else return (
false); 
      }