Anbei der Code
Code:
input int Grid_Abstand = 200;
input int MagicNumber = 1234;
// GRID_START_TICKET() ist die zu letzt eröffnete Pending-Order bzw. neueste Market-Order
double PREISLEVEL()
{
double PreisLevel = 0;
if(OrderSelect( GRID_START_TICKET() , SELECT_BY_TICKET , MODE_TRADES ) == false )
{
PreisLevel = NormalizeDouble( ( Ask + Bid ) / 2 , Digits );
};
if(OrderSelect( GRID_START_TICKET() , SELECT_BY_TICKET , MODE_TRADES ) == true )
{
PreisLevel = NormalizeDouble( OrderOpenPrice() , Digits );
};
return(PreisLevel);
};
// GRID-Bereiche (Ober-/Untergrenze) ermitteln
double GRID_UPPER_1_HIGH()
{
double Grid_Upper_1_High = PREISLEVEL() + ( 1 * Grid_Abstand * Point ) + ( Grid_Abstand / 2 ) * Point;
return( Grid_Upper_1_High );
};
double GRID_UPPER_1_LOW()
{
double Grid_Upper_1_Low = PREISLEVEL() + ( 1 * Grid_Abstand * Point )-( Grid_Abstand / 2 ) * Point;
return( Grid_Upper_1_Low );
};
double GRID_CURRENT_HIGH()
{
double Grid_Current_High = PREISLEVEL() + ( Grid_Abstand / 2 ) * Point;
return( Grid_Current_High );
};
double GRID_CURRENT_LOW()
{
double Grid_Current_Low = PREISLEVEL() - ( Grid_Abstand / 2 ) * Point;
return( Grid_Current_Low );
};
double GRID_LOWER_1_HIGH()
{
double Grid_Lower_1_High = PREISLEVEL() - ( 1 * Grid_Abstand * Point ) + ( Grid_Abstand / 2 ) * Point;
return( Grid_Lower_1_High );
};
double GRID_LOWER_1_LOW()
{
double Grid_Lower_1_Low = PREISLEVEL() - ( 1 * Grid_Abstand * Point ) - ( Grid_Abstand / 2 ) * Point;
return( Grid_Lower_1_Low );
};
// Beispiel der zusammenhängenden Prüfung
bool GRID_LOWER_1_BUYLIMIT()
{
bool Grid_Lower_1_Buylimit = false;
for(int i = OrdersTotal()-1; i >= 0; i--)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
if(OrderType() == OP_BUYLIMIT)
{
if(OrderOpenPrice() < GRID_LOWER_1_HIGH() && OrderOpenPrice() > GRID_LOWER_1_LOW())
{
Grid_Lower_1_Buylimit = true;
}
}
}
}
}
return (Grid_Lower_1_Buylimit);
};