Schaut mal was ich da jetzt gebaut habe...
läuft auf den DAX_1min
1) EA soll eine Stoporder platzieren und zwar pro neuer Minute/Candle eine neue, respektive im aktuellen Fall zb. auf das High[1]+6
2) wurde Stop nicht getriggert soll er nach 1min/Candle gestrichen werden
3) Insgesamt soll es so sein das bestehende Orders im Account zb. diskritionäre oder durch andere EAs nicht beachtet werden.
PHP-Code:
int OrderNumber;
int BarsSinceEntry;
bool IsNewCandle()
{
static int BarsOnChart=0; // static Var. wird nur ein mal gesetzt und ist nur in der Function sichtbar = Local Variable
if(Bars == BarsOnChart)
return(false);
BarsOnChart = Bars;
return(true);
}
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//Überprüfung ob neue Candle vorliegt
if(IsNewCandle()){
//check bzgl Order des EAs
bool orderset = false;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS))
{
if(OrderMagicNumber() == 202 )
orderset = true;
}
}
//simple Test Order die einfach platziert bei Neuer Candle platziert werden soll => und Streichung der vorherigen StopOrder
if(orderset=true)
{
if (0<1) //Bedingung Hauptsache es geht die Order raus
{
OrderNumber = OrderSend(Symbol(), OP_BUYSTOP,0.1,High[1]+6, 5,12500, 0,"Test",202,TimeCurrent()+660,Blue);
BarsSinceEntry=TimeCurrent();
}
}
//pending Orders streichen
if (BarsSinceEntry > 0 && TimeCurrent() > BarsSinceEntry + PeriodSeconds(PERIOD_CURRENT)) {
for (int i = OrdersTotal()-1; i >= 0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == 202) {
if (OrderType() == OP_BUYSTOP || OrderType() == OP_SELLSTOP) {
bool res = OrderDelete(OrderTicket());
if (res) BarsSinceEntry = 0;
break;
Print(GetLastError());
}
}
}
}
}
}
}
//+------------------------------------------------------------------+
Wenn ich es so mache platziert der EA "ca."? jede neue Minute eine neue StpOrder , streicht aber die vorherige nicht.
Wie gesagt, bin noch ganz am Anfang...was mache ich falsch!?